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": "Juan Gonzalez",
"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": "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": "Agent 1",
"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": "Agent 1",
"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": "Agent 1",
"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": "\"Agent 1\"",
"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 |
Obtener Contactos de CRM con teléfono
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
Obtener Contactos de CRM con identificador
Servicio para la obtención de contactos de CRM:
Path:
GET /webhook/chattigo/crm/identifier/{identifier}/campaign/{campaign}
Params
Parámetro | Descripción |
---|---|
identifier | Identificador 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