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 git@github.com: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’s 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.

Comentarios

comentarios