1

我似乎找不到任何关于如何实际使用 postabck 功能的文档。它是否调用服务器上的函数?ti 对 pasees 值有什么作用?

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

2 回答 2

4

有效载荷实际上是您想要的任何东西!

回发按钮可用作 Webhook 的触发器。当用户点击您的回发按钮时,将向您的 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!

我希望这可以帮助你!

于 2016-05-13T20:44:30.527 回答
-1

有效负载是您希望机器人返回的内容。我不确定我的描述方式是否是最好的,因为我是新手。可以这样想——如果你有一个标记为 的按钮%[Yes](postback:YES),那么当用户单击表示是的按钮时,就像他们输入了“是”这个词一样。

于 2016-05-13T20:05:15.710 回答