首页 文章

如何使用Smooch回发?

提问于
浏览
1

我似乎无法找到有关如何实际使用postabck功能的任何文档 . 它是否在服务器上调用函数? ti对pasees值有什么影响?

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

2 回答

  • 4

    有效负载是您希望机器人返回的 . 我是'm not sure if my way of describing it is the best since I'这是新的 . 可以这样想 - 如果你有一个标有 %[Yes](postback:YES) 的按钮,那么当用户点击“是”的按钮时,就像他们输入的单词"yes."

  • -1

    有效载荷实际上是你想要的!

    回发按钮可用作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!

    我希望这可以帮到你!

相关问题