【问题标题】:Facebook chatbot with multiple keywords具有多个关键字的 Facebook 聊天机器人
【发布时间】:2017-11-28 14:49:14
【问题描述】:

我已经完成了如何为粉丝专页设置 Facebook 聊天机器人的教程。 它运行完美,我们还可以更改关键字和弹出的消息,以防用户输入准确的关键字。

现在唯一的问题是,我们不知道如何添加多个关键字和答案。

var express = require('express')
var bodyParser = require('body-parser')
var request = require('request')
var app = express()

app.set('port', (process.env.PORT || 5000))

// Process application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({extended: false}))

// Process application/json
app.use(bodyParser.json())

// Index route
app.get('/', function (req, res) {
    res.send('Hello world, I am a chat bot')
})

// for Facebook verification
app.get('/webhook/', function (req, res) {
    if (req.query['hub.verify_token'] === 'token') {
        res.send(req.query['hub.challenge'])
    }
    res.send('Error, wrong token')
})

// Spin up the server
app.listen(app.get('port'), function() {
    console.log('running on port', app.get('port'))
})


// API End Point - 

app.post('/webhook/', function (req, res) {
    messaging_events = req.body.entry[0].messaging
    for (i = 0; i < messaging_events.length; i++) {
        event = req.body.entry[0].messaging[i]
        sender = event.sender.id
        if (event.message && event.message.text) {
            text = event.message.text
            if (text === 'hi') {
                sendGenericMessage(sender)
                continue
            }
            sendTextMessage(sender, "parrot: " + text.substring(0, 200))
        }
        if (event.postback) {
            text = JSON.stringify(event.postback)
            sendTextMessage(sender, "Postback received: "+text.substring(0, 200), token)
            continue
        }
    }
    res.sendStatus(200)
})

var token = " enter token here"

// function to echo back messages

function sendTextMessage(sender, text) {
    messageData = {
        text:text
    }
    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 messages: ', error)
        } else if (response.body.error) {
            console.log('Error: ', response.body.error)
        }
    })
}


// Send an test message back as two cards.

function sendGenericMessage(sender) {
    messageData = {
        "attachment": {
            "type": "template",
            "payload": {
                "template_type": "generic",
                "elements": [{
                    "title": "title 1",
                    "subtitle": "subtitle",
                    "image_url": "url of image",
                    "buttons": [{
                        "type": "web_url",
                        "url": "https://www.facebook.com/",
                        "title": "Facebook"
                    }, {
                        "type": "web_url",
                        "url": "https://www.reddit.com",
                        "title": "Reddit"
                    },{
                        "type": "web_url",
                        "url": "https://twitter.com/",
                        "title": "Twitter"
                    }],
                }, {
                    "title": "Title 2 ",
                    "subtitle": "Subtitle",
                    "image_url": "imgurl",
                    "buttons": [{
                        "type": "postback",
                        "title": "title",
                        "payload": "payload",
                    },{
                        "type": "postback",
                        "title": "title",
                        "payload": "payload",
                    }, {
                        "type": "postback",
                        "title": "title",
                        "payload": "payload",
                    }],
                },  {
                    "title": "title",
                    "subtitle": "subtitle",
                    "image_url": "http://www.google.com",
                    "buttons": [{
                        "type": "postback",
                        "title": "title",
                        "payload": "payload",
                    },{
                        "type": "postback",
                        "title": "title",
                        "payload": "payload",
                    }, {
                        "type": "postback",
                        "title": "title",
                        "payload": "payload",
                    }],
                }]  
            } 
        }
    }
    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 messages: ', error)
        } else if (response.body.error) {
            console.log('Error: ', response.body.error)
        }
    })
}

【问题讨论】:

    标签: bots chatbot messenger facebook-chatbot


    【解决方案1】:

    您的意思是说 - 您需要为相同的答案处理多个关键字?如果是这种情况,那么 facebook 会在 webhook 上将消息作为文本发送。您需要抓住它并将消息发送回 facebook。

    正如您发送的代码 [if (text === 'hi')],您需要将示例消息(在本例中为 hi)存储在系统中并映射答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 2016-08-05
      • 2016-12-04
      • 2016-08-14
      相关资源
      最近更新 更多