Facebook chatbot mit mehreren Keywords

stimmen
0

Ich habe ein Tutorial gemacht, wie eine Facebook chatbot für eine Fanpage einrichten. Es funktioniert perfekt und wir können auch das Schlüsselwort ändern und die Nachricht, die ein Benutzer in Fall erscheint exakt das Stichwort.

Nun ist die einzige Sache ist, dass wir herausfinden, nicht, wie mehrere Keywords mit Antworten hinzuzufügen.

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)
        }
    })
}

Veröffentlicht am 25/06/2017 um 16:19
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

bedeuten, Sie Sie sagen - Sie müssen mehrere Schlüsselwörter für gleiche Antwort umgehen? Wenn das der Fall ist, dann sendet Facebook die Nachricht als Text auf Webhook. Sie müssen es fangen und die Nachricht entsprechend an Facebook senden zurück.

Wie in dem Code, den Sie gesendet haben, [if (Text === ‚hallo‘)], müssen Sie Beispielnachrichten (hallo in diesem Fall) in dem System gespeichert werden und die Antwort abzubilden.

Beantwortet am 18/09/2017 um 07:36
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more