我正在玩最近发布的Microsoft Bot Framework。 我做了以下步骤:
使用IDialog(Echo Bot sample)创建了一个简单的bot,使用模拟器进行了测试,部署到Azure App Service并在dev.botframework.com上注册。一切都很好。
使用LuisDialog更新了使用Luis的机器人,并添加了[LuisModel]和[LuisIntent]属性(基于Alarm Bot sample)并将其部署到云端。
之后我有一个奇怪的行为:
本地和云部署都使用模拟器按预期工作,而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和仿真器中的测试连接是否指向同一端点,并且始终返回相同的结果? 或者,我错过了什么?
答案 0 :(得分:0)
是的,Bot Connector和模拟器发送相同的消息。
您的代码是否返回相同的值取决于您处理消息的方式,调用环境(通过HTTP从localhost调用而不是通过HTTPS远程调用)和托管环境(通常是IIS Express中的调试位与发布位在IIS中,用于C#应用程序)。
答案 1 :(得分:0)
不再适用。更新的1.1版本,BTW引入了重大变化,在同一个代码库中就像一个魅力。