Facebook Messenger平台/ bot欢迎Confugration的奇怪错误

时间:2016-06-29 16:29:47

标签: facebook bots messenger facebook-messenger

在为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吗?

任何帮助将不胜感激!

4 个答案:

答案 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"并发回结构化消息或任何您想要的消息。

不再支持以前的消息了。

错误报告:https://developers.facebook.com/bugs/1751749508372552/