2

我在看一些非常流行的机器人,比如“卫报”,我注意到每当你从它那里得到一个通用的模板回复时,它也会显示一些快速回复按钮(见附图)。“守护者机器人”是如何做到这一点的?他如何结合快速回复和通用模板?它必须涉及两个消息。

在此处输入图像描述

4

4 回答 4

3

这在 Dialogflow 中对我有用,在后端返回类似的 Json 对象以实现结果:

 {
  "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"
      }
    ]
  }
}
于 2019-05-27T05:12:01.880 回答
2

快速回复通常附带一个“文本”属性,该属性在快速回复之前发送一条文本消息。看来您可以用任何模板代替它。例如,下面是带有快速回复的通用模板轮播的请求正文:

{
  "recipient":{
    "id":"{{PSID}}"
  },
  "messaging_type": "response",
  "message":{
        "quick_replies": [
      {
        "content_type":"text",
        "title":"Quick Reply 1",
        "image_url":"https://raw.githubusercontent.com/fbsamples/messenger-platform-samples/master/images/Messenger_Icon.png",
        "payload":"payload1"
      },
      {
        "content_type":"text",
        "title":"Quick Reply 2",
        "payload":"payload2"
      }
    ],

    "attachment":{
      "type":"template",
      "payload":{
        "template_type":"generic",
        "elements":[
          {
            "title":"This is a generic template",
            "subtitle":"Plus a subtitle!",
            "image_url":"https://raw.githubusercontent.com/fbsamples/messenger-platform-samples/master/images/Messenger_Icon.png",
            "buttons":[
              {
                "type":"postback",
                "title":"Postback Button",
                "payload":"<POSTBACK_PAYLOAD>"
              }
            ]      
          }, 
          {
            "title":"Another generic template",
            "subtitle":"Plus a subtitle!",
            "image_url":"https://raw.githubusercontent.com/fbsamples/messenger-platform-samples/master/images/Messenger_Icon.png",
            "buttons":[
              {
                "type":"postback",
                "title":"Postback Button",
                "payload":"<POSTBACK_PAYLOAD>"
              }
            ]      
          },
          {
            "title":"And another!",
            "subtitle":"Plus a subtitle!",
            "image_url":"https://raw.githubusercontent.com/fbsamples/messenger-platform-samples/master/images/Messenger_Icon.png",
            "buttons":[
              {
                "type":"postback",
                "title":"Postback Button",
                "payload":"<POSTBACK_PAYLOAD>"
              }
            ]      
          }
        ]
      }
    }
  }
}
于 2018-03-07T17:20:35.183 回答
1

我已经在 nodejs 中实现了机器人,并且我使用了一个名为的节点模块messenger-bot,这使得调用 messenger 机器人 API 变得更加容易。这是我为您定制的代码

const http = require('http')
const https = require('https')
const Bot = require('messenger-bot')
var bot = new Bot({
    token: 'your FB app token',
    verify: 'VERIFY_TOKEN'
})

bot.on('postback', (payload, reply) => {
    var postback = payload.postback.payload;
    if (postback == "yes") {

        function getQuickReplies() {
            console.log("in next function");
            var quick_list = {
                "text": "Check the next article?",
                "quick_replies": [{
                        "content_type": "text",
                        "title": "More stories",
                        "payload": "more stories"
                    },
                    {
                        "content_type": "text",
                        "title": "Sport",
                        "payload": "sport"
                    },
                    {
                        "content_type": "text",
                        "title": "Business",
                        "payload": "business"
                    }

                ]
            };
            bot.getProfile(payload.sender.id, (err, profile) => {
                if (err) throw err
                text = quick_list;
                bot.sendMessage(payload.sender.id, text) {//this prints quick replies
                    console.log("sending message");
                }
            });
        }

        //calling generic template

        var generic_temp = "message": {
            "attachment": {
                -- - your code-- -
            }
        }; //generic template refer - https://developers.facebook.com/docs/messenger-platform/send-api-reference/generic-template

        bot.getProfile(payload.sender.id, (err, profile) => {
            if (err) throw err
            bot.sendMessage(payload.sender.id, generic_temp) {//this prints generic template
                console.log("sending message");
            }
        });

        //calling the quick replies once the generic template is sent

        getQuickReplies(); //to avoid async execution issue, we will have to put this in a function.

    }
});

参考 -通用模板快速回复messenger-bot npm

希望这可以帮助!快乐编码;)

于 2017-07-21T12:23:03.970 回答
0

新更新

{
  "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":"Red",
        "payload":"<POSTBACK_PAYLOAD>",
        "image_url":"http://example.com/img/red.png"
      },{
        "content_type":"text",
        "title":"Green",
        "payload":"<POSTBACK_PAYLOAD>",
        "image_url":"http://example.com/img/green.png"
      }
    ]
  }
}
于 2020-03-24T11:43:46.267 回答