builtin_tool_error y el asistente sigue hablando con quien llama — una herramienta rota nunca hace fallar una llamada.
En las respuestas automáticas de mensajería (Telegram, Slack, Messenger, Teams, Discord, Google Chat, X) y de correo electrónico, se ejecutan las mismas herramientas integradas aptas para texto en la ruta de respuesta de Next.js (también API/MCP/base de conocimientos/calendario). Los tipos exclusivos de voz (end_call, transferencias, DTMF/teclado, tarjeta de pago) no están registrados ahí.
Las herramientas independientes
La recopilación por teclado pertenece al Flow: agrega un nodo Collect en generador de Flow, donde el worker puede gestionar de forma segura el estado y las transiciones DTMF. Las acciones de calendario las proporciona Integraciones. Las antiguas configuraciones independientes
dtmf_input, collect_keypad y calendar_integration se conservan solo para mantener la visualización de versiones anteriores y ya no se pueden crear como herramientas reutilizables nuevas.
Habilitar una herramienta
Abre Herramientas, crea una herramienta Integrada, completa sus campos y asígnala a un asistente. Su nombre, obligatorio, es el nombre exacto de la función expuesta al modelo, mientras que la descripción le indica al modelo cuándo usarla. Las llamadas se atribuyen a la herramienta reutilizable en la vista de Ejecuciones.Finalizar llamada
No hay más configuración que la descripción. El modelo debe completar la solicitud y despedirse antes de invocar la función; luego el worker marca la llamada como finalizada y cuelga.Transferencia de llamada (en frío)
- Número de teléfono — el destino fijo.
- La IA puede determinar el número de transferencia dinámicamente — expone el destino como argumento de la función en su lugar.
- Mensaje de transferencia en caliente — aviso opcional no interrumpible antes de la transferencia en frío.
Transferencia de llamada en caliente
Pone en espera a quien llama y primero marca el número de un colega:- Teléfono del supervisor — a quién llamar; se usa la troncal SIP saliente configurada del espacio de trabajo.
- Música en espera — activada o desactivada, más un mensaje en espera hablado opcional.
- Briefing — instrucciones de resumen (cómo resumir la llamada para el colega) y una apertura del briefing que se le dice al colega; ambas admiten
{{variables}}. - Tiempo de espera de timbre y alternativa — continuar la conversación, finalizar, o hacer una transferencia en frío si falla la llamada de consulta.
Transferir a asistente (KI→KI)
Entrega la sesión en vivo a otro asistente del mismo espacio de trabajo sin colgar:- Asistente de destino (
assistant_id) — obligatorio; debe pertenecer al espacio de trabajo. - Mensaje antes de la transferencia — línea opcional no interrumpible que se dice antes del traspaso.
- Decir saludo de transferencia — cuando está activado (por defecto), el primer mensaje/saludo del asistente de destino se reproduce después del cambio.
- Descripción — obligatoria: indica al modelo cuándo hacer el traspaso (por ejemplo, preguntas de precio → asistente de ventas).
reason y un conversation_summary para que el asistente receptor conserve el contexto. El worker reconstruye STT/LLM/TTS (o el modo realtime) para el destino, invoca session.update_agent y escribe los eventos de llamada assistant_transfer / assistant_transfer_failed. Una llamada puede traspasarse como máximo tres veces (protección contra bucles). Se rechaza la autotransferencia al mismo asistente.
Enviar SMS
El asistente redacta el texto del mensaje a partir de la conversación y lo envía durante la llamada:- Destinatario (
sms_to_mode) —caller(por defecto: el propio número de quien llama) ocustomcon un número personalizado fijo (sms_custom_number, E.164, por ejemplo+491701234567).
Enviar correo electrónico
La herramienta de correo separa la captura del destinatario, la identidad del remitente, el contenido y la firma, de modo que cada parte pueda ser determinista donde haga falta:- Destinatario (
email_to_mode) —askusa un flujo dedicado de captura de correo para normalizar el habla ruidosa y obtener una confirmación explícita;fixedusaemail_fixed_to. Las direcciones mal formadas o dictadas nunca se adivinan al momento de enviar. - Remitente (
email_sender_mode) —autoprueba primero la dirección de SendGrid verificada del asistente, luego el SMTP del espacio de trabajo/reseller y por último el correo de la plataforma. O selecciona explícitamente SMTP del espacio de trabajo, Correo de la plataforma, o una dirección verificada desdeGET /api/v1/email-senders. Las selecciones explícitas fallan de forma clara en lugar de recurrir a un respaldo silencioso. - Nombre para mostrar (
email_from_name) — anulación opcional por herramienta. - Contenido (
email_content_mode) —llmdeja que el modelo escriba el asunto/cuerpo a partir de la llamada;fixedsiempre envía el texto literal configurado;templateresuelve{{call_variables}}y bloquea el envío si falta un valor. - Firma (
email_signature_mode) — la firma predeterminada del espacio de trabajo (con{agent_name}/{{assistant_name}}), una firma personalizada por herramienta, o ninguna. La añade una sola vez el código de la aplicación, no la improvisa el modelo. - Estado de entrega — un resultado exitoso de la herramienta significa que el proveedor SMTP aceptó el mensaje, no que llegó a la bandeja de entrada. Las supresiones conocidas de SendGrid por rebote/bloqueo/spam se comprueban antes de enviar y se devuelven al asistente como un fallo de entrega.
Horario comercial
Permite que el asistente responda con sinceridad a “¿estás abierto ahora mismo?” — y que actúe de forma distinta fuera del horario de apertura:- Horario comercial (
business_hours) — un horario semanal, con una o varias franjas horarias por día de la semana ({"mon": [["09:00", "17:00"]], ...}— la misma forma que las ventanas de llamada de una campaña). - Nota (
hours_note) — una sugerencia opcional de texto libre que se devuelve junto con el resultado (por ejemplo, “Cerrado los días festivos”).
Programar devolución de llamada
El asistente acuerda con quien llama una hora para la devolución de llamada; la plataforma la guarda y un cron job marca el número automáticamente cuando llega el momento:- Número de devolución de llamada (
callback_to_mode) —caller(por defecto: devolver la llamada al mismo número de quien llamó) ocustomcon un número personalizado fijo (callback_custom_number, E.164). - Días máximos de anticipación (
max_days_ahead) — con cuánta antelación se puede programar una devolución de llamada (de 1 a 365 días).
Recoger tarjeta de pago
Habilita los nodos Collect de tipo Tarjeta de pago en generador de Flow. Esta no es una acción invocable por el LLM: controla el acceso al nodo del Flow y define qué cuenta de Stripe recibe el método de pago.- Agrega tu clave secreta de Stripe en Herramientas → App Store → Stripe.
- Crea una herramienta integrada de tipo
collect_payment_cardy selecciona esa cuenta de Stripe (stripe_connection_id). - Asigna la herramienta a un asistente.
- Agrega un nodo Collect de tipo Tarjeta de pago en el Flow.
card_last4, card_brand y stripe_payment_method_id — nunca el número completo de la tarjeta ni el CVV. Requiere la función de plan Recoger tarjetas de pago. Se cobra por cada recolección exitosa (consulta la configuración de créditos).
Sin una conexión de clave secreta de Stripe, el formulario de la herramienta muestra un aviso para agregar una primero — no hay alternativa de la plataforma para los datos de tarjeta del cliente.
Establecer variable de llamada
Permite que el asistente guarde un valor durante la llamada (por ejemplo, el nombre de la empresa de quien llama) para que herramientas posteriores, correos, condiciones del Flow y el webhook posterior a la llamada puedan usarlo:- Claves permitidas (
allowed_keys) — lista blanca opcional en snake_case. Vacío = cualquier clave válida excepto las claves reservadas de la plataforma (assistant_name,direction,call_id,date,time,datetime,weekday). - Descripción — indica al modelo cuándo guardar (por ejemplo, después de que quien llama menciona el nombre de su empresa).
{"updated":{"key":"value"}} para que el modelo conozca el valor guardado a través del resultado de la herramienta. No reescribe el prompt del sistema durante la llamada (los modelos realtime lo ignorarían). Una cadena vacía borra una clave.
Herramienta del sistema: get_current_time
Independientemente de las herramientas configurables anteriores, todo asistente siempre cuenta con la herramienta de sistemaget_current_time — no requiere configuración y no se puede desactivar. El modelo la invoca siempre que la fecha o la hora actuales son relevantes (resolver “mañana a las 3”, comprobar un plazo, reservar una cita).
La hora devuelta se localiza según la zona horaria del asistente (assistants.timezone, un identificador IANA como Europe/Berlin). En las llamadas de campaña, la zona horaria de la campaña la anula en cada llamada (meta.timezone ?? assistant.timezone) — consulta Zona horaria.
API y MCP
Las herramientas integradas viven en el arraybuiltin_tools del asistente (también se acepta tools por compatibilidad). Configúralas mediante la API pública:
GET /api/v1/email-senders y el MCP list_email_senders exponen el catálogo de remitentes sin secretos; consulta la referencia de la API.