Ya son mas de 1.200 millones de usuarios que se comunican via Facebook Messenger. Cada d铆a es mas necesario saber como utilizar esta plataforma, por lo que manejar las herramientas que Facebook pone a disposici贸n a desarrolladores es esencial. La API para Facebook Messenger ofrece mejoras e integra extensiones que facilitan el desarrollo de chatbots.
En este聽tutorial describiremos como desarrollar un chatbot b谩sico para Facebook Messenger usando su API en Python 2.7 servido desde Heroku. Usaremos Flask para manejar llamadas al servidor y Heroku para servir la aplicaci贸n. Este tutorial fue realizado usando Linux.
1. Crear webhook para Facebook
Es necesario tener un endpoint que retorne un c贸digo 200 de respuesta y responda informaci贸n para verificar tu bot con Facebook (webhook). Para esto vamos usar el c贸digo de este repositorio 聽https://github.com/caracena/fb-messenger-bot (un fork traducido del original).
Clonamos el c贸digo en nuestro computador usando:
git clone [email protected]:caracena/fb-messenger-bot.git
Luego, vamos a la carpeta que clonamos desde github, creamos un ambiente virtual e instalamos las dependencias de Python.
cd fb-messenger-bot
virtualenv -p /usr/bin/python2.7 venvtest
source venvtest/bin/activate
pip install -r requirements.txt
Para deployar la aplicaci贸n en Heroku utilizaremos聽Heroku CLI Toolbelt. Primero, creamos la aplicaci贸n usando:
heroku create
Es posible probar la aplicaci贸nlocalmente corriendo:
heroku local
Revisa el resultado en tu navegador en http://localhost:5000 y deberias ver un “Hello world”
Termina el servidor local con Ctrl+C
. Luego deploya la aplicacion usando:
git push heroku master
Ahora ya tienes el endpoint corriendo para que pueda ser usado por tu bot. Puedes abrir la aplicacion usando heroku open
.聽Copia la URL de la aplicacion que te da heroku porque la necesitaremos mas tarde (deberia ser algo como https://*.herokuapp.com
).
2. Crear p谩gina de Facebook
Crea una p谩gina en facebook o puedes usar alguna que ya hayas creado anteriormente. La p谩gina ser谩 la cara visible de tu chatbot incluyendo su respectiva foto y nombre.
Adem谩s debes agregar un bot贸n de enviar mensaje para que cuando tu chatbot este activo puedas conversar con 茅l.
3. Crear aplicaci贸n de Facebook
Anda a Facebook Developer鈥檚 Quickstart Page聽y has click en “Skip and Create App ID” en la parte superior derecha. Luego crea una nueva aplicaci贸n de Facebook para tu bot d谩ndole un nombre, categoria y email de contacto.
Selecciona messenger como producto y eso te redigira a la p谩gina de configuraci贸n. Con eso ya has creado tu aplicaci贸n de Facebook.
4. Configuar la aplicaci贸n de Facebook Messenger
Ahora en la p谩gina de configuraciones de tu aplicaci贸n de Facebook Messenger hay ciertos detalles que debemos rellenar. Estos detalles son necesarios para comunicar la aplicaci贸n con el endpoint que creamos en el punto 1.
Generar un token de acceso a la p谩gina: genera un token de acceso seleccionando la p谩gina que creaste en el punto 2. Copia el token para que se use como variable de ambiente en nuestra aplicaci贸n de Heroku. Vuelve a la linea de comando donde la dejamos en el punto 1 y corre:
heroku config:add PAGE_ACCESS_TOKEN=token_copiado_desde_facebook
Este token ser谩 usado para autenticar las llamadas cuando trates de enviar un mensaje.
Configurar Webhook: Para configurar tu webhook son necesarios los siguientes campos:
- URL de devolucion de llamada (Callback function): La URL de Heroku del punto 1.
- Token de Verificaci贸n (Verification Token): Una palabra secreta que ser谩 enviada a tu bot para verificar que la llamada viene desde Facebook. Puedes usar cualquier string y debes configuarla en Heroku usando:聽
heroku config:add VERIFY_TOKEN=token_de_verificacion
- Campos de la suscripci贸n: Son los tipos de eventos que Facebook enviar谩 a tu webhook. Existen varios tipos, pero los mas importantes son “messages” y “messaging_postbacks”. Con esto tu webhook podr谩 recibir mensajes y botones desde Facebook Messenger.
Despu茅s de configurar el webhook, es necesario suscribirte a la p谩gina donde quieres tener tu chatbot.
Si no has podido configurar tu webhook correctamente, probablemente es porque no has configurado las variables de ambiente en tu instancia de heroku con:
heroku config:add PAGE_ACCESS_TOKEN=token_copiado_desde_facebook
heroku config:add VERIFY_TOKEN=token_de_verificacion
5. Comienza a chatear con tu bot
Con todas las configuraciones realizadas, ya puedes empezar a mandar mensajes a tu chatbot desde la p谩gina de Facebook que creaste en el punto 2. Como eres el administrador de la p谩gina, para probar el envio de mensajes debes hacer click en “Enviar Mensaje” y luego seleccionar “Probar bot贸n”. Por ahora nuestro chatbot solo responde “Hola” a cualquier mensaje.
Tambi茅n puedes ver los logs de tu aplicaci贸n con:
heroku logs -t
6. Crea un chatbot mas inteligente
Para agregar inteligencia a nuestro chatbot podemos empezar a responder distintos mensajes de acuerdo al mensaje que el chatbot recibe desde una persona. Para realizar esto podemos cambiar el c贸digo que hemos clonado en el punto 1.
En la funci贸n webhook podemos manejar las respuestas de nuestro chatbot. En esta funci贸n hemos agregado la librer铆a ChatterBot. Esta librer铆a tiene corpus de entrenamiento para espa帽ol que hace que el chatbot pueda responder de una forma mas adecuada dependiendo del mensaje que recibe. Para hacer uso de ella, solo es necesario modificar la l铆nea 33 del archivo app.py a lo siguiente.
inteligente = True
Luego agregamos los cambios a git, hecemos commit y un push del nuevo c贸digo para que heroku deploye los cambios.
git add app.py
git commit -m "cambiar a inteligente"
git push heroku master
Puedes probar tus cambios hablando directamente con tu chatbot. ADVERTENCIA: la inteligencia del chatbot no es de las mejores.
7. Envia tu chatbot a revisi贸n
Por ahora tu chatbot es solo visible para los administradores de la aplicaci贸n, por lo tanto solo responder谩 a esas personas. Para que cualquier persona pueda acceder a tu chatbot, debes pasar por el proceso de revisi贸n de Facebook.
Para comenzar con el proceso de revisi贸n anda a la p谩gina donde configuramos el webhook. En la secci贸n de revisi贸n de la aplicaci贸n para Messenger, agrega pages_messaging. Este permiso te permitir谩 responder mensajes de forma autom谩tica a usuarios de Facebook que le escriban a tu chatbot.
Una vez que agregues el permiso necesario, Facebook te pedir谩 que cumplas con ciertos requisitos como una imagen, una pol铆tica de privacidad y una categor铆a, adem谩s de algunas notas explicando el prop贸sito de tu chatbot. Luego que envias la revisi贸n Facebook demora alrededor de 12 horas para el proceso, aunque puede demorar hasta 5 d铆as h谩biles para tener una respuesta. Si quieres saber mas sobre el proceso de revisi贸n puedes ir a la documentaci贸n.
Si quieres seguir aprendiendo sobre chatbots 煤nete al grupo de Facebook de Chatbots en Chile. Si quieres seguir leyendo sobre chatbots revisa nuestra 煤ltima publicaci贸n sobre las razones para integrar un bot.
Si te gusto este tutorial por favor comparte o danos un like en nuestra p谩gina de Facebook.