Skip to main content
Utiliza esta función para enviar plantillas de forma masiva a tus clientes. La API se encargará de la entrega a los destinatarios desde un archivo basado en columnas. Enviar plantillas de forma masiva te permite enviar una plantilla predefinida con diferentes valores relacionados con cada cliente, de manera que puedas seleccionar información dinámica desde una fuente como un archivo, para automatizar y enviar tu campaña fácilmente.

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.
Correcto: 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 sería:
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:
  1. 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.
  2. 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

Por tipo de plantilla

Cada ejemplo usa un archivo CSV publicado en fileUrl cuyas columnas coinciden con las indicadas en params.
Plantilla: Hola {{1}}, tu pedido {{2}} ya está en camino.
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 encabezado Content-Type: application/json.
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.
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.
Para plantillas con una variable en el encabezado de texto, indica la columna del CSV en headerParameters.
Con actions.setSkill, la respuesta del destinatario se deriva al workflow indicado.
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.
Con date programas la campaña para una fecha y hora en UTC.

Respuestas del envío


Estructura de params

Cada elemento en el arreglo params 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. edge activa un workflow y flow activa 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.type es edge.
  • payload.flowId: ID del flow que se activa. Requerido cuando payload.type es flow.
  • payload.cardIndex: Posición de la tarjeta a la que pertenece el botón, empezando en 0. Solo para carruseles.
Para obtener el skillId de un workflow, pasa el cursor sobre el nombre del workflow en Brain Studio. Se mostrará un tooltip con el ID correspondiente.
URL dinámica (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 payload debe incluir cardIndex.

Estructura de actions