API-ISV-CHATTIGO

Integracion chattigo usando tu conexion de API-CLOUD.

API-ISV Connecto To BotChattigo

Nuestra API permite a los clientes ISV (Proveedor de Software Independiente) conectarse a BOT-CHATTIGO y configurar respuestas personalizadas dentro del bot. Esta solución permite a los ISV definir las respuestas que desean proporcionar a sus clientes y proporciona la estructura de datos necesaria para enviar mensajes directamente a WhatsApp, facilitando la comunicación sin problemas.

Novedades

Conexión ISV-BOT

La API facilita la conexión entre los ISV y BOT-CHATTIGO, permitiendo una interacción fluida.

Configuración de Respuestas

Los ISV pueden configurar las respuestas que desean que el bot entregue a sus clientes.

Manejo de Mensajes Inbound

Cuando los ISV reciben un mensaje entrante en WhatsApp, pueden enviarlo a nuestro endpoint después de un inicio de sesión exitoso.

Webhooks Personalizados

Los ISV tienen la capacidad de establecer sus propios webhooks en nuestra base de datos (Chattigo).

Procesamiento de Mensajes

Chattigo procesa los mensajes exactamente según la estructura que proviene de WhatsApp.

Entrega de Respuestas

La API proporciona la estructura de datos necesaria para enviar varios tipos de mensajes directamente a los clientes, incluyendo Mensajes de Plantilla, Mensajes de Texto, Mensajes de Contenido Multimedia, Mensajes de Reacción, Mensajes de Ubicación, Mensajes de Contacto y Mensajes Interactivos.

Flexibilidad

Los ISV pueden tomar decisiones basadas en la respuesta y decidir cómo manejarla.

Esta API brinda a los ISV la capacidad de personalizar y controlar las respuestas en sus interacciones con los clientes, al mismo tiempo que les proporciona la estructura esencial para la comunicación efectiva en WhatsApp en diversos formatos de mensajes.

Autenticación

Servicio para obtener el token de autenticación que debe ser usado en cada iteración. La vigencia es de 8 horas y 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. Para el servicio de mensajería utilizando la estructura de API Cloud de WhatsApp es necesario proveer una versión de la misma, en inicio se utilizarán las versiones 14.0 y 15.0, en la medida en que se vayan incorporando nuevas versiones por parte de meta, se iran incluyendo.

Para hacer un request a la ruta POST /login es necesario enviar el siguiente Json en el Body de la petición:

   {
       "username": "<user>",
       "password":"<password>"
   }

En caso satisfactorio se obtendrá una Response que contendrá el access_token necesario para realizar luego las peticiones necesarias con el Api.

   {
  "user": "<user>",
  "access": true,
  "access_token": "<token valid>"
}

Envío de Mensajeria a chattigo

Cuerpo del mensaje a recepcionar:

Para el caso de los mensajes inbound que quiera enviar a Chattigo para ser procesados por el BOT-CHATTIGO, aqui se encuentra en la documentación de Meta

Para enviarlos, realice una llamada POST /webhooks/inbound

La ruta PATCH /webhooks/outbound será el servicio para agregar o cambiar el endpoint que permitirá la recepción de las respuestas que provienen desde chattigo, para ello se debe enviar un Header de la siguiente manera:

   ["Authorization" : "<JWT>"]

En el Body será necesario introducir un payload con mínimo los siguientes datos:

{
  "waId": "<identificador del canal>",
  "externalWebhookIsvBot": "<URL segura HTTPS>"
}

Definición de Objeto

Fields Type Mandatory Descripción
waId String yes identificador del canal
externalWebhookIsvBot String yes URL del cliente que permite el despacho de mensajes outbound que provienen del bot

Response

StatusCode 200

{
  "waId": "<identificador del canal>",
  "externalWebhookIsvBot": "<URL segura HTTPS>"
}

A continuación exponemos un ejemplo de body de algunos de las respuestas que va a recibir de chattigo :

Plantillas

Para el caso del envío de plantillas recibira un payload como el siguiente:

{
  "messaging_product": "whatsapp",
  "to": "{{Recipient-WA-ID}}",
  "type": "template",
  "template": {
    "name": "hello_world",
    "language": {
      "code": "en_US"
    }
  }
}

Texto

Para el caso del envío de mensajes de texto recibira un payload como el siguiente:

{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "{{Recipient-Phone-Number}}",
  "type": "text",
  "text": {
    "preview_url": false,
    "body": "text-message-content"
  }
}

Multimedia

En API Cloud la mensajería de multimedia contiene todos los tipos de mensajes incluidos los stickers y los documentos.
Para el caso de mensajes de multimedia recibira un payload como el siguiente:

{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "{{Recipient-Phone-Number}}",
  "type": "image",
  "image": {
    "link": "http(s)://image-url"
  }
}

{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "{{Recipient-Phone-Number}}",
  "type": "document",
  "document": {
    "link": "http(s)://document-url"
  }
}
{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "{{Recipient-Phone-Number}}",
  "type": "sticker",
  "sticker": {
    "link": "http(s)://sticker-url"
  }
}

Se pueden recibir los tipos audio, document, image, sticker o video, para todos los casos solo se vera el cambio de referencia en el type de mensaje a enviar y la key en el payload.

Para todos los casos en la mensajería la respuesta satisfactoria será 200

Avisos de cierre de mensajeria por parte de bot-chattigo

Cuando las conversaciones por parte de chattigo finalizen, se enviara un aviso como este en conjunto a la respuesta de cierre.

{
  "chatBeenClosed":{
    "closed":true,
    "message":"El chat finalizo"
  }
}

Errores

Existen varios tipos de errores, algunos generales y otros específicos por cada endpoint a continuación se desglosan:

Errores Generales

Los endpoints que necesitan autorización por token presentan los siguientes errores

401 (Token incorrecto)

{
  "message": "JWT was invalid"
}

401 (Token con permisos insuficientes)

{
  "message": "unauthorized Access"
}

401 (Token vacio)

{
  "message": "token up for parsing was not passed through the header. Please read the API documentation at https://development.chattigo.com"
}

Errores específicos

POST /login

400 (Contraseña incorrecta)

{
"message": "invalid Password"
}

400 (Usuario incorrecto)

{
  "message": "unsupported get request. username ‘bad_login’ does not exist, or an unexpected error has occurred with your service provider"
}

PATCH /webhooks/inbound

400 (waId incorrecto en el payload de entrada)

{
  "message": "unsupported get request. Object with ID 'XXXXXXX' does not exist"
}