【问题标题】:Facebook Messenger API Error: Payload cannot be empty for postback type buttonFacebook Messenger API 错误:回发类型按钮的有效负载不能为空
【发布时间】:2016-12-09 04:16:37
【问题描述】:

我成功设置了问候文本,现在我尝试通过此guide 为“开始”按钮设置有效负载:

我准确发送:

 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/me/thread_settings?access_token=PAGE_ACCESS_TOKEN" 

但收到错误:

{"error":{"message":"(#100) Payload cannot be empty for postback type button","type":"OAuthException","code":100,"fbtrace_id":"GWv5XughbUQ"}}

我做错了什么?

【问题讨论】:

  • 文档说 call_to_actions 必须是一个有效负载字符串数组,但 [{}] 是一个包含对象的数组。尝试只使用一个简单的数组。 (如果可行,您最好提交文档错误,以便他们修复示例。developers.facebook.com/bugs
  • "call_to_actions":[ "START" ] 导致同样的错误。
  • 在我看来,你做得对。我会生成一个新的页面访问令牌并确保这不是问题,但我怀疑这是问题所在。我猜这个问题中发布的内容与您实际运行的代码之间存在一些不匹配。
  • 我猜这是一个错误,因为有一个类似的one 并且它不适用于更新的访问令牌。
  • 我用我自己的聊天机器人尝试了你的确切 curl 请求,它有效。您可能偶然发现了某种错误,请将其报告给 facebook 以修复它。 Messenger 平台仍处于测试阶段,这样的事情是可以预料的。

标签: facebook facebook-messenger


【解决方案1】:

最后,我发现了我的错误。 CBroe 说我的请求结构有误。

我使用PHP并发送:

$requset = [
    'call_to_actions' =>  [
       'payload' =>  'START'
    ],
    'setting_type' => 'call_to_actions',
    'thread_state' => 'new_thread'
];

但正确的形式是:

$requset = [
        'call_to_actions' =>  [
           ['payload' =>  'START']
        ],
        'setting_type' => 'call_to_actions',
        'thread_state' => 'new_thread'
    ];

【讨论】:

    猜你喜欢
    • 2018-01-03
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    相关资源
    最近更新 更多