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:

    1. Crear template.

    2. Esperar a que el template pase al estado aprobado.

    3. 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:

Derivación de conversación saliente por email de agente

La API de envíos Bulk permite el envío de mensajes salientes uno-a-uno con la posibilidad de derivar la conversación a un agente particular ingresando su dirección de email (campo userEmail) en el cuerpo de la solicitud. Los campos sendAsync y whatsappCampaignType deben ser false y "ONE_CUSTOMER" respectivamente para que la derivación funcione correctamente.

Error de agente no encontrado

  • Código de respuesta: HTTP 404 NOT FOUND

  • Encabezados de respuesta:

    • Content-Type: application/json

  • Cuerpo de respuesta:

Última actualización