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

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