Facebook messenger con Node JS

Facebook messenger con Node JS

Facebook messenger

Requisitos

Pagina de Facebook

Debemos contar con una pagina de Facebook o crear una pagina nueva link

Cuenta de desarrollador de Facebook

Se deberá poseer una cuenta o crear una link

Crear una nueva app

En la esquina superior derecha hay un menu 'Mis Apps' en la cual vamos a crear una nueva app con el nombre de nuestro proyecto el cual llamaremos 'DummyBot'

Descargar ngrok link

./ngrok authtoken token_de_ngrok

./ngrok http 5000

Instalación

npm init -y

npm i express
npm i body-parser
npm request

Codeando

const express = require('express');
const bodyParser = require('body-parser');
const request = require('request');

const port = 5000;

const app = express();

app.set('port', (port));
app.use(bodyParser.json())

app.get('/', function (req, res) {
    res.send('lorem ipsum')
})

app.get('/webhook', function (req, res) {
    if (req.query['hub.verify_token'] === 'su token customizado') {
        res.send(req.query['hub.challenge']);
    } else {
        res.send('cerrando bot');
    }
});

app.post('/webhook', function (req, res) {
    const data = req.body;
    if (data.object == 'page') {
        data.entry.forEach(function (pageEntry) {
            pageEntry.messaging.forEach(function (messagingEvent) {
                receiveMessage(messagingEvent);
            });
        });
        res.sendStatus(200);
    }
});

const receiveMessage = (event) => {
    const senderId = event.sender.id;
    const messageText = event.message.text;
    const messageData = {
        recipient: {
            id: senderId
        },
        message: {
            text: messageText
        }
    };
    sendMessage(messageData); 
}

const sendMessage = (messageData) => {
    request({
        uri: 'https://graph.facebook.com/v2.6/me/messages',
        qs: {
            access_token: 'token de la app de FB'
        },
        method: 'POST',
        json: messageData
    }, function (error, response, data) {
        if (error) {
            console.log('no se pudo enviar el mensaje');
        } else {
            console.log('mensaje enviado correctamente');
        }
    });
}

app.listen(port, () => {
    console.log(`http://localhost:${port}`)
})

Ejecutar

node index.js

Testeo

Ahora solamente nos resta probar nuestra app Para ello ingresamos al messenger, buscamos nuestra fanpage para iniciar el chat, nos debe retornar la misma información que ingresamos previamente