Saltar al contenido principal
Las {{variables}} de tu agente tienen un valor por omisión que defines en el Constructor. En una llamada puedes reemplazarlas con los valores de esa llamada: el nombre del cliente, su ID de contacto en el CRM, la sucursal a la que llamó. El agente los ve en su prompt, los dice en su saludo y se los pasa a sus tools.

De dónde salen los valores

Cuando un mismo nombre tiene varios valores, gana este orden: las variables de sistema (system__*, las llena Ryvo), luego el valor de la llamada, luego el valor por omisión del agente. Una variable sin ningún valor se queda con sus llaves, para que la notes en la transcripción.

A dónde llegan

  • El prompt, incluida cada etapa de un flujo.
  • El saludo y el recado del buzón, que el agente dice en voz alta.
  • La descripción de Colgar la llamada.
  • Los parámetros de tools cuyo valor sale de una variable dinámica. El nombre no tiene que aparecer en el prompt: una tool puede usar tenant_slug aunque el prompt nunca lo mencione.
En llamadas tienes además {{system__call_id}}: el ID de la llamada en Ryvo, el mismo que llega en tus webhooks, útil para registrar la llamada en tu CRM desde una tool.

Límites y cómo se limpian los valores

  • Nombres: letras, dígitos y guion bajo, hasta 64 caracteres, nunca empezando por system__. En POST /v1/calls, las llaves con otro nombre (por ejemplo deal-id) se quedan como metadata opaca: viajan en el webhook conversation.started pero nunca llegan al agente.
  • Hasta 50 variables por llamada (más es un 400 invalid_body en la API), hasta 2000 caracteres por valor y 8 KB en total.
  • Números y booleanos se vuelven texto ("42", "true"). null conserva el valor por omisión.
  • Se quitan los caracteres de control, y {{ o }} dentro de un valor se reducen a una sola llave, así que un valor nunca puede crear una variable nueva.
Estos valores entran al prompt tal cual. Trátalos como datos de tu cliente final: si un valor viene de un formulario público, alguien puede intentar darle instrucciones al agente a través de él.

El webhook de inicio de llamada

Para llamadas entrantes por teléfono. Antes de contestar, Ryvo le manda a tu servidor quién llama y usa las variables que devuelvas. Mientras tanto, quien llama escucha el timbre.
1

Crea un endpoint

En Configuración › Webhooks (o desde el Constructor), crea un endpoint con la URL HTTPS de tu servidor. Su secreto de firma es el que firma también estas peticiones.
2

Enciéndelo en el agente

En el Constructor, abre Ajustes de llamada › Webhook de inicio de llamada, enciende Consultar mi servidor al recibir una llamada y elige el endpoint.
3

Ajusta la espera

Tiempo máximo de espera va de 0.5 a 4 segundos (2 por omisión). Enciende Permitir que cambie el saludo si tu respuesta puede traer el primer mensaje del agente.
4

Publica

Las entrantes usan la versión publicada.

La petición

Un POST con JSON, firmado con X-Ryvo-Signature igual que los eventos (ver Verificar firmas), más X-Ryvo-Event: conversation.initiation y X-Ryvo-Event-Id. El endpoint la recibe sin importar a qué eventos esté suscrito.
caller_id y called_number conservan los nombres que usa ElevenLabs. Todavía no hay ID de sesión; la llave estable es call_sid, y el mismo call_sid puede llegar más de una vez si Twilio reintenta.

La respuesta

Contesta con un 2xx y este JSON (la misma forma que acepta ElevenLabs):
  • dynamic_variables sigue los límites de arriba.
  • first_message sólo se usa si Permitir que cambie el saludo está encendido, el agente no tiene flujo y ya habla primero. Hasta 1000 caracteres, y también puede usar variables.
  • Cualquier otro override (prompt, idioma, voz) se ignora.
  • Un cuerpo de más de 8 KB, un JSON inválido o un type distinto cuentan como fallo.

Cuando falla

Si tu servidor no contesta a tiempo, contesta algo distinto de 2xx o la respuesta no es válida, la llamada se contesta igual con los valores por omisión. El resultado (ok, tiempo agotado, error o inválido, con el estado HTTP y la latencia, nunca el cuerpo) queda guardado con la llamada. Puedes apagar el webhook cuando quieras desde la misma sección.