为什么BotConnector行为与模拟器不同?

时间:2016-04-01 12:54:51

标签: c# azure bots botframework botconnector

我正在玩最近发布的Microsoft Bot Framework。 我做了以下步骤:

  1. 使用IDialog(Echo Bot sample)创建了一个简单的bot,使用模拟器进行了测试,部署到Azure App Service并在dev.botframework.com上注册。一切都很好。

  2. 使用LuisDialog更新了使用Luis的机器人,并添加了[LuisModel]和[LuisIntent]属性(基于Alarm Bot sample)并将其部署到云端。

  3. 之后我有一个奇怪的行为:

    本地和云部署都使用模拟器按预期工作,而Luis部分运行良好。

    当从BotConnector测试连接触发相同的bot时,它不会绑定Luis,而是输入MessageReceivedAsync。

    我检查了机器人路径,应用程序ID和密钥,重新部署了AppService并重新注册了机器人,我仍然得到了同样的行为。

    我的ReceiveMessageAsync看起来如下:

    private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<Message> result)
    {
      var message = await result;
    
      await context.PostAsync("You have just said: " + message.Text);
      context.Wait(MessageReceivedAsync);
    }
    

    我不删除它的原因是因为测试连接在没有它的情况下停止工作。另一方面,模拟器效果很好。

    BotConnector和仿真器中的测试连接是否指向同一端点,并且始终返回相同的结果? 或者,我错过了什么?

2 个答案:

答案 0 :(得分:0)

是的,Bot Connector和模拟器发送相同的消息。

您的代码是否返回相同的值取决于您处理消息的方式,调用环境(通过HTTP从localhost调用而不是通过HTTPS远程调用)和托管环境(通常是IIS Express中的调试位与发布位在IIS中,用于C#应用程序)。

答案 1 :(得分:0)

不再适用。更新的1.1版本,BTW引入了重大变化,在同一个代码库中就像一个魅力。