Chatbot Amazon Lex y Whatsapp (Twilio): Guía paso a paso

1. Introduccion

TO DO

1.1 Objetivo

En este Workshop vamos a implementar un Chatbot utilizando el servicio Amazon Lex y lo integraremos con la plataforma de mensajería instantánea WhatsApp. Esta integración se realizará a través de la plataforma (twilio) que nos permitirá recibir mensajes directamente desde la aplicación whatsapp (web o smartphone). Como pasos opcionales podemos integrar nuestro chatbot con Facebook Messenger o en nuestro propio sitio web.

Se trata de un caso de uso para el agendamiento de horas al dentista, no obstante puede extenderse para cualquier tipo de interacción con un asistente virtual, por ejemplo preguntas y respuestas frecuentes, información del estado de un caso de soporte, solicitud de información personalizada, ejecución de un procesamiento automático, etc.

1.2 Arquitectura

Arquitectura está compuesta por un Bot Lex configurado para interactuar con el usuario y resolver la información necesaria para el agendamiento (motivo, hora y día). Una vez resuelta la información, se envía la solicitud a una función Lambda que procesa el requerimiento insertando la cita en la tabla DynamoDB (para este ejercicio no existe ninguna validación de negocio en la función Lambda, sólo inserta la cita).

Hacia el cliente la interacción se realiza a través de una integración con Twilio que permite enviar y recibir mensajes de WhatsApp hacia el Chatbot.

"arquitectura"

1.3 Costos

Los costos de la solución vienen dados por el uso de acuerdo a las transacciones realizadas:

Ejemplo:

Supongamos el caso de nuestro Chat Bot intercambia 10 mensajes con el usuario para intento de agendamiento que realizamos, durante el mes tenemos 1000 conversaciones y 500 agendamientos. Cada registro de agendamiento pesa 1 KB.

Lex:

  • Mensajes = 1000 x 10 = 10.000
  • Costo = 10000 x 0.00075 = 7,5 USD

Lambda:

  • Solicitudes: 500
  • Costo Invocaciones = 500 / 1.000.000 x 0.2 USD = 0.0001 USD
  • GB-Segundo = 500 x (100 milisegundos) x (256 MB) = 500 x 0.1 x 0.25 = 12.5 GB-Segundo
  • Costo por GB-Segundo = 12.5 x 0.0000166667 USD = 0.0002 USD

DynamoDB

  • Unidades de Escritura: 500 x 1 KB / 1 KB= 500 WCU
  • Costo por escritura: 500 / 1.000.000 x 1.25 = 0.000625
  • Costo por almacenamiento: 500 KB / 1.000.000 x 0.25 = 0.000125 USD (adicional por cada mes)
  • Costo por lectura: Depende de la cantidad de lecturas. Si se lee 5 veces el costo es 0.000625 USD.

Twilio Los costos de twilio deben ser revisados en https://www.twilio.com/whatsapp/pricing/us Al momento de la redacción de esta guía los costos de twilio son 0.005 USD por mensaje.






2. Despliegue de la solución

2.1 Amazon Lex Chatbot (En español)

Amazon Lex es un servicio para crear interfaces de conversación con voz y texto. Ofrece las funcionalidades de deep learning como reconocimiento automático de voz para convertir voz en texto y tecnología de comprensión del lenguaje natural para reconocer la intención del texto. Más información de Lex



2.2 La Base de Datos de Agendas

Amazon DynamoDB es un servicio de base de datos NoSQL totalmente administrado que ofrece un rendimiento rápido, confiable y escalable. Vamos a utilizar este servicio para crear una tabla donde almacenaremos las agendas.



2.3 Función Lambda de Agendamiento

Con AWS Lambda, puede ejecutar código sin aprovisionar ni administrar servidores. Solo tiene que cargar el código y Lambda se encargará de todo lo necesario para ejecutar y escalar el código con alta disponibilidad. Esta función Lambda será la encargada de tomar el Fulfillmentde Lex y convertirlo en una cita en la base de datos.



2.3 Cumplimiento (Fulfillment) de la Intención utilizando la función Lambda.

Antes de continuar, asegúrese de haber realizado los pasos anteriores y confirmar que todo funciona correctamente (pruebas del Bot de Lex y pruebas de la función Lambda). Ahora lo que haremos será enganchar nuestro Bot con la función al momento del Fulfillment del intent, para eso vamos a la Consola de Lex y editamos el intent.



Opcional: Agregar la interfaz web

Nuestro Bot de agendamientos ya está listo y funcionando completamente, pero no cuenta con una interfaz web que permita interactuar directamente con el. En este paso opcional podemos generar una UI (user interface).



2.6 Integración con Whatsapp

Acá vamos a combinar nuestro Bot con la plataforma de Mensajería WhatsAspp. Para ello utilizaremos un servicio externo Twilio que nos permite recibir y responder mensajes de whatsapp con Lex.



Opcional: Interactuando con notas de voz de Whatsapp

Nuestro bot tiene las capacidades de recibir voz, pero qué pasa cuando enviamos una nota de voz?



Opcional: Integración con Facebook Messenger

Siga estos pasos si quiere integrar el Bot a un chat de Messenger y así ofrecer la misma experiencia en esa plataforma de mensajería.



3 Limpieza

TO DO

4 Material adicional

TO DO