Ampliamos el detalle del proyecto para que podamos ver como vamos a desarrollar este módulo.
https://github.com/chatwithio/odoo-whatsapp-api
Consideraciones
Se realizará un desarrollo de un módulo de Odoo, que tiene como objetivo integrarse con WhatsApp, enviando y recibiendo mensajes a través del servicio brindado por 360 Dialog.
360 Dialog ofrece una API para gestionar el envío y recepción de mensajes a través de WhatsApp. Es un servicio pago, que para utilizarlo se debe tener una API-Key para cada cliente. No obstante, el servicio ofrece una API SandBox que se utiliza de manera gratuita para realizar los desarrollos.
El servicio ofrece el envío de mensajes pagos a través de plantillas a diversos numeros de telefono y la respuesta a mensajes de clientes.
Descripción de la solución
La solución es básicamente un módulo de Odoo, que al instalarlo permite utilizar el servicio ofrecido por 360 Dialog. Para comprender como funcionará el módulo, resulta importante destacar las siguientes cuestiones:
→ Ingreso de credenciales y datos de autenticación: en la parte de ajustes de Odoo se agregan campos para ingresar las api keys y el namespace del sistema.
→ Carga de plantillas de mensaje: se crea una tabla donde se crean las plantillas de mensaje que van a estar cargadas en 360 Dialog. Estas plantillas tienen un id de referencia que debe ser el mismo que tiene dicho proveedor.
→ Creación de tabla Mensaje WhatsApp (wa.message): esta tabla funcionará analogamente a el envio de mails en Odoo. Los mensajes pueden crearse por el envio desde Odoo o por respuestas de los propios clientes. De esta manera quedan registrados para su control todos los mensajes enviados y recibidos a través de la integración con esta API.
→ Envio de mensajes: Cuando se envia un mensaje de WhatsApp, se hace una request a la API de 360 Dialog, la que responde un id de mensaje y un codigo de respuesta, que puede ser exitoso o no. Esto genera un registro en la tabla wa.message, registrando el id, la respuesta de la API y si es un mensaje de respuesta o a partir de una plantilla.
→ Alerta por errores en envío: en el caso de que el envio falle, se va a generar una alerta para la persona que lo envío para que este al tanto del fallo del envio y lo corrija en caso de ser posible.
→ Actualización de mensajes: 360 Dialog envía cambios de estado del mensaje a un webhook que debe procesar dicha información. En la tabla de wa.message, se van a trasladar los cambios de estado del mensaje. Hay confirmaciones de lectura.
→ Recepcion de respuestas: en el webhook anterior, según la documentacion del proveedor, se recibe información sobre las respuestas a los mensajes de los clientes. Esto debe ser registrado en la tabla wa.message y notificar al comercial en el documento desde el que se envio el mensaje.
Objetivo
Desarrollar la integración entre Odoo y WhatsApp con el objetivo de poder automatizar el envío de mensajes a clientes y oportunidades comerciales
Consideraciones técnicas
Para enviar mensajes a través de whatsapp, se necesita una interacción con su API, o con algún servicio que se conecte con dicha API. Para esto, tenemos algunos caminos alternativos:
- Utilización del proyecto de WhatsApp de ChatWithIO: Cesar puso a disposición un proyecto construido en php, el cual tiene la función de enviar una plantilla de mensaje a uno o varios números telefónicos. Para conectarse con esto, parece haber una api key.
- Conexión directa vía WhatsApp: hay que averiguar si whatsapp tiene una api gratuita para realizar el envío de los mensajes. En ese caso podemos desarrollar todo en un modulo de Odoo. El tiempo estimado para esta alternativa depende de la disponibilidad de una api funcional por parte de WhatsApp
Lo más rápido y sencillo sería poder utilizar la opción número 1. Lo primero sería entender como conectarse con este servicio, y una vez que se pudo hacer un envío con datos de prueba, la integración con Odoo es sencillo. Desde Odoo, se hace una request al end point correspondiente, que se encarga de enviar el mensaje. Desde Odoo, la manera de realizar esa request puede ser de varias maneras, en función como se quiera utilizar el sistema. Mas adelante se plantean los desarrollos para los casos de uso más comunes.
Para poder probar si el proyecto de ChatWithIO, debo resolver una duda principal: el servicio de php corre en un servidor de dicha empresa o hay que correrlo en un servidor nuestro. En un entorno local, se intentó seguir las instrucciones de instalación del proyecto y hay algunos inconvenientes con el composer. No tengo experiencia con php, por lo que debo iterar e investigar hasta encontrar la solución. Lo que me hace ruido es la existencia de una API key, y de ciertas plantillas; esto podría significar que el servicio de PHP corre en un servidor de ChatWithIO y solo abría que interactuar con ese endpoint. Para resolver esto, necesitaria algunos días para aprenderlo o un mail/reunion corta con alguno de los desarrolladores para que me orienten como implementar el proyecto.
Características Solución
Mas allá de la conexión por WhatsApp, se plantean las funcionalidades y algunos detalles de la solución desde Odoo.
Desarrollar en las plantillas de mensajes, una opción para indicar de que esa plantilla no es de correo sino de WhatsApp. Se modifica el método de envío de mensajes con plantillas de Odoo, haciendo de que en vez de enviar un correo electrónico para este tipo de plantillas, se envíe una request al método de integración seleccionado. Se debe tener especial consideración a de que campo saca el sistema el numero telefónico y como lo va a sanitizar para poder ser utilizado sin errores.
Al integrar el WhatsApp a las plantillas de correo electrónico, nos da la ventaja de poder utilizar las funcionalidades ya existentes en nuestro sistema:
- Odoo ya permite en envío de “correos electrónicos” a partir de plantillas en todos los documentos del sistema. Por lo que los comerciales podrán comunicarse al igual que por correo, pero seleccionando este otro tipo de plantillas. Por como se plantea el proyecto de php, estas plantillas no van a ser editables, sino que es el mismo mensaje para todos, y en odoo solo se carga la referencia al codigo de plantilla del servicio externo.
- Se puede integrar el desarrollo de automatizaciones de envio de mails automatizados. Esto permite definir condiciones bajo las cuales a un registro debe generar el envio de un mensaje, que puede ser por correo o por WhatsApp.
Proximos pasos
→ Comprensión de la infraestructura del servicio de ChatWithIO. Resulta fundamental para avanzar comprender si el servicio va a correr en servidor externo, o si en otro servidor. Sea cual sea el caso, este paso termina con un ping al servidor correspondiente, asegurando de que la conexión entre Odoo y esta establecida. Una vez que tengamos esto, el resto no tiene mayor complejidad.
→ Desarrollo de módulo en Odoo:
- configurar campos para ingreso de api y dirección de conexión con el servicio externo.
- Desarrollo de un nuevo método atomizado de envío de whatsapp
- Envío de mensajes manualmente desde oportunidades, clientes y leads
- Envío de mensajes con la herramienta de automatizaciones de mail
→ Instalación e implementación: aplicarlo en Roconsa definiendo las automatizaciones deseadas.