2016-07-24 21 views
0

因此正如標題中提到的,我需要弄清楚如何處理用戶點擊/點擊Facebook Messenger中的按鈕的回傳。我知道這張卡片可以用機器人生成器卡來處理,但還有一些我想測試的其他元素。請看下面的代碼:如何處理來自Facebook sourceEvent botframework節點的回傳

bot.dialog('/', [ 
function (session) { 
    var msg = new builder.Message(session).sourceEvent({ 
      facebook: { 
        notification_type: "REGULAR", 
        attachment: { 
         type: "template", 
         payload: { 
          template_type: "generic", 
          elements: [{ 
           title: "Title here", 
           image_url: "http://docs.botframework.com/images/demo_bot_image.png", 
           subtitle: "Subtitle here", 
           buttons: [{ 
            type: "postback", 
            title: "GO", 
            payload: "dosomething" 
           }] 
          }] 
         } 
        } 
       } 
     }); 
    session.send(msg); 
}, 
function(session, results){ 
    session.send(JSON.stringify(results)); 
    session.send(JSON.stringify(session)); 
} 
]); 

所以基本上,一旦用戶點擊「GO」按鈕,我想行動另一個對話框中的節點,該卡的工作原理,但我只是不知道如何處理它。我認爲它可能適用於瀑布,但顯示的代碼沒有返回任何內容。

非常感謝,

回答

2

所以,我已經把我的頭走出陰霾,並回答了我自己的問題。線索在按鈕類型中:​​。

請參閱以下內容:

bot.dialog('/', [ 
    function (session) { 
     var msg = new builder.Message(session).sourceEvent({ 
       facebook: { 
         notification_type: "REGULAR", 
         attachment: { 
          type: "template", 
          payload: { 
           template_type: "generic", 
           elements: [{ 
            title: "Great title", 
            image_url: "http://docs.botframework.com/images/demo_bot_image.png", 
            subtitle: "Even better subtitle", 
            buttons: [{ 
             type: "postback", 
             title: "GO", 
             payload: "action?stacktest" 
            }] 
           }] 
          } 
         } 
        } 
      }); 
     session.send(msg); 
    } 
]); 

因此,所有我所做的就是回發的動作「stacktest」,並與以下處理它:

bot.beginDialogAction('stacktest', '/stacktest'); 
bot.dialog('/stacktest', function(session){ 
    session.send("Woot, stacktest worked a treat."); 
}); 

希望這可以幫助別人。

乾杯。