【发布时间】:2019-11-20 14:38:19
【问题描述】:
我一直在本地使用机器人模拟器在我的机器人中工作。一切似乎都很好。现在是与 Messenger 集成的时候了,我也在尝试在本地运行它。
通过 ngrok 从 Messenger 到我的本地机器人。
我基本上是在尝试关注这个链接here。
当我从我的信使发送消息时,似乎需要一段时间才能到达我的端点(和断点),但是当我收到以下错误时:
/api/messages - POST
index.ts:72
BotFrameworkAdapter.processActivity(): 400 ERROR - Error: BotFrameworkAdapter.parseRequest(): missing activity type.
UnhandledPromiseRejectionWarning: Error: Error: BotFrameworkAdapter.parseRequest(): missing activity type.
at BotFrameworkAdapter.processActivity (.../node_modules/botbuilder/src/botFrameworkAdapter.ts:608:19)
在我的 ngrok 控制台上,我可以在 facebook APP 日志错误中看到 400 请求,有时也可以看到 502。
这里是重点:
// using restify
server.post('/api/messages', (req, res) => {
console.log('/api/messages - POST');
adapter.processActivity(req, res, async turnContext => {
await bot.run(turnContext);
});
});
基本上该机器人根本不起作用,但我使用 botkit 适配器连接到 facebook messenger 进行了测试,除了 Prompt Choice、Carousel 和 HeroCards 等特殊消息外,它似乎在大多数情况下几乎都可以工作。基本上它只适用于简单的文本。
BotFrameworkAdapter 应该可以正常翻译。知道发生了什么吗? 不确定我是否遗漏了什么。
【问题讨论】:
-
三个问题:1)你用来启动ngrok的ngrok命令是什么? 2) 您是否已将 Azure 机器人设置中的消息传递端点替换为 ngrok 端点(例如8823f95d.ngrok.io/api/messages)? 3) 您是否将 Azure 机器人中的 appId 和 appPassword 包含在本地机器人和模拟器中?
-
嗨,很抱歉我的回复晚了。 1) ./ngrok http 3978 -host-header="localhost:3978" 2) 是(我使用 HTTPS)3) 是的,我有一个 app.bot 文件,其中有一个 appId 和 appPassword
-
旁注:我建议您从 .bot 文件中迁移出去,因为由于管理和集成存在困难,该文件已被弃用。可以在here 找到有关如何执行此操作的说明。这不太可能,但其中的某些东西可能被阻塞了。
-
您能否发布索引和 mainBot.js 文件的完整代码(隐藏任何键/密码)?
-
我想我找到了问题所在。它现在可以工作了,我唯一改变的是 facebook 应用回调链接。在更改为 azure 回调链接后,我使用 ngrok 链接作为回调之前,一切正常。有意义吗?
标签: node.js typescript botframework facebook-messenger-bot ngrok