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

Response

Status Code 200

Errors

StatusCode 400 - Bad Request

StatusCode 401 - Unauthorized

Descripcion de propiedades

Fields Type Comentario
id Integer Max 450 caracteres
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

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

    • Body
   {
       "idMensaje": "<id>",
       "estado": "<OK | Fail>"
   }
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 Max 450 caracteres
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 Max 450 caracteres
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"
}
 

Response

Status Code 200

Errors

StatusCode 400 - Bad Request

StatusCode 500 - Internal Server Error

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 de Mensaje de Plantilla

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

  • Request

    • Header:
       ["Authorization" : "Bearer <JWT>"]
  • Body
   {
  "did": "521557928099784",
  "type": "HSM",
  "channel": "WHATSAPP",
  "messageTemplate": {
    "destinations": [
      {
        "destination": "5694570013459"
      }
    ],
    "message": {
      "template": {
        "namespace": "<namespace>",
        "elementName": "<templateName>",
        "header": {
          "parameters": [
            "header_parameter_1"
          ],
          "document": {
            "url": "https://upload.wikimedia.org/wikipedia/commons/c/c3/Arquivo.pdf",
            "type": "PDF",
            "caption": "Texto de prueba"
          }
        },
        "bodyParameters": [
          "XXXX-XXXXX-XXXX-1234",
          "200.000",
          "Mercado",
          "14/07/2020"
        ],
        "languagePolicy": "DETERMINISTIC",
        "languageCode": "pt_BR"
      }
    },
    "botAttention": false
  }
}

Response

Status Code 200

Errors

StatusCode 400 - Bad Request

StatusCode 401 - Unauthorized

Descripcion de propiedades

Fields Type Comentario
did String Numero Whatsapp
botAttention Boolean Indica si el mensaje es atendido por un BOT (opcional)
botAttention Integer Indica si el mensaje es por un agente (opcional)
messageTemplate Object Contiene la definicion del mensaje a enviar.
destinations Array Detalles sobre los identificadores de destino.
destination String Número de teléfono que recibirá el mensaje (el código de país y DDD son obligatorios).Ejemplos: 5519900001111, +5519900001111, +55 (19) 900001111.
message Object Detalles sobre el objeto MENSAJE que se enviará.
template Object Detalles sobre el objeto TEMPLATE que se enviará.
namespace String ID del namespace que será usado. NOTA: Los parámetros namespace y element_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.
elementName String Nombre del Template registrado y aprobado.
header Object Objetos del encabezado (header) con sus parámetros.
parameters Array Lista de parámetros que serán reemplazados en el texto del encabezado. Nota: En el caso de que esté presente el encabezado no debe tener título ni elemento alguno.
document Object Define un elemento de tipo documento.
url String URL del archivo multimedia. Usar únicamente con URLs HTTP/HTTPS.
type String Tipo de archivo multimedia (PDF).
caption String Titulo del documento.
bodyParameters Array La suma de todos los caracteres en el cuerpo, considerando campos fijos y dinámicos, está limitada a 1024 caracteres si el modelo registrado solo tiene el cuerpo. Está limitado a 160 caracteres si tiene un encabezado o pie de página.
languageCode String Codes: pt_BR, en, es, en_US, en_GB, pt_PT, es_AR, es_ES, es_MX, it, fr.