API de Plantillas

 

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

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

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',

}