Tabla de contenidos
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:
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.
En la lista de páginas, aparecerá una nueva página.
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.
Crea una nueva aplicación haciendo clic en el botón Crear aplicación.
Elige el tipo de negocio y haz clic en el botón Siguiente.
Agrega la información detallada de la aplicación, el último paso es hacer clic en Crear aplicación para continuar.
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:
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.
Vincula la configuración de Messenger con la página de Facebook que hemos creado en el apartado anterior.
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.
Como vamos a recibir mensajes de la plataforma Messenger, añade una suscripción para el 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.
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.
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.
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.
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.