2016-05-13 64 views
1

我似乎無法找到有關如何實際使用postabck功能的任何文檔。它是否在服務器上調用函數? ti與pasees的價值是什麼?如何使用Smooch回發?

%[Button label here](postback:PAYLOAD_HERE) // What is the payload? 

回答

4

有效載荷實際上是你想要的!

回傳按鈕可以用作您的webhook的觸發器。當用戶點擊您的回發按鈕,有效載荷將被髮送到你的網絡掛接數據如下:

{ 
    "trigger": "postback", 
    "postbacks":[{ 
     ... 
     "action": { 
      "_id": "571530ee4fae94c32b78b170", 
      "type": "postback", 
      "text": "Read more", 
      "payload": "YOUR_PAYLOAD_HERE" // <---- your payload! 
     } 
    }], 
    ... 
} 

有關完整的有效載荷看到這個參考:http://docs.smooch.io/rest/#webhooks-payload

在你身邊,你可以有自動發送的郵件,活動安排或任何你想要的。

一個簡單的有效負載可能是TELL_ME_JOKE,並且在您的後端,您可以獲取數據庫中的笑話,然後通過Smooch API發送消息來回復。

另一有效載荷可以是RESERVE_MONDAY。當用戶點擊該按鈕時,您的webhook會收到RESERVE_MONDAY。然後你可以使用該值來知道下一步該做什麼(調用你的應用程序來保留該時隙)。

這裏有一個簡單的Node.js實現:

const express = require('express'); 
const SmoochCore = require('smooch-core'); 
const smoochApi = new SmoochCore({ 
    keyId: 'some-key', 
    secret: 'some-secret', 
    scope: 'app' 
}); 

express.Router().post('/smooch/webhooks', (req, res) => { 
    const smoochPayload = req.body.postbacks[0].action.payload; 
    const userId = req.body.appUser._id; 

    if (smoochPayload === 'TELL_ME_JOKE') { 
     smoochApi.conversations.sendMessage(userId, { 
      text: 'A cow walks into a bar...', 
      role: 'appMaker' 
     }); 
    } else if (smoochPayload === 'RESERVE_MONDAY') { 
     CalendarController.reserve(userId, 'monday'); 
    } 

    res.end(); 
}); 

使用的有效載荷也可以讓你用不同的按鈕標籤,但保持相同的有效載荷(即不同的翻譯)。

注意:如果你想的話,它可能是任何東西,甚至是JSON!

我希望這能幫助你!

-1

負荷是你希望你的機器人返回什麼。我不確定我的描述是否是最好的,因爲我是新手。想想這樣 - 如果你有一個標有%[Yes](postback:YES)的按鈕,那麼當用戶點擊yes按鈕時,就好像他們鍵入單詞「yes」。

+0

這是如何在https://github.com/esthercrawford/EstherBot中實現webhook,但它不是Smooch webhook在一般情況下的工作方式 –