Jam*_*mes 30 facebook webhooks facebook-graph-api facebook-messenger
所以我正在尝试为新的Facebook Messenger API设置机器人.
我正在关注快速入门.
我设置webhook好了,在我的webhook中看到它,
我打电话给:
https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=%3Ctoken%3E
Run Code Online (Sandbox Code Playgroud)
它没有抛出任何错误,
但是当我进入我生成访问令牌的页面并发送消息时,它不会调用我的webhook.我检查了httpaccess,它没有调用它.
有没有办法调试这个或任何想法?
此外,我仍然困惑的一件事是如何支持从一个Facebook应用程序管理多个页面?任何人都知道答案,或者您是否需要创建一个新的应用程序并获得每个页面的权限?
Muk*_*lid 43
我最近使用了新的聊天机器人API,并且有很多可能出错的地方.所以,这里有一些想法.
{"success" : "true"}如果一切顺利,它会返回.重要
确保您发送消息的Facebook用户在您的应用程序角色中列为管理员或开发人员或测试人员(https://developers.facebook.com/apps/YOUR_APP_ID/roles/).除非您的应用获得批准并公开发布,否则来自其他用户的邮件将无效.
你有没有收到facebook api的回电?或者只是消息?查看您的Web服务器的日志,并检查您是否在webhook上获得任何点击.还要检查错误日志.
尝试手动点击您的webhook,看看它是否响应.您可以使用curl生成手动请求.这就是Facebook的请求:
命令:
curl -i -X POST -H 'Content-Type: application/json' -d '{"object":"page","entry":[{"id":43674671559,"time":1460620433256,"messaging":[{"sender":{"id":123456789},"recipient":{"id":987654321},"timestamp":1460620433123,"message":{"mid":"mid.1460620432888:f8e3412003d2d1cd93","seq":12604,"text":"Testing Chat Bot .."}}]}]}' https://www.YOUR_WEBHOOK_URL_HERE
Run Code Online (Sandbox Code Playgroud)
Jam*_*mes 11
所以我的问题是我在尝试订阅而不是POST时调用了GET
https://graph.facebook.com/v2.6/:pageid/subscribed_apps?access_token=:token
Run Code Online (Sandbox Code Playgroud)
GET将返回当前订阅(空{[]}),POST返回{"success":"true"}
我遇到的其他一些问题是,
我仍然困惑的一件事是如何支持从一个Facebook应用程序管理多个页面?任何人都知道答案,或者您是否需要创建一个新的应用程序并获得每个页面的权限?
另一个可以阻止将某些响应发送到您的webhook的事情是在队列中阻止消息类型时.
如果特定的消息类型已发送到您的webhook但在20秒内没有收到200响应,它将继续尝试再次向您发送该消息数小时.
更多的facebook messenger将停止向您发送该消息类型,直到第一个消息被确认为止.它基本上将它们放入队列中.
与此同时,其他消息类型将继续发送.
当我在代码中不小心引入了一个处理标准消息的未声明变量时,就发生了这种情况.这意味着回发邮件都运行良好,但快速回复和普通邮件永远不会发送到我的webhook.一旦你修正了错误,它们就会立刻堆积起来.
正如其他人所提到的,使用诸如POSTMAN之类的服务向你的webhook发送消息是找到这种错误的好方法,否则,messenger就会无声地失败.
如果您使用框架,从 CSRF 验证中排除您的机器人路由会有所帮助。这对我有帮助(Laravel 5.4,app/Http/Middleware/VerifyCsrfToken.php):
protected $except = [
'/your_bot_route'
];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24889 次 |
| 最近记录: |