Microsoft Bot框架中的System.Collections.Generic.KeyNotFoundExcep

本文关键字:Collections Generic KeyNotFoundExcep System Bot 框架 Microsoft | 更新日期: 2023-09-27 18:13:38

我正在使用Microsoft Bot框架创建一个使用LuisDialog的真正简单的Bot。然而,我一直得到一个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);
    }
}

如果我使用旧版本的Bot框架,如3.0.0,我得到以下错误:500年InternalServerError{"message": "发生错误。"}

但是,如果我更新到最新的稳定版本(3.2.1),那么我得到以下类型的错误"System.Collections.Generic.KeyNotFoundException":

"Exception: System.Collections.Generic.KeyNotFoundException: The given字典里没有钥匙。在System.Collections.Generic.Dictionary2。get_Item(TKey key) atMicrosoft.Bot.Builder.Dialogs.LuisDialog "

完整的堆栈跟踪在这里:

http://pastebin.com/uLJF5fcV

我尝试在另一个解决方案上创建一个新项目,但我得到同样的错误。我试着通过nuget安装不同版本的Bot框架,但就像我之前说的,不管怎样,我仍然会得到一个错误。到目前为止,我对Bot框架几乎没有什么经验,所以我真的不知道还可以尝试什么。

Microsoft Bot框架中的System.Collections.Generic.KeyNotFoundExcep

您可以再尝试在None方法之上添加以下内容吗?

[LuisIntent("")]

您看到的错误通常发生在LuisDialog无法根据收到的消息解析要执行的方法(意图)时。

我怀疑这个问题是在这里提出的,当LuisDialog寻找空意图时。

handler = this.handlerByIntent[string.Empty];
相关文章: