1

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

  1. 使用 IDialog(Echo Bot 示例)创建了一个简单的机器人,使用模拟器进行了测试,部署到 Azure 应用服务并在 dev.botframework.com 上注册了它。一切正常。

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

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

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

当从 BotConnector 测试连接触发同一个机器人时,它不会绑定 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 中的测试连接和指向同一端点的仿真器是否总是返回相同的结果?或者,我错过了什么?

4

2 回答 2

0

是的,机器人连接器和模拟器发送相同的消息。

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

于 2016-04-06T14:54:56.460 回答
0

不再适用。顺便说一句,较新的 1.1 版本引入了重大更改,在同一个代码库上就像一个魅力。

于 2016-04-18T12:56:10.867 回答