API HSM

Realiza envíos masivos a través de la API de WhatsApp Oficial.

Autenticación

Servicio para obtener el token de autenticación para 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.

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 HSM

Para el envío masivo de mensajes se requiere de un template autorizado por Facebook, el template debe ser habilitado en la plataforma. Al momento del envío se requiere integrar la siguiente estructura:

Path:

POST /inbound

  • Request

    • Header:
       ["Authorization" : "Bearer <JWT>"]
  • Body
   {
         "id": 542,
         "did": "521557928099784",
         "type": "HSM",
         "channel": "WHATSAPP",
         "idUser": 285,
         "hsm": {
             "destinations": [{
                   "destination": "5694570013459"                                                                                                              
             }],
             "namespace": "<namespace>",
             "template": "notificaciondecompra2",
             "parameters": [
                "XXXX-XXXXX-XXXX-1234",
                "200.000",
                "Mercado",
                "14/07/2020"
             ],
             "languageCode": "es",
             "botAttention": false,
             "attends":{
              "waitTime":1
             }
        }
   }

Response

Status Code 200

Errors

StatusCode 400 - Bad Request

StatusCode 401 - Unauthorized

Descripcion de propiedades

Fields Type Comentario
id Integer Identificador del mensaje
did String Numero Whatsapp
msisdn String Numero Whatsapp del cliente
content String Max 3000 caracteres
botAttention Boolean Indica si el mensaje es atendido por un BOT (opcional)
botAttention Integer Indica si el mensaje es por un agente (opcional)
template String Otorgado por su BSP
waitTime Integer Indica el tiempo de espera antes del cierre de chat max 1339, min 1 (opcional)

Envío de mensaje

Servicio que permite enviar mensajes una vez que se ha generado el envío de HSM y el cliente ha dado respuesta al mensaje. Cuando el cliente responde un HSM se abre una sesión de 24 horas para realizar una conversación, se requiere integrar la siguiente estructura:

Path

POST /inbound/message

  • Request

    • Header:
           ["Authorization" : "Bearer <JWT>"]
  • Body
{
   "id": "123123",
   "did": "56949321905",
   "msisdn": "56984643056",
   "type": "media",
   "channel": "WHATSAPP",
   "content": "Imagen chat",
   "name": "Johans Morales",
   "isAttachment": true,
   "attachment": {
       "mimeType": "image/png",
       "mediaUrl": "https://k8s.chattigo.com/files/chattigostorage/Captura-de-Pantalla-2019-06-04-a-la(s)-23.50.28.png"
   }
}
  • Response

    Status Code 200

Errors

StatusCode 400 - Bad Request

StatusCode 401 - Unauthorized

StatusCode 500 - Internal Server Error

Descripción de propiedades

Fields Type Comentario
id Integer Identificador del mensaje
did String Numero Whatsapp
msisdn String Numero Whatsapp del cliente
content String Max 3000 caracteres

Envío de multimedia

Servicio que permite enviar archivos multimedia (imágenes en JPG hasta 5 megas, PDF, Word, Excel y PPT hasta 20 megas) una vez que se ha generado el envío de HSM y el cliente ha dado respuesta al mensaje. Cuando el cliente responde un HSM se abre una sesión de 24 horas para realizar una conversación, se requiere integrar la siguiente estructura:

Path:

POST: /inbound/attach

  • Request

    • Header:
       ["Authorization" : "Bearer <JWT>"]
  • Body
  {
   "id": "<identificador>",
   "did": "<identificador del canal>",
   "msisdn": "<identificador del destino>",
   "type": "media",
   "channel": "WHATSAPP",
   "content": "<contenido del mensaje>",
   "isAttachment": true,
   "attachment": {
           "mediaUrl": "<url del multimedia>",
           "mimeType": "<tipo del multimedia>",
           "base64": "<multimedia encoded base64>",
           "fileName": "<NombreDelFichero.jpg>"
       }
  }
Campo Descripción
id Identificador
did Nro Whatsapp
msisdn Nro Whatsapp del cliente
content Max 3000 caracteres

Response

Status Code 200

Errors

StatusCode 400 - Bad Request

StatusCode 401 - Unauthorized

StatusCode 500 - Internal Server Error

Envio de notificación

Cada mensaje que se envía por medio de esta API, es posible notificar los eventos de Whatsapp a un servicio que pueda proveer el cliente, considerando la siguiente estructura:

Path:

POST /{URL https entregada por el cliente}

  • Header:
   ["Authorization" : "Bearer <JWT>"] //Opcional
  • Body
{
   "id": "<identificador>",
   "did": "<identificador del canal>",
   "msisdn": "<identificador del destino>",
   "type": "SENT|DELIVERY|READ|ANSWER|INVALID|SESSION",
   "channel": "WHATSAPP",
   "timestamp": "20193940560",
   "answer": "true|false",
   "nodo": "RECHAZO_TDC"
}
 

Object Notify

Fields Type Mandatory Descripción
id Integer yes Identificador del mensaje, para el type “SESSION” el id es interno de Chattigo
did String yes Número whatsapp asociado al envío HSM
msisdn String yes Número de contacto del cliente
type String yes Especifica el tipo de notificación generada
channel String yes Indica el canal que se está realizando la transacción
timestamp String yes Fecha del evento
answer boolean no Indica la respuesta de la alerta de fraude
nodo String no Indica el nodo desde donde se origina la respuesta , aplica sólo para BOT

Type Enum

SENT Indica que el mensaje fue enviado (un check)
DELIVERY Indica que el mensaje fue entregado al cliente (doble check)
READ Indica que el mensaje fue leído por el cliente (doble check azul)
ANSWER Indica la respuesta del cliente a una alerta definida, aplica sólo para BOT
SESSION Indica que existe ventana de 24 horas para enviar outbound sin HSM
INVALID Indica que el número de teléfono no es válido o no posee whatsapp

Envío Masivo de Mensajes Multimedia con Plantilla

Para el envío masivo de mensajes multimedia se requiere de un template autorizado por Facebook, el template debe ser habilitado en la plataforma. Al momento del envío se requiere integrar la siguiente estructura:

Path:

POST /inbound

  • Request

    • Header:
       ["Authorization" : "Bearer <JWT>"]
  • Body
{
  "did": "<identificador del canal>",
  "type": "HSM",
  "channel": "WHATSAPP",
  "messageTemplate": {
    "destinations": [
      {
        "destination": "<identificador del destino>"
      }
    ],
    "namespace": "<namespace>",
    "botAttention": "true|false",
    "name": "<nombre del template>",
    "language": {
      "policy": "DETERMINISTIC",
      "code": "<código del lenguaje>"
    },
    "components": [
      {
        "type": "header",
        "sub_type": "<tipo de archivo multimedia>",
        "parameters": [
          {
            "type": "<tipo de archivo multimedia>",
            "value": {
              "link": "<url del archivo multimedia>",
              "filename": "<nombre del archivo multimedia>"
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "<variable opcional>"
          }
          {
            "type": "text",
            "text": "<variable opcional>"
          }
          {
            "type": "text",
            "text": "<variable opcional>"
          }
          {
            "type": "text",
            "text": "<variable opcional>"
          }
        ]
      }
    ]
  }
}

Response

Status Code 200

Errors

StatusCode 400 - Bad Request

StatusCode 401 - Unauthorized

Descripcion de propiedades

Fields Type Comentario
did String Número de Whatsapp asociado al envío HSM
type String Valor no modificable
channel String Valor no modificable
destination String Número de teléfono que recibirá el mensaje (el código de país y DDD son obligatorios). Debe ir sin el símbolo “+” y completamente junto. Ejemplos: 5519900001111, 56999000222
namespace String ID del namespace que será usado. NOTA: Los parámetros namespace y name deben corresponder al Business Manager al cual el número de origen está asociado, o el mensaje tendrá una falla en el envío
botAttention Boolean Indica si el mensaje es atendido por un BOT
name String Nombre del Template registrado y aprobado
policy String Valor no modificable
code String Códigos: pt_BR, en, es, en_US, en_GB, pt_PT, es_AR, es_ES, es_MX, it, fr
type String Valor no modificable
sub_type String document / image / video
type String document / image / video (se repite el sub_type)
link String URL del archivo multimedia. Usar únicamente con URLs HTTP/HTTPS. El recurso debe contenter en su cabecera el “Content-Type”, a fin determinar el tipo de contenido será retornado
filename String Nombre que se le desea dar al archivo multimedia
parameters Array Lista de parámetros que serán reemplazados en el texto del template (solo en el caso de tenerlos). El arreglo de objetos debe mantener el formato tal como se muestra en el archivo json de ejemplo