Webhook Chattigo

Conecta canales externos a Chattigo, podrás gestionar tus mensajes de entrada y salida desde nuestra plataforma.

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
WHATSAPP OUTBOUND
FACEBOOK MASSIVE
MESSENGER
TWITTER
EMAIL
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
email 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
email 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