如何在离线情况下测试Messenger机器人?本地Webhooks

12
我正开始使用Messenger平台API,想制作一个简单的Messenger聊天机器人。 这里是我要遵循的教程。 如您所见,为了开始操作,我需要设置Webhook(第二步)。因此,基本上是:提供一些REST API并返回数据的Web服务器。问题是:Facebook要求我提供一些真实的、存在的应用程序URL,该URL当前在互联网上能够运行。那么,我需要每次更改代码时都将其上传到服务器吗?我可以在本地(即我的localhost)进行测试吗?我该如何测试我的机器人的行为?

Facebook如何能够ping您的离线服务器? - WizKid
有类似的问题,你可以在这里找到答案:https://dev59.com/mVoV5IYBdhLWcg3wIbtT - fritak
@WizKid,Facebook本身并不需要连接它。我在考虑一种仿真器或虚假的、本地化的实例,仅供测试使用。 - Piotrek
5个回答

29

有几种服务可以用来将运行在本地主机上的web服务器公开到互联网上。其中两个选项是localtunnelngrok

以下是一个示例(来自localtunnel的快速入门),假设您的web服务器运行在http://localhost:8000/,您可以这样做:

从npm安装localtunnel:

npm install -g localtunnel

请求连接到您的本地服务器:

lt --port 8000

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

请注意,localtunnel网址仅在连接存在期间有效,因此如果连接结束,您将需要更新Facebook的网址。


我正在尝试使用localtunnel,但在尝试打开给定的URL后它显示“无效的主机名”。 - Piotrek
我需要在Windows中配置一些东西吗?也许是防火墙? - Piotrek
好的,我已经解决了问题。是一些IIS Express的问题。感谢你的帮助 ;) - Piotrek
@Ludwik11 没问题,很高兴能帮助你! - mguida
1
这是一个与IIS Express问题相关的帖子:https://dev59.com/y10a5IYBdhLWcg3wRGvp#30601336 - parismiguel

16
我创建了一个库,旨在解决这个确切的问题!使用 fb-local-chat-bot,您可以轻松地离线测试您的机器人。该库还使测试变得更加简单。如果您感兴趣,请务必查看它。

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

演示:


3
您可以使用ngrok在本地测试messenger bot。您可以在以下网址下载该工具:https://ngrok.com/download
执行ngrok后,它将生成一个安全链接,可用作webhook的终点。
您还可以通过以下网址查看ngrok的每个请求和响应的详细状态: http://localhost:4040/inspect/http 完成后,您可以将代码部署到安全服务器上。
您可以在以下链接中找到有关如何构建基本聊天机器人的更多信息: 如何在Facebook Messenger上构建基本聊天机器人?

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

7
他的主要关注点不是托管,而是每当他对代码进行任何更改时上传代码。这在进行需要测试的小更改时会耗费大量时间。 - Aditya Chawla

0
如果由于一些原因无法使用ngrok(例如将Webhook路由到多个开发机器),请尝试我创建的模拟器来本地开发/调试Webhook。该模拟器提供了send api和messenger ui的仿真功能。
我为send api和messenger创建了一个模拟器,用于本地调试Webhook。

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接