如何使用附件快速回复

时间:2016-07-08 13:15:47

标签: facebook-messenger messenger

official documentation快速回复中说:

  

快速回复适用于所有邮件类型,包括短信,图片和模板附件。

但是当我尝试用template_type: button发送它时,我收到了错误:

{
    "error": {
        "message": "(#100) Only one of text or attachment can be specified",
        "type": "OAuthException",
        "code": 100,
        "fbtrace_id": "H8w+ZfRbBub"
    }
}

我尝试发送:

{
    "recipient": {"id": "234567890"},
    "message": {
        "text": "TEXT_MESSAGE",
        "quick_replies": [
            {
                "content_type": "text",
                "title": "SOME_TITLE_1",
                "payload": "PAY_LOAD_1"
            },
            {
            "content_type": "text",
            "title": "SOME_TITLE_2",
            "payload": "PAY_LOAD_2"
            }
        ],
        "attachment": {
            "type": "template",
            "payload": {
                "template_type": "button",
                "text": "TEXT_MESSAGE",
                "buttons": [
                    {
                        "title": "READ_MORE_BUTTON",
                        "type": "postback",
                        "payload": "look:1:c"
                    }
                ]
            }
        }
    }
}

当我没有message.text发送时,我收到了错误:

{
    "error": {
        "message": "(#100) Cannot use both CTA and quick reply",
        "type": "OAuthException",
        "code": 100,
        "fbtrace_id": "C0DDxGzaUUj"
    }
}

什么是CTA?

如何使用附件发送快速回复?

4 个答案:

答案 0 :(得分:7)

此消息结构适用于发送带有快速回复的图像附件:

{
    "recipient": {
        "id": recipient_id
    },
    "message": {
        "attachment":{
            "type":"image",
            "payload":{
                "url": image_url
            }
        },
        "quick_replies": [
            {
                "content_type":"text",
                "title": "Next Image",
                "payload": "YOUR_DEFINED_PAYLOAD_FOR_NEXT_IMAGE"
            }
        ]
    }
}

希望有助dmitry

答案 1 :(得分:4)

试试这种方式。它将插入两个按钮和快速回复,但按钮将位于顶部,快速回复将位于底部

"message":{
    "quick_replies":[
        {"content_type":"text",
        "title":"title1",
        "payload":"SUPPLEMENT_1"},
        {"content_type":"text",
        "title":"title2",
        "payload":"PAYLOAD_1"
        }
    ],
 "attachment":{
  "type":"template",
  "payload":{
    "template_type":"button",
    "text":"your text",
    "buttons":[
      {
        "type":"postback",
        "title":"Confirm",
        "payload":"USER_DEFINED_PAYLOAD"
      }
    ]
  }
 }
}

答案 2 :(得分:2)

所以,我遇到了同样的问题,我做了一些搜索。

CTA代表什么?

首先,CTA代表号召性用语。这些是您创建的按钮,其中包含对按钮模板,通用模板或持久性菜单线程设置的请求。

看起来,虽然如你所说FB官方文档明确指出任何模板支持快速回复,但由于某些原因,这并不包括Button模板。

为什么?

对我而言,按钮模板应该用于向用户提供一个选项,与快速回复相同,这是合乎逻辑的,所以这将是多余的。

为什么没有记录?

我认为这可能是由于Messenger Platform API仍然处于测试阶段并且每天都有很多变化。就我个人而言,我正在开发一个用于做Facebook Messenger机器人的Java框架,而且我发现很多东西都没有很好地记录,而且你收到的错误消息往往会产生误导。所以,您应该接受按钮模板和快速回复不能一起工作的事实。快速回复适用于任何其他模板或文本消息。

答案 3 :(得分:0)

这在使用dialogflow时对我有用

{
  "facebook": {
    "attachment":{
      "type":"template",
      "payload":{
        "template_type":"generic",
        "elements":[
           {
            "title":"Welcome!",
            "image_url":"https://petersfancybrownhats.com/company_image.png",
            "subtitle":"We have the right hat for everyone.",
            "default_action": {
              "type": "web_url",
              "url": "https://petersfancybrownhats.com/view?item=103",
              "webview_height_ratio": "tall"
            },
            "buttons":[
              {
                "type":"web_url",
                "url":"https://petersfancybrownhats.com",
                "title":"View Website"
              },{
                "type":"postback",
                "title":"Start Chatting",
                "payload":"DEVELOPER_DEFINED_PAYLOAD"
              }              
            ]      
          }
        ]
      }
    },
     "quick_replies":[
      {
        "content_type":"text",
        "title":"Search",
        "payload":"<POSTBACK_PAYLOAD>",
        "image_url":"http://example.com/img/red.png"
      },
      {
        "content_type":"location"
      }
    ]
  }
}