Facebook Messenger 平台/机器人欢迎配置的奇怪错误
Posted
技术标签:
【中文标题】Facebook Messenger 平台/机器人欢迎配置的奇怪错误【英文标题】:Weird error with Facebook Messenger Platform/bot Welcome Confugration 【发布时间】:2016-11-01 11:59:00 【问题描述】:我在为我的 Messenger 机器人配置欢迎消息时遇到一个奇怪的错误。我一直在使用相同的代码(如下所示),直到昨晚它一直运行良好。我用 cURL 和Postman 都试过了。它们都不起作用。
curl -X POST -H "Content-Type: application/json" -d '
"setting_type":"call_to_actions",
"thread_state":"new_thread",
"call_to_actions":[
"message":
"text":"Welcome to My Company!"
]
' "https://graph.facebook.com/v2.6/<PAGE_ID>/thread_settings?access_token=<PAGE_ACCESS_TOKEN>"
执行上述代码时的错误信息:
"error":"message":"(#100) Invalid keys \"message\" were found in param \"call_to_actions[0]\".","type":"OAuthException","code":100,"fbtrace_id":"Hn42Wa+hapI"%
我可以确认 PAGE_ID 和 PAGE_ACCESS_TOKEN 都是正确的,因为尝试使用以下代码删除欢迎消息可以正常工作。
curl -X POST -H "Content-Type: application/json" -d '
"setting_type":"call_to_actions",
"thread_state":"new_thread",
"call_to_actions":[
"message":
"text":"Welcome to My Company!"
]
' "https://graph.facebook.com/v2.6/<PAGE_ID>/thread_settings?access_token=<PAGE_ACCESS_TOKEN>"
另外,我使用的代码与Facebook official API doc 上显示的代码完全相同。我不明白为什么它说“消息”不是有效的密钥。有没有人遇到同样的问题? Facebook 是否更改了他们的 API?
任何帮助将不胜感激!
【问题讨论】:
试图解决这个问题已经好几个小时了。很高兴看到人们遇到同样的问题,我们可以确认这个错误不是由我们造成的。也许是未记录的 API 更改? @ericls 我认为这是一个未记录的 API 更改。希望尽快给予进一步通知。 已在此处报告错误:developers.facebook.com/bugs/1751749508372552 【参考方案1】:我遇到同样的问题并修复它。 我认为您的请求 json 是
let messageData =
"setting_type":"call_to_actions",
"thread_state":"new_thread",
"call_to_actions":[
"payload":"welcome_payload"
]
request(
url: 'https://graph.facebook.com/v2.6/me/thread_settings',
qs: access_token:token,
method: 'POST',
json:
messageData
但它不起作用,日志会说你没有“setting_type”= =a 试试这个
request(
url: 'https://graph.facebook.com/v2.6/me/thread_settings',
qs: access_token:token,
method: 'POST',
json:
setting_type:"call_to_actions",
thread_state:"new_thread",
call_to_actions:[
"payload":"welcome_payload"
]
它对我有用。
【讨论】:
【参考方案2】:文档更新:
https://developers.facebook.com/docs/messenger-platform/thread-settings/greeting-text
例子:
curl -X POST -H "Content-Type: application/json" -d '
"setting_type":"greeting",
"greeting":
"text":"Welcome to My Company!"
' "https://graph.facebook.com/v2.6/me/thread_settings?access_token=PAGE_ACCESS_TOKEN"
【讨论】:
【参考方案3】:此错误是由于 API 更改造成的。
新来电:
curl -X POST -H "Content-Type: application/json" -d '
"setting_type":"call_to_actions",
"thread_state":"new_thread",
"call_to_actions":[
"payload":"START"
]
' "https://graph.facebook.com/v2.6/<PAGE_ID>/thread_settings?access_token=<PAGE_TOKEN>"
只需添加一个像"payload":"START"
这样的有效负载
如果用户按下“开始”按钮,您会在 messageHandler (webhook) 中收到此有效负载。检查$incomingMessage == "START"
是否发送回您的结构化消息,或任何您想要的。
不再支持以前的消息。
错误报告:https://developers.facebook.com/bugs/1751749508372552/
【讨论】:
【参考方案4】:docs 现已更新,您现在需要在payload
参数中定义您的有效负载(UTF-8 编码字符串),例如:
"call_to_actions":[
"payload":"USER_DEFINED_PAYLOAD"
]
【讨论】:
更新后的文档也不起作用。我收到以下错误:"error":"message":"(#3) App must be on whitelist","type":"OAuthException","code":3,"fbtrace_id":"FiDgnEghdY\/"
对我来说也是如此——“thread_settings”端点在 2 天前运行良好。现在使用“有效负载”后,我收到了白名单错误。
te@leihe,你确定你的应用没有进入沙盒(测试)模式?以上是关于Facebook Messenger 平台/机器人欢迎配置的奇怪错误的主要内容,如果未能解决你的问题,请参考以下文章
来自 Facebook Messenger 机器人对话的 API 身份验证