我将此代码用于Facebook Messenger机器人(JavaScript)中的快速回复按钮:

    var message = {
    "attachment": {
        "type": "template",
            "payload": {
                "template_type": "generic",
                "elements": [{
                    "title": "Order a cucumber",
                    "subtitle": "A cucumber",
                    "image_url": "SOME_LINK_HERE",
                    "buttons": [
                        {"type": "postback",
                        "title": "Order",
                        "payload": "cucumber"},
                        {"type": "postback",
                        "title": "Order & Finish",
                        "payload": "cucumberf"}
                    ]
                },
                {
                    "title": "Order a tomato",
                    "subtitle": "A tomato",
                    "image_url": "SOME_LINK_HERE",
                    "buttons": [
                        {"type": "postback",
                        "title": "Order",
                        "payload": "tomato"},
                        {"type": "postback",
                        "title": "Order & Finish",
                        "payload": "tomatof"}
                    ]
                },
                {
                    "title": "Order a cake",
                    "subtitle": "A cake",
                    "image_url": "SOME_LINK_HERE",
                    "buttons": [
                        {"type": "postback",
                        "title": "Order",
                        "payload": "cake"},
                        {"type": "postback",
                        "title": "Order & Finish",
                        "payload": "cakef"}
                    ]
                }]
            }
    },
    "quick_replies": [
        {"content_type": "text",
        "title": "Main menu",
        "payload": "mainMenu"}
    ]};


当我尝试获取快速回复按钮(event.message.quick_reply)的有效载荷时,它表示未定义。但是对于其他字段,它会返回它应该的内容(例如“ seq”字段或“ text”字段)。
我在做什么错,如何使用快速回复按钮的有效载荷?

最佳答案

下面的代码向您展示如何获取用户发送/单击的所有内容:

// handle bot's anwser
$input = json_decode(file_get_contents('php://input'), true);
$senderId = $input['entry'][0]['messaging'][0]['sender']['id'];

// gets the text the user sent to you
$messageText = $input['entry'][0]['messaging'][0]['message']['text'];

// gets the payload of the button
$buttonPayLoad = $input['entry'][0]['messaging'][0]['postback']['payload'];

// gets the payload of the quick replay
$quickReplyPayLoad = $input['entry'][0]['messaging'][0]['message']['quick_reply']['payload'];

10-04 21:32