如何离线测试 Messenger Bots?本地网络挂钩

Posted

技术标签:

【中文标题】如何离线测试 Messenger Bots?本地网络挂钩【英文标题】:How to test Messenger Bots offline? Local webhooks 【发布时间】:2016-08-10 11:03:48 【问题描述】:

我从 Messenger 平台 API 开始。我想做简单的 Messenger 聊天机器人。 Here is tutorial I follow.

如您所见,首先我需要设置 webhook(第 2 步)。所以基本上:提供一些 REST API 并返回一些数据的 Web 服务器。问题是:facebook 要求我提供一些当前在互联网上有效的真实、现有的应用程序 URL。 那么,我是否需要在每次更改某些内容时将代码上传到服务器?我可以在本地(在我的本地主机上)以某种方式对其进行测试吗?我如何测试我的机器人的行为?

【问题讨论】:

Facebook 如何 ping 您离线的服务器? 有类似的问题,可以在这里找到答案:***.com/questions/36674079/… @WizKid facebook不需要自己连接。我正在考虑某种模拟器或假的本地实例,仅可用于测试。 【参考方案1】:

您可以使用一些服务向公众公开在 localhost 上运行的网络服务器。两个选项是localtunnel 和ngrok。

假设您的网络服务器在 http://localhost:8000/ 运行,您可以如何执行此操作的示例(来自 localtunnel 的快速入门)如下所示:

从 npm 安装 localtunnel:

npm install -g localtunnel

请求到本地服务器的隧道:

lt --port 8000

这将生成一个格式为https://foo.localtunnel.me 的链接,您可以使用该链接从网络访问您的本地主机。一个不错的功能是您会自动获取 https,因此 Facebook 不会给您“SSL 证书问题”错误。 Localtunnel 或 ngrok 也很适合与他人共享在本地运行的工作。

请注意,localtunnel url 仅在连接存在时才有效,因此如果连接结束,您必须更新 Facebook 的 url。

【讨论】:

我正在尝试使用 localtunnel,但在尝试打开给定的 url 后显示“主机名无效” 我需要在windows中配置一些东西吗?也许是防火墙? 好的,我已经解决了问题。一些 IIS Express 问题。感谢您的帮助;) @Ludwik11 没问题,很高兴为您提供帮助! 这是一篇与 IIS Express 问题相关的帖子:***.com/a/30601336/3648832【参考方案2】:

我创建了一个库来尝试解决这个确切的问题!使用fb-local-chat-bot,您可以轻松地离线测试您的机器人。该库还使测试变得更加简单。如果你有兴趣,一定要看看

https://github.com/spchuang/fb-local-chat-bot

演示:

【讨论】:

【参考方案3】:

您可以使用 ngrok 在 localhost 中测试 messenger bot。您可以在以下位置下载它: https://ngrok.com/download

在执行 ngrok 时,它将生成可用作 webhook 中的端点的安全链接。

还可以通过ngrok查看每个请求和响应的详细状态

http://localhost:4040/inspect/http

稍后,完成后,您可以将代码部署到安全服务器。

您可以在以下链接中找到有关如何构建基本聊天机器人的更多信息:

How to build a basic chat bot on facebook messenger

【讨论】:

【参考方案4】:

您可以免费在 heroku 上部署后端服务。它提供带有 RSA 的公共 DNS。

【讨论】:

他的主要关注点与托管无关,而是在对代码进行任何更改时上传代码。当您进行需要测试的小改动时,这会消耗大量时间。【参考方案5】:

如果由于某种原因(例如将 webhook 路由到多台开发机器)无法使用 ngrok。请尝试我为在本地开发/调试 webhook 而创建的这个模拟器。这提供了 send api 和 messenger ui 的模拟

我已经为 send api 和 messenger 创建了一个模拟器,用于在本地调试 web 挂钩

https://github.com/SonOfSardaar/facebook-send-api-emulator

我也遇到过这个(这个我还没试过,但看起来不错)

https://docs.microsoft.com/en-us/bot-framework/debug-bots-emulator

【讨论】:

以上是关于如何离线测试 Messenger Bots?本地网络挂钩的主要内容,如果未能解决你的问题,请参考以下文章

如何使用多个用户测试 FB Messenger bot

Xcode Server Bots 未运行测试

Apple 的 CI Bots 的 KIF iOS 测试失败

如何使用 Behat 测试在多总线场景中调度 Symfony Messenger 事件?

BotFrameworkAdapter 缺少活动类型 - 在本地调试 Messenger

如何对依赖 JSON 的应用进行离线测试?