Saltar al contenido

Webhook Chattigo

Conecta canales externos a Chattigo y gestiona tus mensajes de entrada y salida desde la plataforma.

Consideraciones

  • El cliente debe solicitar un usuario y contraseña 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 Recepción de mensaje).
  • Los canales que harán uso de la aplicación deben estar preconfigurados en Chattigo. Los canales son el DID indicado en la estructura JSON descrita a continuación.

Autenticación

Servicio para obtener el token de autenticación usado en cada iteración. Vigencia de 8 horas, válido solo para el usuario logueado.

Endpoint: POST /login

Body:

{
  "username": "<User>",
  "password": "<Password>"
}

Respuesta (200):

{
  "access_token": "<JWT>"
}

Errores:

CódigoCaso
400Bad Request
401Unauthorized

Envío de mensaje

Servicio que permite el ingreso de mensajes del cliente a la plataforma para ser gestionados por los agentes conectados.

Endpoint: POST /inbound

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

Respuesta (200):

Servicio asíncrono — la respuesta siempre es exitosa.

Definición de objetos:

CampoTipoObligatorioDescripción
idIntegerNoIdentificador del mensaje. Solo para salida; para entrada debe ser null.
didStringIdentificador del canal. Ej: número de teléfono para WHATSAPP.
msisdnStringIdentificador del destino. Ej: número de teléfono del cliente final.
nameStringNombre de la persona que escribe el mensaje.
typeStringmedia para adjuntos, text para mensajes simples.
channelStringWHATSAPP|FACEBOOK|WEBCHAT|MESSENGER.
contentStringContenido del mensaje. Máximo 3000 caracteres.
campaignIdIntegerNoIdentificador de la campaña.
isAttachmentBooleanIndica si el mensaje lleva adjunto.
attachmentAttachmentNoEstructura cuando el mensaje lleva adjunto.

attachment:

CampoTipoObligatorioDescripción
mediaUrlStringURL del adjunto.
mimeTypeStringTipo 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.

Endpoint: POST /{URL https entregada por el cliente}

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

Errores:

CódigoCaso
400Bad Request
500Internal Server Error

La definición de objetos es idéntica a la de Envío de mensaje.

Agentes disponibles

Servicio que permite listar los agentes conectados en la plataforma mediante el identificador del canal.

Endpoint: GET /agents/{did}

Params:

ParámetroDescripción
didIdentificador del canal.

Header:

["Authorization": "Bearer <JWT>"]

Respuesta (200):

[
  {
    "id": 3089,
    "name": "Juan Gonzalez",
    "address": "San Joaquin",
    "maxChats": 5,
    "active": true,
    "idClient": 235,
    "photo": "https://...",
    "status": "ONLINE",
    "groups": [{ "id": 262, "name": "contabilidad_general" }]
  }
]

Definición de objetos:

CampoTipoObligatorioDescripción
idIntegerIdentificador del agente.
nameStringNombre del agente.
addressStringUbicación física del agente.
maxChatsIntegerNoMáximo de atenciones.
activeBooleanNoIndica si el usuario está activo en sistema.
statusString EnumEstado del agente.
photoStringRuta de la foto del agente.
idClientIntegerIdentificador único del cliente.
groupObject GroupGrupo al cual pertenece el agente.

Status Enum:

LOGOUTONLINEALMUERZOREUNIÓNDESCANSO

Groups Enum:

CampoTipoObligatorioDescripción
idIntegerIdentificador único del grupo.
nameStringNombre del grupo.

Obtener contactos de CRM con teléfono

Servicio para la obtención de contactos de CRM.

Endpoint: GET /webhook/chattigo/crm/phone/{phone}/campaign/{campaign}

Params:

ParámetroDescripción
phoneMsisdn del contacto.
campaignIdentificador de la campaña.

Header:

["Authorization" : "<JWT>"]

Respuesta (200):

[
  {
    "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"
  }
]

Errores:

CódigoCaso
400Bad Request
500Internal Server Error

Obtener contactos de CRM con identificador

Servicio para la obtención de contactos de CRM por identificador.

Endpoint: GET /webhook/chattigo/crm/identifier/{identifier}/campaign/{campaign}

Params:

ParámetroDescripción
identifierIdentificador del contacto.
campaignIdentificador de la campaña.

Header:

["Authorization" : "<JWT>"]

Respuesta (200):

[
  {
    "id": "ejemplo12345",
    "name": "namePrueba",
    "lastName": "lastName Prueba",
    "email": "mail@mail.com",
    "phone": "5491133332211"
  }
]

Errores:

CódigoCaso
400Bad Request
500Internal Server Error

Creación de contacto en CRM

Servicio para crear contacto en CRM de Chattigo.

Endpoint: POST /webhook/chattigo/crm/create

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

CampoTipoObligatorioDescripción
idStringIdentificador en CRM Chattigo. Ej: teléfono.
nameStringNombre del contacto.
emailStringEmail del contacto.
phoneStringTeléfono del contacto.
campo6campo10StringNoLibres para cualquier tipo de información.
idCampaignIntID de la campaña asociada al contacto.
Los valores del JSON son de ejemplo; todos los campos son editables.

Respuesta (200):

[
  {
    "code": 200,
    "msg": "Updated"
  }
]

Errores:

CódigoCaso
400Bad Request
500Internal Server Error