在为Messenger bot配置欢迎消息时,我遇到了一个奇怪的错误。我一直在使用相同的代码(如下所示),它一直工作到昨晚。我用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吗?
任何帮助将不胜感激!
答案 0 :(得分:7)
docs现已更新,您需要立即在payload
参数中定义您的有效负载(UTF-8编码的字符串),例如:
"call_to_actions":[
{
"payload":"USER_DEFINED_PAYLOAD"
}
]
答案 1 :(得分:1)
文档已更新:
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"
答案 2 :(得分: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
}
}
但它不起作用,日志会说你没有&#34; setting_type&#34; = = 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"
}
]
}
}
它适合我。
答案 3 :(得分:-1)
此错误是由于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"
并发回结构化消息或任何您想要的消息。
不再支持以前的消息了。