什么可能阻止EC2托管的机器人回复Microsoft Bot框架上的消息?

时间:2017-03-12 03:01:45

标签: node.js amazon-web-services amazon-ec2 botframework

我在AWS EC2上托管了一个Node.JS僵尸程序,其中有一个有效的Comodo SSL证书可以在Chrome / Firefox / Safari中运行,我在我的终端的bot框架上配置了一个bot。

当我在https://dev.botframework.com启动机器人框架控制台时,我可以点击“测试”按钮并显示“已接受”。我还可以在嵌入式Web聊天中发送消息,AWS上的我的bot上的日志记录显示正在接收的消息,并且通过调用session.send()发送回来的消息......但是返回消息永远不会出现回到网络聊天。在服务器端或僵尸框架错误查看器中没有记录错误,消息似乎是默默地丢弃。我添加了Skype频道,并在Skype中获得完全相同的行为。

当我将相同的代码部署到Azure Web App时,它在两个方向都可以正常工作。

我完全陷入困境......我无法弄清楚什么可能阻止返回消息回来,我无法看到接下来要采取哪些步骤进行故障排除。从文档中不清楚消息是如何发送回框架的,是否有特定的主机/ IP /端口我应该从EC2中探测是否存在某些问题?我的AWS安全组中没有可以阻止连接的出站规则,例如“telnet directline.botframework.com 80”成功。

1 个答案:

答案 0 :(得分:0)

事实证明问题在于,在迁移到EC2时,我未能为机器人框架设置应用程序ID和密码(我将它们作为环境变量提供)。向" appId"提供未定义的值。和" appPassword" ChatConnector构造函数的映射参数是一个有效的输入:它在连接器中显示为没有设置任何值,并且连接器进入测试模式并与模拟器一起正常工作。

出于某种原因,机器人框架控制台(https://dev.botframework.com/bots)在机器人没有认证的情况下将消息发送回框架时,并没有报告错误,并且出于某种原因,"测试与机器人的连接"节目"接受"没有身份验证。我尝试使用无效的appId和appPassword,并报告" Forbidden"。如果在连接到没有appId和appPassword运行的机器人时也这样做了,那么它将对故障排除有很大帮助。