Ir al contenido principal

Crear una campaña automática

Actualizado hace más de 8 meses

Las campañas automáticas te permitirán automatizar el envio de comunicaciones o notificaciones a tus clientes, cuando cumplan con ciertas caracteristicas o condiciones que se producen de manera repetitiva.

Desde la sección Campañas - Automáticas - Crear campaña podrás crear el flujo de condiciones combinando grupos de contacto y mensajes.

Elementos del constructor de campañas

ENTRADA

Audiencia: es un nodo de entrada. Aquí podrás combinar con grupos y filtros las condiciones con las que debe cumplir tu destinatario para que ese trigger automático sea enviado.

  • Configura un nombre a este nodo y selecciona a qué grupos y con qué filtros debe coincidir el destinatario

  • Haz clic en [Guardar]

Inyectar: Aquí podrás integrar por API de manera dinámica y en tiempo real contactos desde otros sistemas para que se le ejecute la campaña automatizada.

  • Configura un nombre a este nodo.

  • Haz clic en [Guardar].

Una vez que guardes la campaña automatizada se le va a asignar un endpoint al nodo que luego vas a poder copiar y utilizar.

Para utilizar este endpoint debes configurar tu llamado a la API de la siguiente manera.

URL: https://api.convos.la/consumer/webhooks/<ID>
METHOD: POST
HEADERS:
X-Tenant: {YourXTenant}
Authorization: Bearer {YourToken}
Content-Type: application/json
Accept: application/json

BODY
{
"cellphone": "<Cellphone, example: +5491100000000>",
}

CONTROLES

Condición: el nodo de tipo condición permite controlar el flujo de una campaña. Dado una condición de filtros, el flujo continúa por el camino verdadero, o caso contrario por el camino falso.

Test A/B: el nodo Test A/B se utiliza para dividir la audiencia hasta en cuatro grupos y mostrarles diferentes caminos de conversación para evaluar cuál es más efectivo.

ACCIONES

Mensaje: es un nodo de acción. Aquí deberas seleccionar la plantilla que deberá enviarse cuando el usuario cumpla con las condiciones seleccionadas en el nodo de Audiencia.

Tags: sirven para asignar etiquetas a contactos o conversaciones para luego poder filtrar sobre ellos y mantenerlos clasificados.

Campos: sirve para guardar datos en los perfiles de contacto.

Gestión de contacto: es un nodo de acción. Puedes decidir si los usuarios, después de haber recibido la plantilla, deben ser segmentados en un nuevo grupo. Aquí deberas seleccionar a qué grupo copiarlos o moverlos.

Webhook: el nodo de webhook es un componente flexible que permite enviar peticiones a endpoints para notificaciones y consumo externo.

Debes configurar:

URL: <URL de la API destino>.

METHOD: Puedes configurar el verbo HTTP necesario para la comunicación (POST, GET, PUT, PATCH, DELETE)

HEADERS: Puedes configurar los headers necesarios para la integración de los sistemas.

BODY: Puedes configurar el JSON que tu API necesite para la integración de los sistemas.

Dentro del body puede utilizar datos dinámicos que vayas colectando en el diálogo o datos que ya tenga el contacto en el sistema.

En el próximo ejemplo vamos a utilizar una variable de ejemplo llamada rating, donde podríamos preguntarle al cliente que nos califique el servicio que estamos brindando.

{
name: "{{contact.name}}",
campo_personalizado_1: "{{contact.field_1}}",
rating: {{rating}},
... (puedes agregar los campos que necesites)
}

Dentro del body puede utilizar datos dinámicos del contacto en el sistema.

{ name: "{{contact.name}}", campo_personalizado_1: "{{contact.field_1}}", ... (puedes agregar los campos que necesites) }

Código: es un nodo que permite dar solución a ideas o necesidades avanzadas. Este nodo permite escribir código de programación en JavaScript, dicho esto podrías desarrollar un código que dependiendo tus necesidades en ciertos momentos del diálogo puedas interactuar con API externas, lógicas avanzadas, generación de mensajes dinámicas, etc.

Por otro lado, vas a tener a disposición los datos que vayan solicitando al cliente con los nodos de pregunta, también podemos utilizar los datos del contacto que ya existen en el sistema de Convos.

Para finalizar el script se tiene que llamar a la función output, dicha función finaliza el nodo código y le indica al sistema diferentes acciones.

output({
state: {
wait: false
},
variables: {},
messages: []
})

En caso de que necesites enviar mensajes, puedes agregar una key messages con las cantidades de mensajes que tu proceso necesite.

Ejemplos de mensajes de texto simple.

output({
state: {
wait: false
},
variables: {},
messages: [
{
type: 'text',
text: {
body: `Hola`,
},
},
{
type: 'text',
text: {
body: `¿Cuál es tu edad?`,
},
}
]
})

En caso de que necesites crear variables que luego quieres utilizar en el diálogo o guardar en el sistema, debes agregar una key variables con la cantidad de variables que necesites. Puedes crear variables compuestas entre dos datos, o datos provenientes desde una API externa.

// code building variables.
const ageOfTheCustomer = 46

output({
state: {
wait: false,
},
variables: {
age: ageOfTheCustomer,
},
messages: [],
})

En caso de que necesites acceder a las variables en el código que se le solicita al usuario o bien si quieres acceder a variables del contacto que existen en el sistema.

let fullname = `${variables.firstname} ${variables.lastname}`
let age = null

if (contact.birthdate) {
age = new Date().getFullYear() - (new Date(contact.birthdate)).getFullYear()
}

output({
state: {
wait: false
},
variables: {
fullname: fullname,
age: age
},
messages: [
{
type: 'text',
text: {
body: `Hola ${fullname} 👋🏻, tienes ${age} años.`,
},
}
]
})

En caso de que necesites comunicarte con otra API, puedes utilizar el método fetch.

const params = {
header: {
'Content-Type': 'application/json',
Accept: 'application/json'
},
method: 'POST',
body: JSON.stringify({
variables
})
};

const response = await fetch('<API>', params);

output({
state: {
wait: false,
},
messages: [
{
type: 'text',
text: {
body: `Dato desde la API ${response.data1}`,
},
}
]
});

En caso de que necesites realizar preguntas al cliente y que el nodo de código se siga ejecutando hasta que termines de resolver tu necesidad, puedes devolver stage.wait = true, así que la próxima vez que el usuario responda, el nodo de código se va a volver a ejecutar, aquí deberás tener en cuenta esto en tu código en particular, para que apliques una lógica que solo se ejecute la parte que necesites que sea ejecutada.

let stateInternal = {
wait: true
}

let messages = []

// Codigo que se ejecuta la primera vez.
if (!state.step) {
messages.push({
type: 'text',
text: {
body: `Primer mensaje`,
},
})

stateInternal.step = 2
}

// Codigo que se ejecutar la segunda vez.
if (state?.step == 2) {
messages.push({
type: 'text',
text: {
body: `Segundo mensaje`,
},
})

stateInternal.wait = false
}

output({
state: stateInternal,
variables: {},
messages: messages
});

Dentro de la variable de state puedes guardar datos que luego puedes utilizar para conocer información de la sesión, recomendamos esta variable para guardar una referencia de qué sección del código se debe ejecutar dentro de la lógica, es importante no declarar una variable con dicho nombre, ya que se va a disparar un error.

Para leer la respuesta de un usuario debes acceder a la variable inboundMessage o inboundMessageBody. La variable inboundMessage tiene toda la información en una estructura JSON y la variable inboundMessageBody es un acceso directo al mensaje de texto que el usuario escribe.

Como el nodo de código puede fallar, vamos a tener que escribir un mensaje de error para dar una respuesta al usuario.

Tiempo de espera: puedes utilizar este nodo para configurar tiempos de espera entre nodo y nodo para continuar con el flujo.

OTROS

Comentario: utiliza el nodo de comentario para dejar notas/observaciones internas sobre la configuración del diálogo.

Final: configúralo siempre que desees terminar la sesión de la campaña automática.


Una vez configurados todos los pasos, así se verá tu campaña automática

Propiedades de la campaña

En el margen superior derecho verás la opcion Propiedades donde podrás configurar la frecuencia de ejecución y reactivación de la campaña automatizada.

  • Frecuencia de Ejecución: Se refiere a la frecuencia con la que la campaña se ejecuta para enviar mensajes a los contactos que cumplen con los criterios de segmentación o triggers establecidos. Por ejemplo, si la campaña está configurada para ejecutarse cada 24 horas, significa que el sistema verificará cada 24 horas a los contactos que pueden recibir el mensaje, y si cumplen con los requisitos, se enviará el mensaje correspondiente.

    • Ejemplo: Si configuras una campaña para ejecutarse cada día, el sistema enviará el mensaje automáticamente a los contactos correspondientes una vez cada día.

  • Frecuencia de Reinicio: Hace referencia al tiempo o condición bajo la cual la campaña se reinicia o se vuelve a evaluar desde el principio. Esto suele estar vinculado a los contactos o la información de la campaña. Por ejemplo, si un contacto ya recibió un mensaje en una campaña, puedes configurar una frecuencia de reinicio para que no se le vuelva a enviar el mismo mensaje hasta que haya pasado un determinado período.

    • Ejemplo: Si configuras la frecuencia de reinicio cada 7 días, esto evitará que un contacto reciba el mismo mensaje si ya lo recibió en los últimos 7 días, incluso si la campaña se ejecuta más frecuentemente que eso.

En resumen:

  • Frecuencia de Ejecución: Determina cuándo se ejecuta la campaña y se envían los mensajes.

  • Frecuencia de Reinicio: Determina cuándo se vuelve a evaluar a un contacto para asegurarse de que no reciba el mismo mensaje más de una vez durante el período de reinicio.

Ambas opciones permiten controlar cómo se entregan los mensajes a los usuarios para evitar envíos repetidos o demasiado frecuentes, optimizando la experiencia del cliente.

¿Ha quedado contestada tu pregunta?