Consideraciones
El cliente debe solicitar un usuario y password con su KAM, indicando el nombre de la campaña o el nombre del cliente que hará uso de la API.
El cliente debe enviar el EndPoint para la salida de mensajes desde Chattigo, ver punto: Salida mensaje (Outbound).
Los canales que harán uso de la aplicación deben estar pre configurados en Chattigo. Los canales son el “DID” que se indica en la estructura json descrita más abajo.
Autenticación
Servicio para obtener el token de autenticación para ser usado en cada iteración. La vigencia es de 8 horas, es válido sólo para el usuario logueado. A continuación se presenta la estructura que requiere la api para obtener el JWT de autenticación.
Path:
POST /login
-
Request
- Body:
{
"username": "<User>",
"password": "<Password>"
}
- Response
- Body:
{
"access_token": "<JWT>"
}
Status Code 200
Errors
StatusCode 400 - Bad Request
StatusCode 401 - Unauthorized
Envío de mensaje
Servicio que permite el ingreso de mensajes del cliente a la plataforma para ser gestionados por los agentes conectados, considerar la siguiente estructura:
Path:
POST /inbound
-
Request
- Header:
["Authorization" : "Bearer <JWT>"]
- Body
{
"id": "<identificador>",
"did": "<identificador del canal>",
"msisdn": "<identificador del destino>",
"name": "<nombre>",
"type": "<media|text>",
"channel": "<WHATSAPP|FACEBOOK|WEBCHAT|MESSENGER>",
"content": "<contenido del mensaje>",
"isAttachment": "<true|false>",
"attachment": {
"mediaUrl": "<url del multimedia>",
"mimeType": "<tipo de multimedia>"
}
}
Response
Status Code 200
Errors
Servicio Asyn, respuesta siempre es exitosa
Definición de Objetos
Fields | Type | Mandatory | Descripción |
---|---|---|---|
id | Integer | no | Identificador del mensaje: Solo para salida, para entrada debe ser null |
did | String | yes | Identificador del canal. Ej: número de teléfono para WHATSAPP |
msisdn | String | yes | Identificador del destino. Ej: Número de teléfono del cliente final para WHATSAPP |
name | String | yes | Nombre de la persona que escribe el mensaje |
type | String | yes | Tipo de mensaje. media para los mensajes con adjuntos, text para mensajes simples |
channel | String | yes | Solo uno de estos valores: WHATSAPP|FACEBOOK|WEBCHAT|MESSENGER |
content | String | yes | Contenido del mensaje. Max 3000 caracteres |
campaignId | Integer | no | Identificador de la campaña |
isAttachment | Boolean | yes | Si el mensaje lleva adjunto o no |
attachment | Attachment | no | Estructura cuando el mensaje lleve adjunto |
attachment
Fields | Type | Mandatory | Descripción |
---|---|---|---|
mediaUrl | String | yes | Url del adjunto |
mimeType | String | yes | Tipo de multimedia. Ej: video, image |
Recepción de mensaje
Servicio que permite el despacho de mensajes a los clientes que están en interacción con los agentes, considerar la siguiente estructura:
Path:
POST /{URL https entregada por el cliente}
-
Request
- Body:
{
"id": "<identificador>",
"did": "<identificador del canal>",
"msisdn": "<identificador del destino>",
"name": "<nombre>",
"type": "<media|text>",
"channel": "<WHATSAPP|FACEBOOK|WEBCHAT|MESSENGER>",
"content": "<contenido del mensaje>",
"isAttachment": "<true|false>",
"attachment": {
"mediaUrl": "<url del multimedia>",
"mimeType": "<tipo de multimedia>"
}
}
Response
Status Code 200
Errors
StatusCode 400 - Bad Request
StatusCode 500 - Internal Server Error
Definición de Objetos
Fields | Type | Mandatory | Descripción |
---|---|---|---|
id | Integer | no | Identificador del mensaje: Solo para salida, para entrada debe ser null |
did | String | yes | Identificador del canal. Ej: número de teléfono para WHATSAPP |
msisdn | String | yes | Identificador del destino. Ej: Número de teléfono del cliente final para WHATSAPP |
name | String | yes | Nombre de la persona que escribe el mensaje |
type | String | yes | Tipo de mensaje. media para los mensajes con adjuntos, text para mensajes simples |
channel | String | yes | Solo uno de estos valores: WHATSAPP|FACEBOOK|WEBCHAT|MESSENGER |
content | String | yes | Contenido del mensaje. Max 3000 caracteres |
campaignId | Integer | no | Identificador de la campaña |
isAttachment | Boolean | yes | Si el mensaje lleva adjunto o no |
attachment | Attachment | no | Estructura cuando el mensaje lleve adjunto |
attachment
Fields | Type | Mandatory | Descripción |
---|---|---|---|
mediaUrl | String | yes | Url del adjunto |
mimeType | String | yes | Tipo de multimedia. Ej: video, image |
Agentes disponibles
Servicio que permite listar los agentes que están conectados en la plataforma mediante el identificador del canal.
Path:
GET /agents/{did}
Params
Parámetro | Descripción |
---|---|
did | identificador del canal |
-
Request:
- Header:
["Authorization": "Bearer <JWT>"]
-
Response:
- Body:
[
{
"id": 3089,
"name": "Oliver Hidalgo",
"address": "San Joaquin",
"maxChats": 5,
"active": true,
"idClient": 235,
"photo": "https://scontent-scl1-1.xx.fbcdn.net/v/t1.0-9/62233081_109210653670190_8130556263093239808_o.jpg?_nc_cat=110&_nc_oc=AQl3m4i3L4Mlqknsy_1N5ue_pe_9zam7YJzFs1trk8t9DFZrfcmaXEq6YN8sxIeBGPc&_nc_ht=scontent-scl1-1.xx&oh=85b5bbe37e0fc514f575a6d20368cdef&oe=5E00B220",
"status": "ONLINE",
"groups": [{
"id": 262,
"name": "contabilidad_general"
}]
},
{
"id": 3208,
"name": "Virgi Agente 7 ST",
"address": "Macul",
"maxChats": 5,
"active": true,
"idClient": 235,
"photo": "https://scontent-scl1-1.xx.fbcdn.net/v/t1.0-9/62233081_109210653670190_8130556263093239808_o.jpg?_nc_cat=110&_nc_oc=AQl3m4i3L4Mlqknsy_1N5ue_pe_9zam7YJzFs1trk8t9DFZrfcmaXEq6YN8sxIeBGPc&_nc_ht=scontent-scl1-1.xx&oh=85b5bbe37e0fc514f575a6d20368cdef&oe=5E00B220",
"status": "ONLINE",
"groups": [{
"id": 269,
"name": "Ingeniería Informática"
}]
},
{
"id": 3359,
"name": "Miguel Borges",
"address": " ",
"maxChats": 5,
"active": true,
"idClient": 6,
"photo": "",
"status": "ONLINE",
"groups": null
}
]
Status Code 200
Errors
StatusCode 400 - Bad Request
StatusCode 500 - Internal Server Error
Definición de Objetos
Fields | Type | Mandatory | Descripción |
---|---|---|---|
id | Integer | yes | Identificador del agente |
name | String | yes | Nombre del Agente |
address | String | yes | Ubicación física del agente |
maxChats | Integer | no | Máximo de atenciones |
active | boolean | no | Indica si el usuario está activo en sistema |
status | String Enum | yes | Estatus del agente |
photo | String | yes | Indica la ruta donde esta la foto del agente |
idClient | Integer | yes | Identificador único del cliente |
group | Object Group | yes | Grupo al cual pertenece el agente |
Status Enum
| LOGOUT | ONLINE | ALMUERZO | REUNIÓN | DESCANSO | Groups Enum
Fields | Type | Mandatory | Descripción |
---|---|---|---|
id | Integer | yes | Identificador único del grupo |
name | String | yes | Nombre del grupo |
Historial conversación
Servicio que permite obtener la conversación de un chat que fue atendido en la plataforma.
Path:
GET /history/messages/{idChat}
Params
Parámetro | Descripción |
---|---|
idChat | identificador de la interacción en Chattigo |
-
Request
- Header:
["Authorization" : "Bearer <JWT>"]
-
Response
- Body:
{
"id": 1945,
"idAgent": 385,
"agentName": "Johans Morales CHATTIGO",
"idContact": "56956139216",
"dateCreated": "2020-01-24T16:29:14.697",
"dateClosed": "2020-01-27T22:22:11.573",
"status": "CLOSED",
"channelType": "WEBCHAT",
"typify": "Cierre por inactividad",
"typeChat": "OUTBOUND",
"listMessage": [{
"id": 30258,
"dateCreated": "2020-01-27T22:22:13.060",
"content": "Le informamos su chat ha sido cerrado por inactividad, gracias por contactarnos.",
"state": "ENVIADO",
"idContact": "56956139216",
"typeMessage": "OUTBOUND",
"idAgent": 0,
"name": "ChatBot",
"isAttachment": false,
"attachment": {
"mediaUrl": null,
"mimeType": null
}
},
{
"id": 30249,
"dateCreated": "2020-01-27T22:12:07.787",
"content": "aun se encuentra disponible?",
"state": "ENVIADO",
"idContact": "56956139216",
"typeMessage": "OUTBOUND",
"idAgent": 385,
"name": "Johans Morales CHATTIGO",
"isAttachment": false,
"attachment": {
"mediaUrl": null,
"mimeType": null
}
},
{
"id": 30248,
"dateCreated": "2020-01-27T22:04:15.930",
"content": "Hola",
"state": "ENVIADO",
"idContact": "56956139216",
"typeMessage": "OUTBOUND",
"idAgent": 385,
"name": "Johans Morales CHATTIGO",
"isAttachment": false,
"attachment": {
"mediaUrl": null,
"mimeType": null
}
},
{
"id": 30247,
"dateCreated": "2020-01-27T21:53:12.120",
"content": "hola",
"state": "RECIBIDO",
"idContact": "56956139216",
"typeMessage": "INBOUND",
"idAgent": 0,
"name": "Jiovanny Cartaya",
"isAttachment": false,
"attachment": {
"mediaUrl": null,
"mimeType": null
}
},
{
"id": 30072,
"dateCreated": "2020-01-24T16:29:15.110",
"content": "Estimado Jiovanny Cartaya,\r\n\r\nLe informamos que su compra de sus 56956139216 jiova, por un monto de prueba, fue realizada con éxito y llegará el día Desarrollo",
"state": "ENVIADO",
"idContact": "56956139216",
"typeMessage": "MASSIVE",
"idAgent": 385,
"name": "\"Johans Morales CHATTIGO\"",
"isAttachment": false,
"attachment": {
"mediaUrl": null,
"mimeType": null
}
}
]
}
Status Code 200
Errors
StatusCode 400 - Bad Request
StatusCode 404 - Not Found
StatusCode 500 - Internal Server Error
Definición de Objetos
Fields | Type | Mandatory | Descripción |
---|---|---|---|
id | Integer | yes | Identificador del Chat |
idAgent | Integer | yes | Identificador del agente |
agentName | String | yes | Nombre del Agente que finalizo el Chat |
idContact | String | yes | Identificador del Cliente final |
dateCreated | Date | yes | Fecha de inicio del Chat |
dateClosed | Date | yes | Fecha de cierre del Chat |
status | String Enum | yes | Estatus del Chat |
channelType | String Enum | yes | Indica el tipo de canal |
typify | String | yes | Indica la taxonomia de la tipificacion |
typeChat | String Enum | yes | Tipo de Chat |
listMessage | Object Message | yes | Lista de mensajes que se produjo en el Chat |
Enum
Status | ChannelType | TypeChat |
---|---|---|
CLOSED | WEBCHAT | INBOUND |
OUTBOUND | ||
MASSIVE | ||
MESSENGER | ||
HANGOUTS | ||
Object Message |
Fields | Type | Mandatory | Descripción |
---|---|---|---|
id | Integer | yes | Identificador del Chat |
dateCreated | Date | yes | Fecha del Mensaje |
content | String | yes | Contenido del mensaje. Max 3000 caracteres |
state | String Enum | yes | Estado del Mensaje |
idContact | String | no | Identificador del Cliente final |
typeMessage | String Enum | yes | Tipo del Mensaje |
idAgent | Integer | no | Identificador del agente |
name | String | yes | Nombre del usuario que envía el mensaje |
isAttachment | Boolean | yes | Tipo de Chat |
attachment | Object Attachment | no | Lista de mensajes que se produjo en el Chat |
Enum
state | TypeMessage |
---|---|
RECIBIDO | INBOUND |
ENVIADO | OUTBOUND |
MASSIVE |
Attachment Object
Fields | Type | Mandatory | Descripción |
---|---|---|---|
mediaUrl | String | no | Url del archivo |
mimeType | String | no | tipo del archivo |
Cierre chat
Cuando un CHAT es finalizado por un agente o por un BOT el sistema permite notificar por medio de este servicio la conversación generada y su metadata asociada.
Path:
POST /{URL https entregada por el cliente}
-
Request:
- Body
{
"id": 14034147,
"idClient": 6,
"createdAt": "2020-02-17T19:39:58.470+0000",
"endedAt": "2020-02-17T21:50:24.670+0000",
"type": "INBOUND",
"contactName": "Oliver Hidalgo",
"state": "CLOSED",
"messages": [{
"id": 177037694,
"content": "Estimado, Demo Multicanal le informa que su chat ha sido cerrado por inactividad.\nGracias por contactarnos.",
"type": "OUTBOUND",
"name": "ChatBot",
"createdAt": "2020-02-17T21:50:24.813+0000",
"attachment": {}
},
{
"id": 100999609,
"content": "\n https://api-ui.chattigo.com/attachments/20191015213857_formato.PNG",
"type": "OUTBOUND",
"name": "Johnathan Vargas Hernandez",
"createdAt": "2019-10-16T00:21:04.367+0000",
"attachment": {
"url": "https://api-ui.chattigo.com/attachments/20191015213857_formato.PNG",
"mimeType": "image/png"
}
},
{
"id": 177002529,
"content": "CHAT ASIGNADO A AGENTE Oliver Hidalgo",
"type": "NOTIFICATION",
"name": "ChatBot",
"createdAt": "2020-02-17T21:18:32.187+0000",
"attachment": {}
},
{
"id": 176971135,
"content": "mensaje interno",
"type": "INTERNAL",
"name": "supervisor-fluid",
"createdAt": "2020-02-17T20:52:46.040+0000",
"attachment": {}
},
{
"id": 176896717,
"content": "Hola",
"type": "INBOUND",
"name": "Oliver Hidalgo",
"createdAt": "2020-02-17T19:40:40.383+0000",
"attachment": {}
}
],
"from": {
"id": 27,
"type": "WHATSAPP",
"did": "56964282200",
"guid": ""
},
"destination": {
"id": "OH",
"msisdn": "56984643056",
"name": "Oliver",
"lastName": "Hidalgo",
"phone": "56984643050",
"email": "ohidalgo@chattigo.com",
"campo6": "chattigo",
"campo7": null,
"campo8": null,
"campo9": null,
"campo10": null
},
"typification": {
"id": 33146,
"description": "Cierre por inactividad",
"agentName": "Oliver Hidalgo",
"userName": "ohidalgo@chattigo.com",
"parentKey": null,
"parentId": null,
"userId": 807,
"product": null,
"category": null,
"status": "1"
},
"chatLogs": [{
"id": 293988834,
"timestamp": "2020-04-20T13:35:54.327",
"status": "NUEVA",
"idMessage": 0,
"idAgent": null,
"idGroup": null
},
{
"id": 293988836,
"timestamp": "2020-04-20T13:35:54.390",
"status": "MESSAGE INBOUND",
"idMessage": 217147581,
"idAgent": 0,
"idGroup": null
},
{
"id": 295144491,
"timestamp": "2020-04-20T23:13:26.170",
"status": "CLOSED",
"idMessage": null,
"idAgent": null,
"idGroup": null
}
],
"campaign": {
"id": 12,
"name": "Demo Multicanal"
}
}{
"id": 14034147,
"idClient": 6,
"createdAt": "2020-02-17T19:39:58.470+0000",
"endedAt": "2020-02-17T21:50:24.670+0000",
"type": "INBOUND",
"contactName": "Oliver Hidalgo",
"state": "CLOSED",
"messages": [{
"id": 177037694,
"content": "Estimado, Demo Multicanal le informa que su chat ha sido cerrado por inactividad.\nGracias por contactarnos.",
"type": "OUTBOUND",
"name": "ChatBot",
"createdAt": "2020-02-17T21:50:24.813+0000",
"attachment": {}
},
{
"id": 100999609,
"content": "\n https://api-ui.chattigo.com/attachments/20191015213857_formato.PNG",
"type": "OUTBOUND",
"name": "Johnathan Vargas Hernandez",
"createdAt": "2019-10-16T00:21:04.367+0000",
"attachment": {
"url": "https://api-ui.chattigo.com/attachments/20191015213857_formato.PNG",
"mimeType": "image/png"
}
},
{
"id": 177002529,
"content": "CHAT ASIGNADO A AGENTE Oliver Hidalgo",
"type": "NOTIFICATION",
"name": "ChatBot",
"createdAt": "2020-02-17T21:18:32.187+0000",
"attachment": {}
},
{
"id": 176971135,
"content": "mensaje interno",
"type": "INTERNAL",
"name": "supervisor-fluid",
"createdAt": "2020-02-17T20:52:46.040+0000",
"attachment": {}
},
{
"id": 176896717,
"content": "Hola",
"type": "INBOUND",
"name": "Oliver Hidalgo",
"createdAt": "2020-02-17T19:40:40.383+0000",
"attachment": {}
}
],
"from": {
"id": 27,
"type": "WHATSAPP",
"did": "56964282200",
"guid": ""
},
"destination": {
"id": "OH",
"msisdn": "56984643056",
"name": "Oliver",
"lastName": "Hidalgo",
"phone": "56984643050",
"email": "ohidalgo@chattigo.com",
"campo6": "chattigo",
"campo7": null,
"campo8": null,
"campo9": null,
"campo10": null
},
"typification": {
"id": 33146,
"description": "Cierre por inactividad",
"agentName": "Oliver Hidalgo",
"userName": "ohidalgo@chattigo.com",
"parentKey": null,
"parentId": null,
"userId": 807,
"product": null,
"category": null,
"status": "1"
},
"chatLogs": [{
"id": 293988834,
"timestamp": "2020-04-20T13:35:54.327",
"status": "NUEVA",
"idMessage": 0,
"idAgent": null,
"idGroup": null
},
{
"id": 293988836,
"timestamp": "2020-04-20T13:35:54.390",
"status": "MESSAGE INBOUND",
"idMessage": 217147581,
"idAgent": 0,
"idGroup": null
},
{
"id": 295144491,
"timestamp": "2020-04-20T23:13:26.170",
"status": "CLOSED",
"idMessage": null,
"idAgent": null,
"idGroup": null
}
],
"campaign": {
"id": 12,
"name": "Demo Multicanal"
}
}
Response
Status Code 200
Errors
Servicio reintenta cinco veces, luego descarta la petición
Definición de Objetos
Request
Fields | Type | Descripción |
---|---|---|
id | Integer | Identificador del chat generado por el cliente en la plataforma de Chattigo |
idClient | Integer | Identificador del cliente |
createdAt | Integer | Indica la fecha en horario UTC que se creo el chat, |
endedAt | Integer | Indica la fecha en horario UTC que el chat fue cerrado |
type | String | Tipo de chat INBOUND/OUTBOUND |
contatcName | String | Nombre del cliente |
state | String | Corresponde al estado del chat (CLOSED) |
messages | Array: Messages | Lista de mensaje que se genero en el chat |
from | From | Indica el canal donde se origina la conversación |
destination | Destination | Corresponde a los datos del cliente |
typificaction | Typificaction | Indica el tipo de cierre asignado al chat |
chatLogs | Array: ChatLog | Listado de logs relacionados al chat |
campaign | Campaign | Datos asociados a la campaña de atención |
tz_offset | String | Indica la diferencia horaria |
Messages
Fields | Type | Descripción |
---|---|---|
id | Integer | Identificador del mensaje: Solo para salida, para entrada debe ser null |
content | String | Contenido del mensaje. Max 3000 caracteres |
type | Enum | Tipo de mensaje |
name | String | Nombre de quien escribe el mensaje |
createdAt | Integer | Fecha de envío del mensaje |
attachment | Attachment | Adjunto del mensaje |
Attachment
Fields | Type | Descripción |
---|---|---|
mediaUrl | String | Url del adjunto |
mimeType | String | Tipo de multimedia. Ej: video|image |
Type Enum
type | Descripción |
---|---|
INBOUND | corresponde al mensaje que envía el cliente |
OUTBOUND | corresponde al mensaje que envía el agente o el bot |
INTERNAL | corresponde a un mensaje interno del supervisor |
NOTIFICATION | corresponde a una notificación generada en la plataforma |
From
Fields | Type | Descripción |
---|---|---|
id | Integer | Identificador de canal de origen |
did | String | DID de canal de origen |
description | String | Descripción de canal de origen |
guid | String |
Destination
Fields | Type | Descripción |
---|---|---|
msisdn | String | Identificador de cliente |
name | String | Nombre de cliente |
lastName | String | Apellido de cliente |
phone | String | Teléfono de cliente |
String | Correo de cliente | |
id | String | ID de cliente dentro del sistema |
campo6 | String | Campo 6 generico |
campo7 | String | Campo 7 genérico |
campo8 | String | Campo 8 genérico |
campo9 | String | Campo 9 genérico |
campo10 | String | Campo 10 generico |
Typificaction
Fields | Type | Descripción |
---|---|---|
id | String | identificador de la tipificación |
parentKey | String | |
parentId | String | |
description | String | Descripcion de tipificación |
agentName | String | Nombre de Agente |
status | String | Estado de Chat relacionado a tipificación |
userId | Integer | ID de usuario |
userName | String | Nombre de usuario |
product | String | |
category | String |
Campaign
Fields | Type | Descripción |
---|---|---|
Id | Integer | Id de campaña |
Name | String | Nombre de campaña |
ChatLog
Fields | Type | Descripción |
---|---|---|
id | Integer | Id de campaña |
timestamp | Date | Fecha del evento |
status | String | Estado |
idMessage | Integer | Identificador del mensaje relacionado |
idAgent | Integer | Identificador del agente relacionado |
idGroup | Integer | Identificador del grupo |
Obtener Contactos de CRM
Servicio para la obtención de contactos de CRM:
Path:
GET /webhook/chattigo/crm/phone/{phone}/campaign/{campaign}
Params
Parámetro | Descripción |
---|---|
phone | Msisdn del contacto |
campaign | Identificador de la campaña |
-
Request
- Header:
["Authorization" : "<JWT>"]
-
Response
- Body:
[
{
"id": "ejemplo12345",
"name": "namePrueba",
"lastName": "lastName Prueba",
"email": "mail@mail.com",
"phone": "5491133332211",
"campo6": "ejemplo campo6",
"campo7": "ejemplo campo7",
"campo8": "ejemplo campo8",
"campo9": "ejemplo campo9",
"campo10": "ejemplo campo10"
}
]
Errors StatusCode 400 - Bad Request
StatusCode 500 - Internal Server Error
Creacion de contacto en CRM
Servicio para crear contacto en CRM de chattigo:
Path:
POST /webhook/chattigo/crm/create
- Request
- Header:
["Authorization" : "<JWT>"]
- Body:
[
{
"id": "12345",
"name": "namePrueba",
"lastName": "lastName Prueba",
"email": "mail@mail.com",
"phone": "5491133332211",
"campo6": "ejemplo campo6",
"campo7": "ejemplo campo7",
"campo8": "ejemplo campo8",
"campo9": "ejemplo campo9",
"campo10": "ejemplo campo10",
"idCampaign": 2246
}
]
Definición de Objeto
Fields | Type | Mandatory | Descripción |
---|---|---|---|
id | String | yes | Identificador en CRM chattigo ej: telefono |
name | String | yes | Nombre del contacto |
String | yes | Email del contacto | |
phone | String | yes | Telefono del contacto |
campo6 | String | no | Libre para cualquier tipo de informacion |
campo7 | String | no | Libre para cualquier tipo de informacion |
campo8 | String | no | Libre para cualquier tipo de informacion |
campo9 | String | no | Libre para cualquier tipo de informacion |
campo10 | String | no | Libre para cualquier tipo de informacion |
idCampaign | Int | yes | Id campana asociada al contacto |
Nota de uso: El valor de los parametros definidos en el anterior json, son ejemplo, todos los campos son editables.
-
Response
- Body:
[
{
"code": 200,
"msg": "Updated"
}
]
Errors
StatusCode 400 - Bad Request
StatusCode 500 - Internal Server Error