【问题标题】:Weird error with Facebook Messenger Platform/bot Welcome ConfugrationFacebook Messenger 平台/机器人欢迎配置的奇怪错误
【发布时间】: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 更改。希望尽快给予进一步通知。

标签: facebook bots messenger facebook-messenger


【解决方案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,你确定你的应用没有进入沙盒(测试)模式?
        猜你喜欢
        • 1970-01-01
        • 2016-08-05
        • 1970-01-01
        • 2016-09-22
        • 1970-01-01
        • 2021-06-01
        • 2016-08-08
        • 2017-01-28
        • 1970-01-01
        相关资源
        最近更新 更多