Directrices para las plantillas
El archivo fuente debe ser creado siguiendo las siguientes especificaciones:Formato de archivo
Solo se admiten archivos con la extensión.CSV.
Encabezado
La primera fila del archivo debe definir los nombres de las columnas (encabezado). Sigue estas reglas para el encabezado:- Evita los espacios en blanco en los nombres de las columnas.
- No uses caracteres especiales ni signos de puntuación (por ejemplo,
!, $, %, &, *, etc.). - Usa solo letras, números y guiones bajos (
_) si es necesario.
phone_number, customer_name, order_amount
Incorrecto: phone number, customer-name!, order#amount
Primera columna
La primera columna debe contener el identificador de cada destinatario: un número de teléfono o un BSUID. Para números de teléfono, es obligatorio incluir el código internacional sin el símbolo+ (por ejemplo, para un número en Ecuador, escribe PHONE_NUMBER).
Para el envío de plantillas de categoría AUTHENTICATION (OTP) no se puede utilizar BSUID; ese destinatario debe ir como número de teléfono. Si una fila con BSUID apunta a una plantilla AUTHENTICATION, esa fila se omite del envío sin afectar al resto del archivo.
Columnas restantes
Las otras columnas se usarán para los valores dinámicos de los parámetros (personalización de la plantilla).Ejemplo
Si tu plantilla contiene el siguiente contenido:El archivo CSV debe estar codificado en UTF-8.
Enviar HSM desde archivo
Opciones de carga de archivo
Existen dos formas de proporcionar el archivo CSV con la información de los destinatarios:- Usando una URL pública: Puedes proporcionar la URL al archivo CSV que esté disponible públicamente. En este caso, el cuerpo de la solicitud debe estar en formato JSON.
-
Subiendo el archivo: Alternativamente, puedes adjuntar el archivo CSV directamente a la solicitud. En este caso, el cuerpo de la solicitud debe estar en formato
multipart/form-data.
Parámetros del cuerpo
Ejemplos de solicitud
Por método de carga del archivo
Envío desde URL pública (JSON)
Envío desde URL pública (JSON)
Envío con archivo adjunto (multipart/form-data)
Envío con archivo adjunto (multipart/form-data)
Por tipo de plantilla
Cada ejemplo usa un archivo CSV publicado enfileUrl cuyas columnas coinciden con las indicadas en params.
Texto
Texto
Plantilla:
Hola {{1}}, tu pedido {{2}} ya está en camino.Imagen
Imagen
Video
Video
Documento
Documento
Carrusel
Carrusel
Cada tarjeta define su propio recurso de media en
mediaUrl y sus botones en buttonParameters. El campo cardIndex indica a qué tarjeta pertenece cada botón, empezando en 0.Por escenario
Estos ejemplos muestran el cuerpo JSON de la solicitud. Envíalo al mismo endpoint con el encabezadoContent-Type: application/json.
Botones de respuesta rápida que activan un workflow
Botones de respuesta rápida que activan un workflow
Cada botón con
payload.type igual a edge lleva al destinatario al workflow indicado en skillId. El texto de action debe coincidir con el texto del botón en la plantilla.Botón de URL dinámica
Botón de URL dinámica
El sufijo de la URL se toma de la columna del CSV indicada en
payload.param. Por ejemplo, si la plantilla define la URL https://tramites.ejemplo.com/{{1}}, cada destinatario recibe su propio enlace.Parámetro en el encabezado
Parámetro en el encabezado
Para plantillas con una variable en el encabezado de texto, indica la columna del CSV en
headerParameters.Dirigir la respuesta a un workflow
Dirigir la respuesta a un workflow
Con
actions.setSkill, la respuesta del destinatario se deriva al workflow indicado.Guardar datos del CSV en memoria y CRM
Guardar datos del CSV en memoria y CRM
Usa
{nombre_columna} como valor para tomar el dato de esa columna del CSV. setMemoryParams guarda los valores en la memoria del usuario, y crmParams los guarda en los campos del CRM.Envío programado
Envío programado
Con
date programas la campaña para una fecha y hora en UTC.Respuestas del envío
200 - Respuesta exitosa
200 - Respuesta exitosa
400 - Bad Request
400 - Bad Request
422 - Unprocessable Entity
422 - Unprocessable Entity
Estructura de params
Cada elemento en el arregloparams es un objeto que contiene:
- param: Número del parámetro en la plantilla (1, 2, 3…).
- column: Nombre de la columna en el archivo CSV de donde se extraerán los valores.
headerParameters usa la misma estructura, pero admite un solo elemento.
Estructura de buttonParameters
Cada elemento del arreglo configura un botón de la plantilla. Respuesta rápida (QUICK_REPLY):
- payload.type: Destino del botón.
edgeactiva un workflow yflowactiva un flow. - payload.action: Texto del botón. Debe coincidir con el texto definido en la plantilla.
- payload.skillId: ID del workflow que se activa. Requerido cuando
payload.typeesedge. - payload.flowId: ID del flow que se activa. Requerido cuando
payload.typeesflow. - payload.cardIndex: Posición de la tarjeta a la que pertenece el botón, empezando en
0. Solo para carruseles.
URL):
- param: Número del parámetro de la URL en la plantilla.
- payload.param: Columna del CSV con el valor que completa la URL.
Estructura de cards
Cada tarjeta del carrusel es un objeto con:- mediaUrl: URL pública de la imagen o el video de la tarjeta.
- params: Parámetros del cuerpo de la tarjeta, con la misma estructura que
params. Usa un arreglo vacío si la tarjeta no tiene parámetros. - buttonParameters: Botones de la tarjeta. Cada
payloaddebe incluircardIndex.