Presentación

¡Hola a todos! Seguid conmigo para compartir alguna experiencia, pensamiento u opinión sobre la tecnología relacionada con el campo de la ingeniería del software. ¡En este artículo, quiero compartir cómo crear un simple Chatbot usando Golang y Messenger!

Para dar un poco de contexto a lo que debemos hacer, aquí hay varios puntos que vamos a manejar:

  • Tener una cuenta de Facebook o crear una nueva.
  • Crear una página de Facebook.
  • Crear una aplicación de Facebook (debería crearse automáticamente).
  • Crear un servidor de webhooks.

Diseño de la arquitectura

Para recibir un mensaje enviado por el usuario final al Messenger (página de Facebook), necesitamos proporcionar un servidor de Webhooks con REST API. El diseño de la arquitectura será como este diagrama:

Diseño de la arquitectura del chatbot

Cuenta de Facebook

Supongo que hoy en día la gente tiene una cuenta de Facebook. Sin embargo, si no es así, sólo tienes que visitar https://www.facebook.com para registrarte fácilmente haciendo clic en el botón Crear nueva cuenta.

Página de Facebook

La creación de una página de Facebook puede hacerse a través del menú de la página de inicio.

A continuación, haz clic en el botón Crear nueva página para ir a un formulario de Creación de una página.

O simplemente abra este enlace https://www.facebook.com/pages/create/?ref_type=site_footer para ir directamente al formulario de creación de una página. Rellena la información necesaria y termina haciendo clic en el botón Crear página.

Formulario para crear una nueva página

En la lista de páginas, aparecerá una nueva página.

Nueva página creada

Aplicación de Facebook

A continuación, dirígete a la página Meta for Developers aquí https://developers.facebook.com y elige el menú My Apps.

Página Meta para desarrolladores

Crea una nueva aplicación haciendo clic en el botón Crear aplicación.

Crear aplicación

Elige el tipo de negocio y haz clic en el botón Siguiente.

Elige el tipo de aplicación

Agrega la información detallada de la aplicación, el último paso es hacer clic en Crear aplicación para continuar.

Proceder a la creación de la aplicación

Espera un poco, la página será redirigida a la aplicación detallada después de ser creada con éxito.

Webhook

Antes de añadir productos de Messenger y Webhook en la aplicación de Facebook, podemos preparar un Webhook sólo para validar la URL de devolución de llamada. Para obtener información detallada, consulta esta documentación:

  • https://developers.facebook.com/docs/messenger-platform/getting-started/webhook-setup/

Como vamos a utilizar Go para este tutorial, mejor entender Go con este enlace:

Entonces, el ejemplo de código Go lo puedes ver aquí:

En realidad, necesitamos desplegar el Webhook en vivo que puede recibir eventos de webhook desde la Plataforma de Mensajería. El código debe estar alojado en un servidor HTTPS público. Pero podemos hacerlo localmente y hacer un túnel desde la URL pública a nuestro localhost usando ngrok. Para instalar y usar ngrok por favor refiérete a este enlace: https://ngrok.com/

En primer lugar, ejecute el servidor Webhook utilizando este comando:

go run .

El Webhook se ejecutará en el puerto 3000.

2022/01/03 00:36:30 http server listening at localhost:3000

Luego, habilitar el túnel es muy fácil, sólo hay que ejecutar este comando:

ngrok http 3000

Si ngrok habilita con éxito el túnel, la salida tendrá el siguiente aspecto:

ngrok Enabling Tunnel

Prueba el túnel haciendo este sencillo rizo:

curl --location --request GET 'https://e52b-2001-448a-400d-238a-d170-291d-3057-4e4a.ngrok.io/?hub.verify_token=12345&hub.challenge=challenge'

¡Cuando la salida es la misma que hub.challenge el parámetro de la consulta, entonces está funcionando!

challenge⏎

Configurar el producto de mensajería

Después de que el Webhook esté listo, el siguiente paso es configurar el producto Messenger. Busca el producto Messenger y haz clic en el botón Configurar.

Configurar el producto de mensajería

Vincula la configuración de Messenger con la página de Facebook que hemos creado en el apartado anterior.

Añadir página de Facebook
Elige la página de Facebook

Añade la URL de devolución de llamada usando ngrok HTTPS URL al formulario de configuración de la URL de devolución de llamada.

Añadir URL de devolución de llamada
Rellenar URL y Token

Como vamos a recibir mensajes de la plataforma Messenger, añade una suscripción para el campo de mensajes.

Suscripción al campo de mensajes

Utiliza la misma cuenta de Facebook que ha creado la aplicación de Facebook para enviar un mensaje al mensajero de la página de Facebook (también podemos invitar a otros usuarios a probar esta aplicación). Si nuestro Webhook recibe el mensaje con éxito, significa que nuestro Webhook está funcionando.

Prueba de recepción de mensajes

Configurar el producto Webhook

La siguiente parte es el envío del mensaje de respuesta del usuario final. En este ejemplo, la configuración para el ajuste de Webhooks se llena automáticamente después de terminar la configuración de Messenger (con el campo de suscripción al mensaje). En el caso de que nuestra configuración no se haya configurado automáticamente, por favor, remitete a estos ajustes.

Configuración de los Webhooks

Generar token de acceso

Basándonos en esta documentación de la API de envío, necesitamos que se incluya el token de acceso a la página en la solicitud para poder enviar el mensaje.

https://developers.facebook.com/docs/messenger-platform/reference/send-api/

Luego, tenemos que ir a la página de Configuración de Messenger y hacer Generar Token. El token se ocultará después de cerrar la ventana emergente. Por eso es mejor copiar el token y guardarlo.

Generar token

Modificar Webhook

Para enviar un mensaje a un usuario concreto, necesitamos el Token generado en el apartado anterior y realizar una petición HTTP a la API de Facebook. El código final tendrá el siguiente aspecto.

Golang y messenger
Mensaje de respuesta del webhook enviado

Conclusión

Construir un Chabot para la plataforma de Messenger es bastante sencillo porque hay mucha documentación bien escrita desde el sitio oficial. Además, no hay limitaciones para crear, acceder a la página y a la aplicación para que podamos probar fácilmente nuestro Chatbot.

Aunque el alcance de este artículo se limita a responder al mensaje, hay un montón de funciones de Messenger disponibles, así que espero que puedas explorar más por ti mismo.
Gracias por leerlo. Espero que este artículo sea útil para ti.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *