【问题标题】:Facebook Messenger "Get Started" button not sending the user defined payloadFacebook Messenger“开始”按钮未发送用户定义的有效负载
【发布时间】:2018-01-09 23:36:43
【问题描述】:

我在我的页面上设置了一个“开始”按钮:

curl -X POST -H "Content-Type: application/json" -d '{ 
  "get_started":{
    "payload":"GET_STARTED_PAYLOAD"
  }
}' "https://graph.facebook.com/v2.6/me/messenger_profile?access_token=token"

这工作正常,并以{"result":"success"}回应

如果我检查数据:

curl -X GET "https://graph.facebook.com/v2.6/me/messenger_profile?fields=get_started&access_token=token

我有一个很好的答案:{"data":[{"get_started":{"payload":"GET_STARTED_PAYLOAD"}}]}

但是当我收到回发 webhook 时,我得到了这个负载:

{
  "object": "page",
  "entry": [
    {
      "id": "id1",
      "time": 1501688073860,
      "standby": [
        {
          "recipient": {
            "id": "id1"
          },
          "timestamp": 1501688073860,
          "sender": {
            "id": "id2"
          },
          "postback": {
            "title": "Get Started"
          }
        }
      ]
    }
  ]
}

现在我可以获取我在 webhook 中定义的有效负载 (GET_STARTED_PAYLOAD)。

this page 上,医生说

使用按钮定义的有效负载参数。这仅对发送原始模板消息的应用可见。

这条消息有点令人困惑。有什么想法吗?

【问题讨论】:

  • 确保您没有使用错误的访问令牌来创建开始按钮。在我看来,您获取的最后一个 webhook 订阅了 FB 页面,该页面没有与用于创建按钮的访问令牌相同的访问令牌。
  • 您使用的是切换协议吗?导致这种情况的一种情况是,如果应用当前没有线程控制,这由在 standby 通道中接收的事件表示。
  • 是的,我在 facebook dev 上开了一张票,这就是结论。谢谢@amuramoto

标签: facebook facebook-messenger payload facebook-messenger-bot


【解决方案1】:

把这个答案放在这里以防有人需要。

standby 属性表示您正在使用切换协议,并且该应用没有线程控制。这会导致您无法收到预期的回发事件,因为接收应用与发送回发的应用不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2016-12-09
    • 1970-01-01
    • 2020-06-20
    • 2019-04-01
    • 1970-01-01
    相关资源
    最近更新 更多