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