Utiliza nuestra API de Plantillas 🧡

urEsta 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: Templates - 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

Sí. 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 (mensajes con plantillas) utilizando la nueva 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/templates

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

Plantilla enviada

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

401

{

code: 401,

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

401

{

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

}

 

Endpoint: Get List of templates - Listar plantillas

Este servicio permite listar las plantillas pertenecientes a un canal determinado por el token público.

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

page

Indicador de la página sobre la cual se desea obtener los registros. Default: 1

string

No

size

Cantidad de registros a recuperar. Default: 10

string

No

 

La petición para realizar la recepción de listado de plantillas 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/templates?page=1&size=1000&sort=asc

Método

GET

Encabezados

Content-type: application/json

Charset: utf-8

Authorization: Bearer (token público)

Respuestas

Las respuestas esperadas para la petición realizada, son las siguientes:

Escenario

Código de Respuesta

Cuerpo de la Respuesta

Listar plantillas

200

{

 length: int,

 page: int,

 items: [

        {

        id: string,

        message: string,

        buttons: [],

        headerParams?: [clave: valor],

        status: APPROVED/REJECTED,

        active: boolean,

        createdAt: Date,

        updatedAt: Date,

        bodyParams: [],

        description: string

        }

    ]

}

Número existente

200

{

success: true, 

message: "Sent", 

data: {conversation_id : conversation.id }

}

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"

}

Error interno

500

{

 "context":{

   "key":"Template",

   "label":"template"

           },

 "message":"Something went wrong while the operation was executed",

 "path":["template"],

 "type":"Internal Server Error"

}

Ejemplo de estructura JSON

{

    "length": 2,

    "page": 1,

    "items": [

        {

            "id": "b5ssgNtFPa5Vbrb8TOxt",

            "message": "Hola, Bienvenido a almacenes tia, siempre de todo a menor precio, siempre",

            "buttons": [],

            "status": "APPROVED",

            "active": true,

            "createdAt": "2022-06-02T18:49:32.786Z",

            "updatedAt": "2022-06-29T17:21:01.098Z",

            "bodyParams": [],

            "description": "Plantilla Tia"

        },

        {

            "id": "7gKfsuDayJeBqqSGfYIY",

            "message": "Hola, 1 👋 Te saludamos desde *2* 🛒Vimos que te interesó uno de nuestros productos y *queremos que sea tuyo* 😉Te invitamos a volver a tu compra *en un clic* ✨👇3 ",

            "buttons": [],

            "status": "APPROVED",

            "active": true,

            "createdAt": "2022-06-04T02:29:43.652Z",

            "updatedAt": "2022-06-04T16:38:13.083Z",

            "bodyParams": [

                "client_name",

                "companyName",

                "url"

            ],

            "description": "shopify_abandoned_checkout"

        }

    ]

}

Endpoint: Get Template by ID - Ver detalles de una plantilla

Este servicio permite obtener los detalles pertenecientes a una plantilla en particular.

La petición para realizar la recepción de listado de plantillas 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/{templateId}

Método

GET

Encabezados

Content-type: application/json

Charset: utf-8

Authorization: Bearer (token público)

Respuestas

Las respuestas esperadas para la petición realizada, son las siguientes:

Escenario

Código de Respuesta

Cuerpo de la Respuesta

Plantilla recuperada

200

{

 id: string,

 message: string,

 buttons: [],

 status: APPROVED/REJECTED,

 active: true/false,

 createdAt: string,

 updatedAt: string,

 bodyParams: [],

 description: string

}

Plantilla inexistente

404

{

 "code": 404,

 "body": {

 "context": {

        "key": "Template",

        "label": "template",

        "value": id.template

        },

        "message": "Cannot find the template with id = templateId",

        "path": [

            "template"

        ],

        "type": "Not Found"

    }

}

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"

}

Ejemplo de estructura JSON

{

    "id": "b5ssgNtFPa5Vbrb8TOxt",

    "message": "Hola, Bienvenido a almacenes tia, siempre de todo a menor precio, siempre",

    "buttons": [],

    "status": "APPROVED",

    "active": true,

    "createdAt": "2022-06-02T18:49:32.786Z",

    "updatedAt": "2022-06-29T17:21:01.098Z",

    "bodyParams": [],

    "description": "Plantilla Tia"

}