Microsoft Bot Framework

时间:2016-10-18 13:57:53

标签: c# generics botframework luis

我正在使用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);
    }
}

如果我使用旧版本的Bot Framework,如3.0.0,我会收到以下错误: 500内部服务器错误 {     &#34; message&#34;:&#34;发生错误。&#34; }

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

  

&#34;异常:System.Collections.Generic.KeyNotFoundException:给定   密钥没有出现在字典中。在   System.Collections.Generic.Dictionary2.get_Item(TKey key)at   Microsoft.Bot.Builder.Dialogs.LuisDialog&#34;

完整的堆栈跟踪在这里:

http://pastebin.com/uLJF5fcV

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

1 个答案:

答案 0 :(得分:4)

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

C

当LuisDialog无法根据收到的消息解析执行方法(意图)时,通常会发生错误。

当LuisDialog查找空意图时,我怀疑问题正在被提出here

[LuisIntent("")]