Esta es la versión antigua, te recomendamos migrar a la nueva API de Plantillas para una experiencia más optimizada. En este artículo puedes encontrar los detalles.
Esta API (sigla en inglés de Interfaz de Programación de Aplicaciones) permite la integración entre sus aplicaciones con el servicio de envío de Plantillas de Atom. Esta API permite:
- Enviar una plantilla.
- Obtener un listado de plantillas.
- Ver detalles de una plantilla a través de su ID.
Endpoint: Send template - Envío de Plantilla
Este servicio permite el envío de Templates Messages utilizando el número de WhatsApp Oficial y el templateId.
Cuando el número enviado ya se encuentre vinculado con una conversación, se enviará el mensaje sobre la misma y la confirmación de envío será inmediata. En caso contrario, se esperará confirmación por medio del proveedor de WhatsApp Oficial, por lo cual no se brindará una confirmación de envío inmediata.
Parámetros
A continuación explicamos los parámetros que se deben incluir dentro de la petición de manera obligatoria, y otros que se pueden agregar opcionalmente:
Nombre del Parámetro |
Descripción |
Tipo de Dato |
Requerido |
templateId |
Identificador (Id) del Template Message de AtomChat. |
string |
Sí |
phoneNumber |
Número de teléfono al que se enviará el Template Message. Se debe anteponer el código del país, sin utilizar el signo + Correcto: 50755667788 ✅ Incorrecto: +50555667788 ❌ Incorrecto: 55667788 ❌ |
string |
Sí |
clientName |
Nombre del cliente al que se le enviará el Template Message. |
string |
Si. El valor por defecto será el número de teléfono. |
groupName |
Nombre del grupo a asignar. |
string |
No. El valor por defecto se obtiene del primer grupo asociado a la integración. |
assign |
Indica si la conversación se debe asignar a un Agente (con el valor true). En caso contrario, es asignada a Bot. |
boolean |
No. El valor por defecto es false. |
params |
Colección de parámetros con sus valores requeridos para el uso del Template Message. {key: value} |
object |
No |
La petición para realizar el envío de Templates Messages utilizando la API de AtomChat, se realiza de la siguiente manera:
Tipo de Conexión |
Acceso público por Internet |
Endpoint |
https://us-central1-atomchat-io.cloudfunctions.net/api/Template/SendMessage |
Método |
POST |
Encabezados |
Content-type: application/json Charset: utf-8 Authorization: Bearer (token público) |
Cuerpo |
{ “templateId”: “id_del_template”, “phoneNumber”: “numero_de_telefono”, “clientName”: “nombre_del_cliente”, “groupName”: “nombre_del_grupo”, “assign”: true/false, “params”: { “param1”: “valor”, “param2”: “valor ”, … }, } |
Respuestas
Las respuestas esperadas para la petición realizada, son las siguientes:
Escenario |
Código de Respuesta |
Cuerpo de la Respuesta |
Número nuevo |
200 |
{ success: true, message: "Pending" } |
Número existente |
200 |
{ success: true, message: "Sent", data: {conversation_id : conversation.id } } |
Plantilla pendiente de envío |
202 |
{ "success": false, "conversationId": conversation.id, "status": 202 } |
Parámetros incorrectos |
400 |
{ success: false, message: "No hay datos para enviar" } |
Faltan Parámetros de plantilla requeridos |
400 |
{ code: 400, body: { context: { key: 'Body', label: 'body.params' }, message: "Missing params:[] ", path: [ 'body.params' ], type: 'Bad format', }, } |
Plantilla sin ID o Plantilla sin mensaje definido |
400 |
{ code: 400, body: { context: { key: 'Body', label: ['template.appId', 'template.message'] }, message: 'No data to send', path: [ 'template.appId', 'template.message' ], type: 'Bad format', }, } |
Canal no conectado |
400 |
{ code: 400, body: { context: { value: atom.channel?.status, key: 'Channel', label: 'channel.status' }, message: 'The channel associated to the template is not configured yet, please contact the support team', path: ['channel.status'], type: 'Bad format', }, } |
Token incorrecto |
400 |
{ "context": { "key": "Authorization", "label": "headers.authorization", "value": Bearer }, "message": "Cannot find a channel associated with the public token Bearer", "path": [ "headers.authorization" ], "type": "Bad format" } |
Se alcanzó el límite de conversaciones del plan |
401 |
{ "success": false, "message": "The client has reached conversations limit", "conversationId": null, "status": 401 } |
Error interno |
500 |
{ context: { key: 'Api', label: 'api.SendTemplateController', value: error }, message: 'Something went wrong while the operation was executed', path: ['api.SendTemplateController'], type: 'Internal Server Error', } |