Saltar al contenido principal

Variables de mensaje

Personaliza cualquier mensaje de un recorrido - email, SMS, Push, WhatsApp o webhook - con marcadores Liquid. Una variable sin valor se renderiza como texto vacío; nunca provoca un error.

Los dos espacios de nombres de eventos​

Los recorridos ofrecen dos espacios de nombres de eventos, y la diferencia es importante:

  • trigger: cómo entraron. El evento de entrada, fijo durante toda la ejecución.
  • event: lo último que hicieron. El evento más reciente que hizo avanzar el recorrido, como la respuesta que resolvió una bifurcación de comportamiento. Comienza siendo igual a trigger y se reasigna cada vez que se resuelve una espera.

Por tanto, para «lo que acaba de responder el contacto», usa event (o los alias reply de abajo), no trigger.

Usuario: atributos predeterminados y personalizados​

Atributos predeterminados: campos estándar, escritos como {{ user.firstName }}:

VariableValor
user.firstName, user.lastNameAtributos de nombre
user.email, user.phoneCampos del contacto
user.idID de contacto propio de Joryio
user.externalIdTu ID externo
user.whatsappNameNombre del perfil de WhatsApp sincronizado con el contacto

Atributos personalizados: cualquier otro dato del contacto, bajo el espacio de nombres custom; por ejemplo, {{ user.custom.plan }}:

VariableValor
user.custom.<attribute>Cualquier atributo personalizado (por ejemplo, user.custom.plan)
nota

La forma plana anterior {{ user.<attribute> }} sigue funcionando por compatibilidad, pero {{ user.custom.<attribute> }} es la forma recomendada de referirse a atributos personalizados: los distingue visualmente de los campos predeterminados.

nota

Los nombres de atributos predeterminados están reservados: no puedes crear un atributo personalizado con el mismo nombre que uno predeterminado - por ejemplo, email, country o firstName. Así nunca entran en conflicto y el selector nunca muestra un nombre dos veces.

Insertar variables​

Los editores de WhatsApp, SMS, Push y webhook tienen un botón + Personalizar que abre el selector Añadir personalización. Elige un tipo, selecciona el atributo, añade un valor predeterminado opcional y luego pulsa Insertar para añadir el fragmento generado:

  • Último evento: el último evento que hizo avanzar el recorrido. Elige una fuente: Respuesta (WhatsApp) - los alias intuitivos reply.* - o Evento personalizado (event.*).
  • Desencadenante (entrada): cómo entraron. Elige una fuente: Mensaje de WhatsApp o Evento personalizado.
  • Atributos predeterminados: {{ user.firstName }}, {{ user.email }} y los demás campos principales; es la misma lista que aparece en el selector de «atributos predeterminados» de segmentos.
  • Atributos personalizados: solo los atributos personalizados de tu organización. Los predeterminados aparecen en su propio tipo, nunca en ambos, y se insertan como {{ user.custom.<attribute> }}.
  • Catálogo de productos: registros del catálogo sincronizado de tu tienda mediante una selección de productos. Se inserta una etiqueta assign, como {% assign products = 'featured' | products %}; después puedes recorrerla con {% for item in products %} … {% endfor %}.
  • Entidad personalizada: registros de una entidad personalizada mediante una selección guardada. Se inserta como {% assign items = 'tv_series' | entity: 'latest' %} y se recorre del mismo modo.

El valor predeterminado opcional añade el filtro | default: "…", de forma que un atributo vacío muestra tu texto en lugar de quedar en blanco.

Email e in-app​

Los editores visuales de email e in-app tienen un botón Personalización que abre el mismo selector en modo de copia: crea el fragmento, cópialo y pégalo donde quieras en tu diseño. Allí no se ofrecen Respuesta, Último evento ni Desencadenante, porque solo se resuelven dentro de un recorrido.

Desencadenante (evento de entrada)​

VariableValor
trigger.properties.<field>Cualquier propiedad incluida en el evento de entrada
trigger.properties.content.textTexto entrante, si la entrada fue un mensaje de WhatsApp

Evento (último evento que avanzó) y alias reply​

Después de una bifurcación de comportamiento que espera una respuesta, event es esa respuesta. Los alias reply son atajos intuitivos para mensajes entrantes: funcionan igual para una respuesta de WhatsApp y de SMS. Después de una bifurcación de comportamiento Mensaje SMS entrante, reply.text es el último texto SMS entrante del contacto.

VariableAliasValor
event.properties.content.textreply.textEl texto de la respuesta
event.properties.typereply.typeTipo de mensaje entrante: texto, imagen, botón…
event.properties.profile.namereply.profile.nameNombre del perfil de WhatsApp
event.nameEl nombre del evento
event.properties.<field>Cualquier otra propiedad capturada

Salida del agente​

Un nodo Agente de IA escribe su resultado en agent.<variable>, donde la variable es el nombre de salida que diste al nodo. Allí hay tres tokens, y el selector de variables los muestra todos bajo Salida del agente:

TokenContiene
{{ agent.<variable> }}La respuesta del agente: texto, un campo JSON o, para un agente de Clasificación, { label, confidence }. En una ejecución fallida es el valor de reserva del agente.
{{ agent.<variable>_outcome }}Cómo fue la ejecución: success, timeout, rate_limited, invalid_config, budget_exceeded o error.
{{ agent.<variable>_error }}El motivo en una ejecución fallida, por ejemplo "daily cap 100 reached". Vacío si tuvo éxito.

El nodo en sí tiene una única rama de Error para cualquier fallo. Cuando un recorrido deba tratar una clase de fallo de forma distinta, coloca un nodo Rama después del agente con un filtro de variable de contexto sobre agent.<variable>_outcome: la clase está ahí y el lienzo sigue siendo simple.

Ejemplo: una respuesta de WhatsApp después de una bifurcación de comportamiento​

Gracias, {{ reply.profile.name | default: "" }}. Has dicho:
«{{ reply.text }}». Nos pondremos en contacto contigo en breve.
tip

Usa trigger.* para cómo entraron y event.* / reply.* para lo que acaban de hacer. En un recorrido con entrada programada, trigger no tiene contenido entrante: la respuesta después de una bifurcación está en event / reply.