Как ответить на выбранную кнопку в Facebook Messenger

Я пытаюсь запрограммировать своего бота в Facebook Messenger, чтобы он отвечал текстом после того, как пользователь нажимает кнопку. Я читал, что это возможно, обрабатывая полезную нагрузку кнопки типа обратной передачи, но я не могу заставить ее работать

app.post('/webhook/', function (req, res) {
 let messaging_events = req.body.entry[0].messaging
 for (let i = 0; i < messaging_events.length; i++) {
    let event = req.body.entry[0].messaging[i]
    let sender = event.sender.id
    if (event.message && event.message.text) {
        let text = event.message.text
        if (text === 'poorita') {
            sendPooritaMessage(sender)
            sendTextMessage(sender, "Here are some restaurants near you: ")
            continue
        } else if (text === 'budget') {
            sendBudgetMessage(sender)
            continue
        } else if (text === 'bot') {
            sendBotMessage(sender)
            continue
        } else if (text === 'hungry na me') {
            sendHelloMessage(sender)
            continue
        } else if (text === 'location') {
            sendLocationMessage(sender)
            continue
        }
        sendTextMessage(sender, "Text received :), echo: " + text.substring(0, 200))
    } else if (event.postback && event.postback.payload) {
        let payload = event.postback.payload
        if (payload === 'payload_1') {
            sendTextMessage(send, "It worked!")
            continue
        }
    }
}
res.sendStatus(200)})

function sendBotMessage(sender) {
let messageData = {
    "attachment": {
        "type": "template",
        "payload": {
            "template_type": "button",
            "text": "Regular or special?",
            "buttons": [
            {
                "type": "postback",
                "payload": "payload_1",
                "title": "Regular"
            },
            {
                "type": "web_url",
                "title": "Special",
                "url": "https://www.messenger.com"
            }]
        }
    }
}
request({
    url: 'https://graph.facebook.com/v2.6/me/messages',
    qs: {access_token:token},
    method: 'POST',
    json: {
        recipient: {id:sender},
        message: messageData,
    }
}, function(error, response, body){
    if (error) {
        console.log('Error sending message: ', error)
    } else if (response.body.error) {
        console.log('Error: ', response.body.error)
    }
})}

Я пытаюсь создать такой вывод: введите здесь описание изображения


person etsilog    schedule 28.07.2016    source источник


Ответы (1)


Ваш код выглядит хорошо. Что вы видите в логах? Доходит ли сообщение обратной передачи до бота?

Есть ли опечатка «отправить» по сравнению с «отправителем»? sendTextMessage(отправить, "Сработало!")

Рабочий пример может помочь.

https://github.com/matthewericfisher/fb-robot

https://m.me/dynamicmemorysolutions

-- Мэтт

person Matthew Fisher    schedule 28.07.2016