1

Microsoft Bot Framework を使用して、LuisDialog を使用して非常に単純なボットを作成しています。ただし、System.Collections.Generic.KeyNotFoundException が引き続き発生します。

これが私のコントローラーです:

public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
    if (activity.Type == ActivityTypes.Message)
    {
        await Conversation.SendAsync(activity, () => new QuotesDialog());
    }
    else
    {
        HandleSystemMessage(activity);
    }
    var response = Request.CreateResponse(HttpStatusCode.OK);
    return response;
}

これが私のダイアログです:

[Serializable]
[LuisModel("MyModelIdGoesHere", "MySubscriptionKeyGoesHere")]
public class QuotesDialog : LuisDialog<object>
{
    [LuisIntent("CheckQuote")]
    public async Task CheckQuote(IDialogContext context, LuisResult result)
    {
        await context.PostAsync("Hello you!");
        context.Wait(MessageReceived);
    }

    [LuisIntent("None")]
    public async Task None(IDialogContext context, LuisResult result)
    {
        await context.PostAsync("I'm sorry. I didn't get that.");
        context.Wait(MessageReceived);
    }
}

3.0.0 などの古いバージョンの Bot Framework を使用すると、次のエラーが発生します: 500 InternalServerError { "メッセージ": "エラーが発生しました。" }

ただし、最新の安定バージョン (3.2.1) に更新すると、「System.Collections.Generic.KeyNotFoundException」タイプの次のエラーが発生します。

「例外: System.Collections.Generic.KeyNotFoundException: 指定されたキーがディクショナリに存在しませんでした。Microsoft.Bot.Builder.Dialogs.LuisDialog の System.Collections.Generic.Dictionary2.get_Item(TKey キー) で」

完全なスタック トレースは次のとおりです。

http://pastebin.com/uLJF5fcV

別のソリューションで新しいプロジェクトを作成しようとしましたが、同じエラーが発生します。nuget を使用してさまざまなバージョンの Bot Framework をインストールしようとしましたが、前述のように、何らかの方法でエラーが発生します。これまでのところ、Bot Framework の経験がほとんどないため、他に何を試せばよいかわかりません。

4

1 に答える 1

4

None メソッドの上に次を追加してみてください。

[LuisIntent("")]

表示されているエラーは通常、LuisDialog が受信したメッセージに基づいて実行するメソッド (インテント) を解決できない場合に発生します。

LuisDialog が空のインテントを探すときに、ここで問題が発生していると思われます。

handler = this.handlerByIntent[string.Empty];
于 2016-10-18T15:21:22.627 に答える