Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Este mensaje también tiene 2 placeholders, en este caso actuando de forma que {{1}} sirve para poder enviar el nombre de la persona contactando y {{2}} para enviar un link especial para cada persona.

Características

  1. Estos mensajes solo funcionan dentro de la plataforma WhatsApp

  2. Tienen un costo de envío por cada uno que se quiera enviar

  3. Deben ser pre-aprobados por WhatsApp para su funcionamiento, que normalmente lleva entre 1 y 5 días de aprobación. En caso de desaprobar, WhatsApp no suele dar ningún tipo de información de porqué.

  4. Cada template solo puede tener 1 mensaje pre-aprobado, es decir una “globa” de mensaje que será enviada al usuario final. Múltiples “globas” representan múltiples mensajes.

  5. Pueden contener opcionalmente placeholders de texto para customizar la experiencia (como descripto arriba). Pueden ser mensajes fijos sin ningún problema.

  6. Pueden tener múltiples idiomas pre-configurados, para poder elegir al momento de enviar el mismo, con que idioma se envía. No es necesario especificar todos los idiomas al momento de la pre-aprobación, se pueden ir agregando con el tiempo.

  7. Los textos una vez aprobados no pueden ser editados, y si necesita cambiar, se deberá enviar a pre-aprobar un nuevo texto.

  8. Tienen diferentes tipos, pero normalmente utilizamos “Account Update”. Podria ser que en ocasiones se deba utilizar otra categoría. Las conocidas al momento son las siguientes:

    1. Account update

    2. Alert update

    3. Scheduled update

    4. Automatic answer

    5. Problem resolution

    6. Payment update

    7. Personal Finance Update

    8. Reservation update

    9. Shipment update

    10. Ticket update

    11. Transport update

Proceso de aprobación

Al momento ningún proveedor ofrece una API para poder gestionar los HSM, lo cual implica que desde el Dashboard de Chat-Tonic no se pueden gestionar tampoco.

...

Infobip

Se debe gestionar mediante un ticket a soporte.

Clickatell

Desde el panel de control para el cliente se pueden gestionar la creación y verificación de estado de todos los HSM del cliente. Normalmente funciona sin problemas, pero ante un posible problema hay que levantar un ticket en el sistema de soporte de ellos.
Dashboard: https://messaging2.movile.com/

Soporte: https://wavyglobal.atlassian.net/ (solo hace falta crearse una cuenta con un mail de chat-tonic y al momento de enviar el ticket proveedor la mayor cantidad de información del cliente que se pueda)

Infobip

No posee ningún tipo de dashboard para realizar la gestión de HSMs. Y particularmente ni siquiera se puede resolver vía un ticket de soporte. Hay que pedir al responsable comercial asignado a la cuenta que realice el proceso de creación. Posteriormente, dependiendo del comercial, hay que chequear el estado de aprobación del HSM con el mismo responsable comercial.

Clickatell

Desconocido aún

Utilización dentro de Chat-Tonic

Envío de HSM

Una vez aprobado el HSM, automáticamente se puede proceder a la utilización del mismo dentro de Chat-Tonic. No hay que realizar ningún paso adicional.

Las vías para realizar esto son:

...

Integración con la API del proveedor directa: Método no recomendado, pero es posible si ya existe previamente por parte del cliente una integración que pretenden seguir manteniendo. Utilizado de esta forma el envío pierde algunas funcionalidades que podemos ofrecer a través de Chat-Tonic, descriptas debajo.

...

Integración con nuestra API: Muy similar a las APIs ofrecidas por los proveedores, y muchas veces aún más sencillas. La documentación de cómo enviar HSM puede ser encontrada aquí, en nuestra wiki pública.

...

GupShup

Desde el panel de control para el cliente se pueden gestionar la creación y verificación de estado de todos los HSM del cliente. También se puede gestionar esto via API con GupShup directamente.

Utilización dentro de Chat-Tonic

Envío de HSM

Una vez aprobado el HSM, automáticamente se puede proceder a la utilización del mismo dentro de Chat-Tonic. No hay que realizar ningún paso adicional.

Las vías para realizar esto son:

...

  1. Integración con la API del proveedor directa: Método no recomendado, pero es posible si ya existe previamente por parte del cliente una integración que pretenden seguir manteniendo. Utilizado de esta forma el envío pierde algunas funcionalidades que podemos ofrecer a través de Chat-Tonic, descriptas debajo.

  2. Integración con nuestra API: Muy similar a las APIs ofrecidas por los proveedores, y muchas veces aún más sencillas. La documentación de cómo enviar HSM puede ser encontrada aquí, en nuestra wiki pública.

  3. Subir un Excel en el Dashboard (sección HSM): Esta forma es bastante amigable para el cliente una vez que se tiene el entendimiento de cómo funcionan los HSM. Solo basta generar un Excel con ciertas columnas, y subirlo al sistema, para poder enviarlo. A continuación esta explicado el funcionamiento del Excel. Este documento será suficiente para poder generar un Excel modelo para cualquier HSM que se necesite enviar en cualquier cuenta.

    Se debe crear un Excel cuya primer fila debe tener todos los nombres de las columnas especificadas abajo. Aún cuando la columna este en blanco siempre.
    Adicionalmente el nombre de la planilla debe ser campaign. Revisar bien esto antes de subir el Excel, de lo contrario no se procesará. Y revisar que sea el nombre de la planilla (típicamente Sheet1). El nombre del archivo que se suba debe ser customizado, dado que posteriormente se usa dicho nombre como nombre de campaña de envío masivo, para el historial de HSM enviados. De esa forma, un archivo que se llame “AlertaSudestada-08-05-2020.xlsx” tendrá como nombre de campaña “AlertaSudestada-08-05-2020”.

    Columnas:

    • phone: el número de teléfono al cual enviar el HSM. El formato acepta teléfonos muy variados. Internamente Chat-Tonic aplica una limpieza donde básicamente elimina caracteres típicos que aparecen al escribir un número de teléfono. Por ejemplo, un teléfono: “+54 (911) 1234-5678” es transformado internamente como “5491112345678”. Normalmente se recomienda incluir en el teléfono toda la información internacional para garantizar poder enviar el HSM correctamente. Sobre todo necesario cuando se quiere enviar desde un teléfono de un país hacia otro país.

...

namespace: En el caso que el integrador sea Wavy, es un dato provisto por ellos que se deberá completar. En otro caso se deberá dejar en blanco.

    • elementName: El nombre del HSM que fue cargado. Suele ser un nombre que consta de letras, numeros, guiones y guiones bajo. Por ejemplo: recontacto, alerta_sudestada, confirmacion_envio_01

    • languageCode: El código de idioma con el cual se cargó el texto del HSM aprobado. Este puede variar desde un código de 5 dígitos o 2 dígitos. Por ejemplo: es-AR, es, en-US, en, pt-BR, pt. Este dato habrá que verificarlo en cada plataforma donde se cargó el HSM.

    • languagePolicy: Debe decir siempre DETERMINISTIC

    • flag: (opcional, puede dejarse en blanco) Una variable libre de uso interno a Chat-Tonic. Explicada debajo en Integración con un chatbot.

    • parameter: (opcional, puede dejarse en blanco) Representa el primer parámetro placeholder ({{1}}) a ser reemplazado en el mensaje. Dado que cada linea del Excel puede referir a un HSM template diferente, es importante conocer cuales son los parámetros que tiene cada uno, para poder incluir en el Excel todas las columnas de parameter que sean necesarias. El nombre de la columna siempre tiene que ser parameter sin importar si es el 1 o el 10. El Excel se lee en orden de columnas, y se asume que el la primer columna parameter pertenece al parámetro {{1}} y la décima columna parameter pertenece al parámetro {{10}}.

    • parameter

  1. Envío en conversaciones ya existentes: Dentro de la sección de Conversaciones es posible enviar HSMs directamente a un usuario del chatbot. Es requisito para hacer esto que el HSM deba estar cargado previamente en la sección HSM Templates (explicado abajo).

    Para acceder, se debe ir Conversaciones. Seleccionar una conversación de WhatsApp, y arriba de la caja de escribir texto aparecerá una pequeña flecha que al expandirse mostrará todos los HSM Templates cargados:

    Image Modified


    Una vez que se elija el HSM aparecerá un segundo popup para elegir el idioma a enviar:

    Image Modified


    Finalmente al elegir el idioma, aparecerá el texto del HSM con los campos a completar en caso de que existieran

    Image Modified


  2. Envío en conversaciones nuevas: Dentro de la sección de HSM será posible enviar HSM individuales utilizando los HSM Template cargados para simplificar el proceso. Esta funcionalidad esta aún en desarrollo.

Reporte de HSM

Todos los HSM que se envíen a través de Chat-Tonic utilizando cualquiera de los métodos mencionados anteriormente dejará un registro del estado de dicho HSM para su posterior seguimiento.

...

Existe la posibilidad de importar los HSMs aprobados en un cliente a nuestro Dashboard. Esta posibilidad, completamente opcional, habilita las siguientes funcionalidades del lado de Chat-Tonic:

  1. Activa el sistema de envío de HSM en conversaciones ya existentes como se indica mas arriba en el punto 4.

  2. Activa el sistema de envío de HSM individuales en conversaciones no existentes cómo se indica más arriba en el punto 5.

  3. En caso de querer enviarse un HSM a una conversación que este abierta, es decir, que aún esté dentro del periodo de gracia de 24hs para poder responder, Chat-Tonic envía un mensaje al usuario, ahorrando el costo del envío de HSM al cliente.

Por lo cual, el funcionamiento vía Excel o API funciona sin problemas aunque no estén cargados los HSM templates.

...

Explicación de criterios utilizados:

  1. El HSM se guarda en la conversación en la variable cxt.user.context.__hsm.elementName, con lo cual basta agregar esta variable junto con el nombre del HSM (en este caso terminar_onboarding) para poder procesar únicamente cuando se cumpla esta condición (adicionalmente cabe aclarar que al enviar un HSM la plataforma guarda en forma automática tambien la variable cxt.user.context.__hsm.parameters que contiene un array de los parametros enviados, para poder utilizarlos en el procesamiento del mensaje si llegara a necesitarse; conviene siempre utiliza la variable flag para estas situaciones, pero la posibilidad existe)

  2. La condición se carga con prioridad alta, de manera de poder obtener la respuesta del usuario, calcular la intención, y poder priorizar la respuesta ante un HSM antes que todo, dado que tenemos una sola chance de procesar la respuesta antes de que se borre el registro del envío del HSM.

  3. La condición de respuesta afirmativa no lleva intención, porque si bien podríamos agregar la intent:affirmative hay un conjunto de respuestas que no serán ni afirmativas, ni negativas, y fue opción del cliente forzar ir por el camino de respuesta positiva.

Ejemplo #2 - Botones

Una pregunta bastante típica es si los HSM pueden mostrar botones.

Hace poco tiempo WhatsApp agrego esta posibilidad, la cual aún no está integrada del lado de Chat-Tonic para los diferentes proveedores. Estamos trabajando activamente para poder implementarla.

...

“hsm”: que es un objeto de JSON donde se pasan los datos específicos del HSM que se seleccionó. Particularmente se pasan 2 datos que determinan el “template” a utilizar (namespace, y elementName), y luego se pasa parameters que son las variables que auto-completan el template. Por ej. Puede ser que un HSM sea algo “Bienvenido {1} a nuestro servicio de atención de WhatsApp”. Donde {1} se reemplaza por el primer parámetro del array, y así sucesivamente si hubiera mas. “flag”: es un string, opcional. Sirve para la comunicación hacia el bot de parámetros opcionales, para capturar datos que de otra manera el bot no podría recibir. Por ej: se podría usar para enviar el email de la persona que se esta contactando, para luego al procesar la respuesta del usuario al HSM, se pueda utilizar dicho email para algún flujo particular.
”agreeHSMConsent”: es un boolean, obligatorio, únicamente para GupShup. Mediante el mismo se indica a Chat-Tonic que el cliente ha obtenido el consentimiento de los usuarios para el envio de los HSMs, via el bot u otro medio

El siguiente es un ejemplo en CURL:

...

appCodename es el codename de aplicación, especificado por Chat-Tonic, y es particular para cada cliente

...

accountId es el id de la cuenta, especificado por Chat-Tonic, y es particular para cada cliente

...

platform especificado por Chat-Tonic, y es particular para cada cliente según la plataforma de WhatsApp que haya contratado:

  • whatsapp-clickatell para clientes de Clickatell

  • whatsapp-infobip para clientes de Infobip

  • whatsapp-movile para clientes de Wavy/Movile

...

Dentro de este objeto tambien se declara la mediaa enviar, se debe proveer un objeto como el siguiente:

Code Block
media = {
  from: 'URL',
  type: 'image'|'video'|'document'
  url: 'https://www.buildquickbots.com/whatsapp/media/sample/jpg/sample01.jpg'
}

“buttonParameter“: es un string, obligatorio solamente en los casos donde se requiera enviar un boton de tipo “call to action - url dinamico“, para esto primero debe crearse el template dentro de la plataforma de chat-tonic con este tipo de boton.

“flag”: es un string, opcional. Sirve para la comunicación hacia el bot de parámetros opcionales, para capturar datos que de otra manera el bot no podría recibir. Por ej: se podría usar para enviar el email de la persona que se esta contactando, para luego al procesar la respuesta del usuario al HSM, se pueda utilizar dicho email para algún flujo particular.

”agreeHSMConsent”: es un boolean, obligatorio, únicamente para GupShup. Mediante el mismo se indica a Chat-Tonic que el cliente ha obtenido el consentimiento de los usuarios para el envio de los HSMs, via el bot u otro medio

El siguiente es un ejemplo en CURL:

  • appCodename es el codename de aplicación, especificado por Chat-Tonic, y es particular para cada cliente, para poder autenticar las llamadas realizadas

...

languagejs

...

  • accountId es el id de la cuenta, especificado por Chat-Tonic, y es particular para cada cliente

  • platform especificado por Chat-Tonic, y es particular para cada cliente según la plataforma de WhatsApp que haya contratado:

    • whatsapp-gupshup para clientes de GupShup

    • whatsapp-infobip para clientes de Infobip

    • whatsapp-clickatell para clientes de Clickatell

    • whatsapp-360dialog para clientes de 360 Dialog

  • appToken (indicado en el header de Authorization) es especificado por Chat-Tonic, y es particular para cada cliente, para poder autenticar las llamadas realizadas

  • elementName: el nombre for the HSM, especificado por Chat-Tonic

Code Block
languagejs
curl -X POST \
https://chat-tonic.com/api/v1/:appCodename/:platform/:accountId/sendhsm \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer :appToken' \
-d '{ "id": "+54911", "hsm": { "namespace": "template_namespace", "elementName": "template_name", "parameters": [] }, "flag": "opcional"}’

...

“platform”: debe ser enviado en el querystring, indica el nombre de la plataforma que se está usando para enviar los HSMs, debe ser alguna de las siguientes opciones:

whatsapp-movilegupshup para cuentas de Wavy/Movile/SynchGupShup

whatsapp-infobip para cuentas de Infobip

whatsapp-clickatell para cuentas de InfobipClickatell

whatsapp-twiliomovile para cuentas de Twilio

whatsapp-gupshup para cuentas de GupShup

Wavy/Movile/Synch

“accountId”: debe ser enviado en el querystring, indica el ID de la cuenta que se está usando para enviar los HSMs

...

  • XLS: Con el siguiente formato de columnas:

    • A: "phone" / “id”

    • B: "namespace"

    • C: "elementName"

    • D: "languageCode"

    • E: "languagePolicy"

    • F: "flag"

    • G: “buttonParameter“

    • H: "media.from"

    • I: "media.type"

    • J: "media.url"

    • K: "parameter"

    • HL: "parameter"
      ...

      IMPORTANTE: Los "parameter" se van a enviar en el orden en el que se carguen, si la celda no tiene valor no se envia el parámetro.

      IMPORTANTE: Utilizar cabeceras en cada propiedad descripta para poder identificarlas.

      IMPORTANTE: El nombre de la sheet debe ser "campaign"

  • CSV: Separado por "," (comas) con el siguiente formato:

    "phone (o “id”), namespace, elementName, languageCode, languagePolicy, flag, parameter, parameter,...media.from, media.type, media.url, buttonParameter, parameter, parameter,...\n"


    IMPORTANTE: Los "parameter" se van a enviar en el orden en el que se carguen, si la celda no tiene valor no se envia el parámetro.

    IMPORTANTE: Utilizar cabeceras en cada propiedad descripta para poder identificarlas.

  • JSON: Un array de objetos con las propiedades:

    • phone / id

    • namespace

    • elementName

    • languageCode

    • languagePolicy

    • flag

    • parameters (array of string)

    ZIP, GZ, TAR: Cualquiera de los formatos anteriores pero comprimido. Ej: hsms.xlsx.ziplas propiedades:

    • phone / id

    • namespace

    • elementName

    • languageCode

    • languagePolicy

    • flag

    • parameters (array of string)

    • buttonParameter

    • media (object)

  • ZIP, GZ, TAR: Cualquiera de los formatos anteriores pero comprimido. Ej: hsms.xlsx.zip

Code Block
languagebash
curl --X POST \
'https://chat-tonic.com/api/v1/demo/hsm/campaign/upload?platform=:platform&accountId=:accountId' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer :userToken' \
--form 'upload=@"~/hsm_campaign.json"'

GET HSMs enviados

Para obtener ya sea un HSM enviado o una campaña de HSMs enviados mediante un archivo, se debe enviar, dentro del parametro query, el campo campaignId provisto en el response de la api donde se genero el envio.

Code Block
languagebash
curl --X POSTGET \
'https://chat-tonic.com/{{baseUrl}}/api/v1/demo/hsm/campaign/upload?platform=:platform&accountId=:accountId{{codename}}/hsm?query={"campaignId": "xxxxxxxxx"}' \
--Hheader 'AcceptAuthorization: application/json Bearer :userToken' \
--Hheader 'Content-Type: application/json' \
-H 'Authorization: Bearer :appToken' \
--form 'upload=@"~/hsm_campaign.json"'