Facebook chatbot με πολλές λέξεις-κλειδιά

ψήφοι
0

Έχω κάνει ένα φροντιστήριο πώς να στήσετε ένα chatbot Facebook για fanpage. Λειτουργεί τέλεια και επίσης να αλλάξετε τη λέξη-κλειδί και το μήνυμα που εμφανίζεται στην περίπτωση που ένας χρήστης πληκτρολογεί ακριβή τη λέξη-κλειδί.

Τώρα το μόνο πράγμα που είναι, δεν καταλάβω, πώς μπορείτε να προσθέσετε πολλές λέξεις-κλειδιά με τις απαντήσεις.

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

Δημοσιεύθηκε 25/06/2017 στις 16:19
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Εννοείτε να πω - Θα πρέπει να χειριστεί πολλαπλές λέξεις-κλειδιά για την ίδια απάντηση; Αν αυτή είναι η περίπτωση, τότε το facebook στέλνει το μήνυμα ως κείμενο στο webhook. Θα πρέπει να το πιάσει και να το στείλετε μήνυμα πίσω στο facebook αναλόγως.

Όπως τον κωδικό που έχετε στείλει, [αν (κείμενο === «γεια»)], θα πρέπει να έχετε δείγμα μηνύματα (hi σε αυτή την περίπτωση) πρέπει να αποθηκεύονται στο σύστημα και να χαρτογραφήσει την απάντηση.

Απαντήθηκε 18/09/2017 στις 07:36
πηγή χρήστη

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