Ir al contenido principal

Utiliza nuestra API de Plantillas en Atom

A
Escrito por Atención Escalate Ops
Actualizado esta semana

Utiliza nuestra API de Plantillas en Atom

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: Templates - Envío de Plantilla

Este servicio permite el envío de Templates Messages utilizando elnúmero de WhatsApp Oficialy eltemplateId.

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 |

Nombre del Parámetro

| Descripción |

Descripción

| Tipo de Dato |

Tipo de Dato

| Requerido |

Requerido

| templateId |

templateId

| Identificador (Id) del Template Message de AtomChat. |

Identificador (Id) del Template Message de AtomChat.

| string |

string

| Sí |

| phoneNumber |

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 ❌ |

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 |

string

| Sí |

| firstName |

firstName

| Nombre del cliente |

Nombre del cliente

| string |

string

| Sí |

| lastName |

lastName

| Apellido del cliente |

Apellido del cliente

| string |

string

| Sí |

| assign |

assign

| Indica si la conversación se debe asignar a un Agente (con el valortrue). En caso contrario, es asignada a Bot. |

Indica si la conversación se debe asignar a un Agente (con el valortrue). En caso contrario, es asignada a Bot.

| boolean |

boolean

| No. El valor por defecto esfalse. |

No. El valor por defecto esfalse.

| params |

params

| Colección de parámetros con sus valores requeridos para el uso del Template Message.{key: value} |

Colección de parámetros con sus valores requeridos para el uso del Template Message.

{key: value}

| object |

object

| No |

No

La petición para realizar el envío deTemplates Messages (mensajes con plantillas)utilizando la nueva API de AtomChat, se realiza de la siguiente manera:

| Tipo de Conexión |

Tipo de Conexión

| Acceso público por Internet |

Acceso público por Internet

| Endpoint |

Endpoint

| Método |

Método

| POST |

POST

| Encabezados |

Encabezados

| Content-type: application/jsonCharset: utf-8Authorization: Bearer (token público) |

Content-type: application/json

Charset: utf-8

Authorization: Bearer (token público)

| Cuerpo |

Cuerpo

| {“templateId”: “iddeltemplate”,“phoneNumber”: “numerodetelefono”,“firstName”: “nombredelcliente”,“lastName”: apellidodelcliente”,“groupName”: “nombredelgrupo”,“assign”:true/false,“params”: {“param1”: “valor”,“param2”: “valor”,…},} |

{

“templateId”: “iddeltemplate”,

“phoneNumber”: “numerodetelefono”,

“firstName”: “nombredelcliente”,

“lastName”: apellidodelcliente”,

“groupName”: “nombredelgrupo”,

“assign”:true/false,

“params”: {

“param1”: “valor”,

“param2”: “valor”,

},

}

Respuestas

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

| Escenario |

Escenario

| Código de Respuesta |

Código de Respuesta

| Cuerpo de la Respuesta |

Cuerpo de la Respuesta

| Plantilla enviada |

Plantilla enviada

| 200 |

200

| {success: true,message: "Sent",data: {conversation_id : conversation.id }} |

{

success: true,

message: "Sent",

data: {conversation_id : conversation.id }

}

| Plantilla pendiente de envío |

Plantilla pendiente de envío

| 202 |

202

| {"success": false,"conversationId":conversation.id,"status": 202} |

{

"success": false,

"conversationId":conversation.id,

"status": 202

}

| Parámetros incorrectos |

Parámetros incorrectos

| 400 |

400

| {success: false,message: "No hay datos para enviar"} |

{

success: false,

message: "No hay datos para enviar"

}

| Faltan Parámetros de plantilla requeridos |

Faltan Parámetros de plantilla requeridos

| 400 |

400

| {code: 400,body: {context: { key: 'Body', label: 'body.params' },message: "Missing params:[] ",path: ['body.params'],type: 'Bad format',},} |

{

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 |

Plantilla sin ID o Plantilla sin mensaje definido

| 400 |

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

{

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 |

Canal no conectado

| 401 |

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

{

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 |

Token incorrecto

| 401 |

401

| {"context": {"key": "Authorization","label": "headers.authorization","value":Bearer},"message": "Cannot find a channel associated with the public tokenBearer","path": ["headers.authorization"],"type": "Bad format"} |

{

"context": {

"key": "Authorization",

"label": "headers.authorization",

"value":Bearer

},

"message": "Cannot find a channel associated with the public tokenBearer",

"path": [

"headers.authorization"

],

"type": "Bad format"

}

| Se alcanzó el límite de conversaciones del plan |

Se alcanzó el límite de conversaciones del plan

| 401 |

401

| {"success": false,"message": "The client has reached conversations limit","conversationId": null,"status": 401} |

{

"success": false,

"message": "The client has reached conversations limit",

"conversationId": null,

"status": 401

}

| Error interno |

Error interno

| 500 |

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

{

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 |

Nombre del Parámetro

| Descripción |

Descripción

| Tipo de Dato |

Tipo de Dato

| Requerido |

Requerido

| page |

page

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

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

| string |

string

| No |

No

| size |

size

| Cantidad de registros a recuperar. Default: 10 |

Cantidad de registros a recuperar. Default: 10

| string |

string

| No |

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 |

Tipo de Conexión

| Acceso público por Internet |

Acceso público por Internet

| Endpoint |

Endpoint

| Método |

Método

| GET |

GET

| Encabezados |

Encabezados

| Content-type: application/jsonCharset: utf-8Authorization: Bearer (token público) |

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 |

Escenario

| Código de Respuesta |

Código de Respuesta

| Cuerpo de la Respuesta |

Cuerpo de la Respuesta

| Listar plantillas |

Listar plantillas

| 200 |

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}]} |

{

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 |

Número existente

| 200 |

200

| {success: true,message: "Sent",data: {conversation_id : conversation.id }} |

{

success: true,

message: "Sent",

data: {conversation_id : conversation.id }

}

| Token incorrecto |

Token incorrecto

| 400 |

400

| {"context": {"key": "Authorization","label": "headers.authorization","value":Bearer},"message": "Cannot find a channel associated with the public tokenBearer","path": ["headers.authorization"],"type": "Bad format"} |

{

"context": {

"key": "Authorization",

"label": "headers.authorization",

"value":Bearer

},

"message": "Cannot find a channel associated with the public tokenBearer",

"path": [

"headers.authorization"

],

"type": "Bad format"

}

| Error interno |

Error interno

| 500 |

500

| {"context":{"key":"Template","label":"template"},"message":"Something went wrong while the operation was executed","path":["template"],"type":"Internal Server Error"} |

{

"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": "shopifyabandonedcheckout"

}

]

}

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 |

Tipo de Conexión

| Acceso público por Internet |

Acceso público por Internet

| Endpoint |

Endpoint

| Método |

Método

| GET |

GET

| Encabezados |

Encabezados

| Content-type: application/jsonCharset: utf-8Authorization: Bearer (token público) |

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 |

Escenario

| Código de Respuesta |

Código de Respuesta

| Cuerpo de la Respuesta |

Cuerpo de la Respuesta

| Plantilla recuperada |

Plantilla recuperada

| 200 |

200

| {id: string,message: string,buttons: [],status: APPROVED/REJECTED,active: true/false,createdAt: string,updatedAt: string,bodyParams: [],description: string} |

{

id: string,

message: string,

buttons: [],

status: APPROVED/REJECTED,

active: true/false,

createdAt: string,

updatedAt: string,

bodyParams: [],

description: string

}

| Plantilla inexistente |

Plantilla inexistente

| 404 |

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"}} |

{

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

Token incorrecto

| 400 |

400

| {"context": {"key": "Authorization","label": "headers.authorization","value":Bearer},"message": "Cannot find a channel associated with the public tokenBearer","path": ["headers.authorization"],"type": "Bad format"} |

{

"context": {

"key": "Authorization",

"label": "headers.authorization",

"value":Bearer

},

"message": "Cannot find a channel associated with the public tokenBearer",

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

}

¿Ha quedado contestada tu pregunta?