...
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
Estos mensajes solo funcionan dentro de la plataforma WhatsApp
Tienen un costo de envío por cada uno que se quiera enviar
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é.
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.
Pueden contener opcionalmente placeholders de texto para customizar la experiencia (como descripto arriba). Pueden ser mensajes fijos sin ningún problema.
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.
Los textos una vez aprobados no pueden ser editados, y si necesita cambiar, se deberá enviar a pre-aprobar un nuevo texto.
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:
Account update
Alert update
Scheduled update
Automatic answer
Problem resolution
Payment update
Personal Finance Update
Reservation update
Shipment update
Ticket update
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:
...
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.
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 siempreDETERMINISTIC
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 deparameter
que sean necesarias. El nombre de la columna siempre tiene que serparameter
sin importar si es el 1 o el 10. El Excel se lee en orden de columnas, y se asume que el la primer columnaparameter
pertenece al parámetro{{1}}
y la décima columnaparameter
pertenece al parámetro{{10}}
.…
parameter
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:
Una vez que se elija el HSM aparecerá un segundo popup para elegir el idioma a enviar:
Finalmente al elegir el idioma, aparecerá el texto del HSM con los campos a completar en caso de que existieranEnví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:
Activa el sistema de envío de HSM en conversaciones ya existentes como se indica mas arriba en el punto 4.
Activa el sistema de envío de HSM individuales en conversaciones no existentes cómo se indica más arriba en el punto 5.
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:
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 casoterminar_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 variablecxt.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 variableflag
para estas situaciones, pero la posibilidad existe)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.
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 Clickatellwhatsapp-infobip
para clientes de Infobipwhatsapp-movile
para clientes de Wavy/Movile
...
Dentro de este objeto tambien se declara la media
a 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
...
language | js |
---|
...
accountId
es el id de la cuenta, especificado por Chat-Tonic, y es particular para cada clienteplatform
especificado por Chat-Tonic, y es particular para cada cliente según la plataforma de WhatsApp que haya contratado:whatsapp-gupshup
para clientes de GupShupwhatsapp-infobip
para clientes de Infobipwhatsapp-clickatell
para clientes de Clickatellwhatsapp-360dialog
para clientes de 360 Dialog
appToken
(indicado en el header deAuthorization
) es especificado por Chat-Tonic, y es particular para cada cliente, para poder autenticar las llamadas realizadaselementName
: el nombre for the HSM, especificado por Chat-Tonic
Code Block | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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 | ||
---|---|---|
| ||
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"' |