2017-06-29 111 views
0

我正在看一些像“卫报”一些非常流行的机器人,我注意到,每当你从它得到一个通用的模板回复它也会显示一些快速回复按钮(见附图)。 “卫报机器人”是如何实现这一目标的?他如何将快速回复和通用模板结合起来?它必须涉及两条消息。Facebook信使平台:通用模板与快速回复

enter image description here

+0

该博客发布第一个附件,然后是菜单。那么? –

+0

它的工作原理是什么?它首先发送通用模板,然后快速回复?但在快速回复中,您必须指定标题和标题不能为空。 –

+0

那么?他们已经指定了标题:) –

回答

1

我已经实现在对的NodeJS机器人,我使用所谓messenger-bot节点模块,可以更容易地调用信使机器人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. 

    } 
}); 

引用 - Generic templateQuick repliesmessenger-bot npm

希望这有助于!快速编码;)

0

快速回复通常伴随着一个'文本'属性,在快速回复之前发送文本消息。看起来你可以用任何模板替代它。例如,以下是具有快速回复的通用模板轮播的请求正文:

{ 
    "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>" 
       } 
      ]  
      } 
     ] 
     } 
    } 
    } 
}