如何离线测试 Messenger Bot?本地网络钩子

How to test Messenger Bots offline? Local webhooks

我开始使用 Messenger 平台 API。我想制作简单的 Messenger Chatbot。 Here is tutorial I follow.

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

您可以使用一些服务将本地主机上的网络服务器 运行 公开给 public。两个选项是localtunnel and ngrok

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

从 npm 安装 localtunnel:

npm install -g localtunnel

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

lt --port 8000

这将生成一个 link,格式为 https://foo.localtunnel.me,您可以使用它从 Web 访问您的本地主机。一个不错的功能是您会自动获得 https,因此 Facebook 不会给您 'SSL certificate problem' 错误。 Localtunnel 或 ngrok 也很适合在本地与其他人共享工作 运行。

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

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

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

演示:

您可以使用 ngrok 在本地主机上测试 Messenger bot。您可以在以下位置下载它: https://ngrok.com/download

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

你也可以通过

查看ngrok每次请求和响应的详细状态

http://localhost:4040/inspect/http

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

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

How to build a basic chat bot on facebook messenger

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

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

的仿真

我已经为发送 api 和 Messenger 创建了一个模拟器,我用它来在本地调试网络挂钩

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

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

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