Manejo y envío de plantillas de WhatsApp
Documentación del envío de mensajes plantillas mediante API
Descripción
El siguiente endpoint permite el envío de mensajes por medio de la aplicación WhatsApp. Algunas consideraciones a saber:
El envío de notificaciones push se realiza por medio del envío de mensajes que WhatsApp denomina templates. Un template contiene el formato que tendrá el mensaje. Por ejemplo: "Hola {{1}}, queremos recordarle que para el día de hoy a las {{2}} tiene un turno en {{3}}.". Al enviar una notificación, el endpoint realiza una verificación del mensaje para comprobar que respete el formato definido.
La secuencia de pasos son:
Crear template.
Esperar a que el template pase al estado aprobado.
Enviar template en el momento que corresponda.
API para creación de plantillas
Este endpoint permite la creación de mensajes templates
Solicitud
URL:
https://backend.optiwe.com/whatsapp-templates/
Verbo HTTP:
POST
Encabezados de solicitud:
Content-Type:
application/json
Authorization:
Bearer YOUR_TOKEN
Cuerpo de solicitud:
Ejemplo de plantilla con botones call to action y variables
Se pueden enviar hasta dos botones botones call to action. No se pueden enviar dos botones del mismo tipo. Es decir, solo se permite enviar un botón tipo URL y otro tipo PHONE_NUMBER.
Es posible crear plantillas con variables que luego sean reemplazadas mediante el uso de la api para envios bulk. Las variables tienen la forma {{<numero>}}
y en el campo text
las variables siempre deben empezar por {{1}}
Para las plantillas con botones con url dinámica, se puede usar una variable ya existente en el campo text
o utilizar una nueva variable. Notar que solo se permite una variable en la url.
A continuación se presenta un ejemplo donde el campo texto posee dos variables y el botón con url posee otra variable adicional
Ejemplo de plantilla con botones quick reply
Respuestas
Exitosa
Código de respuesta:
HTTP 201 CREATED
.Cuerpo de respuesta:
Error template ya existente
Código de respuesta:
HTTP 400 BAD REQUEST
.Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Error de autenticación
Código de respuesta:
HTTP 401 UNAUTHORIZED
.Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Error de validacion
Código de respuesta:
HTTP 400 BAD REQUEST
.Encabezados de respuesta:
Content-Type:
application/json
Posibles cuerpos de la respuesta
API para listar plantillas
El siguiente endpoint permite obtener el estado de aprobación de los templates creados.
Los estados posibles son:
IN_REVIEW: El template se encuentra a la espera de la aprobación de WhatsApp.
APPROVED: El template ha sido aprobado por WhatsApp y está listo para ser utilizado.
DENIED: El template fue rechazado por WhatsApp.
Solicitud
URL:
https://backend.optiwe.com/whatsapp-templates/
Verbo HTTP:
GET
Encabezados de solicitud:
Authorization:
Bearer YOUR_TOKEN
Cuerpo de solicitud: Vacio
Respuestas
Exitosa
Código de respuesta:
HTTP 200 OK
.Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Error de autenticación
Código de respuesta:
HTTP 401 UNAUTHORIZED
.Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
API para envío de plantillas
Solicitud
URL:
https://backend.optiwe.com/whatsapp-campaigns/customers/
Verbo HTTP:
POST
Encabezados de solicitud:
Content-Type:
application/json
Authorization:
Bearer YOUR_TOKEN
Cuerpo de solicitud:
customerFullName (campo opcional): Nombre completo con el que se creará el cliente.
customerEmail (campo opcional): Email con el que se creará el cliente.
customerFields (campo opcional): JSON que contiene los campos de cliente con los que se creará el cliente. Los campos de cliente deben haber sido definidos previamente en el espacio de trabajo.
customerPhone (campo obligatorio): Número telefónico del cliente.
customerCountryCode (campo obligatorio): Código país del número telefónico.
overrideCustomerData (campo opcional): Si este campo es verdadero, los datos del cliente que figuren en el body reemplazarán a los datos del cliente ya creado. En caso contrario, solo se usarán los campos customerFullName, customerEmail y customerFields solo si el cliente no existe y será creado a partir del envío del saliente.
messagePayload (campo obligatorio): Mensaje que debe coincidir con un template ya aprobado. Si el template posee variables, pueden ser reemplazadas en este campo.
Envio de plantillas con botones
Se debera incluir en el campo "text" los botones formateados segun el siguiente ejemplo. Notar que se respeta el orden en el cual los botones fueron definidos cuando se creo la plantilla
Para el caso de botones quick reply
Respuestas
Respuesta exitosa
Código de respuesta:
HTTP 201 OK
Cuerpo de respuesta: Vacío
Error template no coincidente
Código de respuesta:
HTTP 400 BAD REQUEST
Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Error template no aprobado
Código de respuesta:
HTTP 400 BAD REQUEST
Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Error teléfono inválido
Código de respuesta:
HTTP 400 BAD REQUEST
Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Error cliente desuscrito
Código de respuesta:
HTTP 400 BAD REQUEST
Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Error limite de salientes superado
Código de respuesta:
HTTP 400 BAD REQUEST
Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Error campo de cliente no existente
Código de respuesta:
HTTP 400 BAD REQUEST
Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Error cuota de uso de API alcanzado
Código de respuesta:
HTTP 400 BAD REQUEST
Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Error de autenticación
Código de respuesta:
HTTP 401 UNAUTHORIZED
.Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
API para envíos bulk
Esta API permite enviar mensajes a varios clientes con una sola request HTTP a nuestros servidores. Recomendamos usar este endpoint para una mejor utilización de recursos.
Al enviar una campaña mediante esta API, los resultados de la misma se podrán visualizar mediante el dashboard.
Solicitud
URL:
https://backend.optiwe.com/whatsapp-campaigns/bulk/customers/
Verbo HTTP:
POST
Encabezados de solicitud:
Content-Type:
application/json
Authorization:
Bearer YOUR_TOKEN
Cuerpo de solicitud:
Respuestas
Respuesta exitosa
Nótese que una campaña puede crease de manera exitosa y aun así no tener clientes con números validos. En cuyo caso, los mismos son informados en el cuerpo de la respuesta.
Código de respuesta:
HTTP 201 OK
Encabezados de solicitud:
Content-Type:
application/json
Cuerpo de respuesta:
Error template no encontrado
Código de respuesta:
HTTP 400 BAD REQUEST
Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Error template no aprobado
Código de respuesta:
HTTP 400 BAD REQUEST
Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Error placeholders invalidos
Código de respuesta:
HTTP 422 UNPROCESSABLE ENTITY
Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Error limite de salientes superado
Código de respuesta:
HTTP 400 BAD REQUEST
Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Error whatsapp outbound no activada
Código de respuesta:
HTTP 400 BAD REQUEST
Encabezados de respuesta:
Content-Type:
application/json
Cuerpo de respuesta:
Última actualización