如何离线测试Messenger Bots?本地webhooks

时间:2016-04-18 15:40:02

标签: facebook facebook-graph-api facebook-apps chatbot facebook-messenger

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

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

5 个答案:

答案 0 :(得分:28)

您可以使用一些服务将在localhost上运行的网络服务器公开给公众。 localtunnelngrok有两个选项。

如果您的网络服务器在http://localhost:8000/运行,那么您可以如何执行此操作的示例(来自localtunnel的快速启动)将如下所示:

从npm安装localtunnel:

npm install -g localtunnel

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

lt --port 8000

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

请注意,只要连接存在,localtunnel网址才有效,因此如果连接结束,您必须更新Facebook所拥有的网址。

答案 1 :(得分:16)

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

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

演示:

答案 2 :(得分: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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

如果由于某种原因你不能使用ngrok(比如将webhook路由到多个dev机器)。请尝试我为本地开发/调试webhooks创建的模拟器。这提供了发送api和信使ui的模拟

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

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

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

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