2016-04-25 27 views
7

Facebook Send API提到了您可以爲通用響應模板上的按鈕設置的「有效載荷」類型。然而,他們不說它是如何工作,比其他:Facebook上的「有效載荷」選項機器人按鈕

對於回發的按鈕,這個數據將通過網絡掛接

發回給你,但它是如何打發回去吧?當我點擊有效載荷按鈕時,我沒有收到任何消息。有沒有人成功使用它?

+2

沒有你訂閱messaging_postbacks選項,同時傳令機器人架設網頁掛機..? https://developers.facebook.com/docs/messenger-platform/webhook-reference – piyushmandovra

回答

5

我測試了它,它適用於我。按鈕的有效負載就像html按鈕上的值一樣。這意味着它對用戶不可見,但它是發回給您的價值。

如果你創建了一個按鈕:

'attachment': { 
    'type': 'template', 
    'payload': { 
     'template_type': 'button', 
     'text': 'This is the description', 
     'buttons': [ 
      { 
       'type': 'postback', 
       'title': 'This is the visible text', 
       'payload': 'This is the value you get back' 
      } 
     ] 
} 

包括有效載荷的回調看起來像這樣:

{'timestamp': 1461697120850, 'postback': {'payload': 'this is the value you get back'}, 'recipient': {'id': xxxxxxxx}, 'sender': {'id': xxxxxxxx}} 
+0

如何捕捉它的價值在PHP? – runningmark

+1

@runningmark if(isset($ input ['entry'] [0] ['messaging'] [0] ['message'] ['quick_reply'])){ \t $ payload_txt = $ input ['entry' ] [0] ['messaging'] [0] ['message'] ['quick_reply'] ['payload'];' – Abhishek

+0

你測試了這些行嗎?我試了一下它不工作 –

3

當您單擊該按鈕POST消息被髮送到你的/webhook

你必須處理的有效載荷是這樣的:

app.post('/webhook/', function (req, res) { 
    messaging_events = req.body.entry[0].messaging; 
    for (i = 0; i < messaging_events.length; i++) { 
    event = req.body.entry[0].messaging[i]; 
    sender = event.sender.id; 
    if (event.message && event.message.text) { 
     text = event.message.text; 
     // Handle a text message from this sender 
    } else if (event.postback && event.postback.payload) { 
     payload = event.postback.payload; 
     // Handle a payload from this sender 
    } 
    } 
    res.sendStatus(200); 
}); 

此代碼段是從入門指南從Facebook除了else if在那裏你可以在有效載荷反應。

+0

嗨,我們如何用php實現,無法找到完美的方式來獲得有效載荷的價值 – runningmark

0

這是怎麼回讀有效載荷:

$payload = $input['entry'][0]['messaging'][0]['postback']['payload'];