>.
Te especializas en <<área de conocimiento>>.
## Reglas de Estilo
Establece cómo debe hablar el agente.
Responde en máximo 2 frases cuando sea posible.
Habla de manera natural, como lo haría una persona real.
Reconoce las emociones del usuario en tus respuestas.
## Guías de Respuesta
Instrucciones específicas sobre formato y confirmaciones.
Di las fechas en voz alta: "quince de enero" en lugar de "15/1".
Una pregunta cada vez: no satures al usuario con múltiples preguntas seguidas.
Repite información importante: confirma números, fechas y nombres.
## Tareas a Realizar
Los pasos exactos que debe seguir el agente. Describe el flujo de la conversación paso por paso.
## Manejo de Situaciones Difíciles
Qué decir cuando el usuario reacciona negativamente.
Si dice que no le interesa: "Lo entiendo perfectamente. ¿Puedo preguntarte qué..."
Si se nota frustrado: "Noto tu molestia, voy a hacer todo lo posible por solucionarlo..."
```
```markdown Prompt Estructurado theme={null}
## Identidad
Eres Ana, agente de atención al cliente de TechSolutions.
Tu rol es ayudar a clientes con consultas sobre productos, pedidos y soporte técnico básico.
Tienes experiencia en servicio al cliente y resolución de problemas.
## Reglas de Estilo
Sé conciso: Respuestas de 1-2 frases por defecto.
Sé cálido: Usa un tono amigable y profesional.
Sé proactivo: Anticipa necesidades del cliente.
Evita jerga técnica: Explica conceptos en términos simples.
## Guías de Respuesta
Confirma información crítica: Repite números de pedido, fechas y montos.
Reformula preguntas: Si algo no es claro, pide aclaración de forma específica.
Ofrece alternativas: Si no puedes hacer algo, sugiere opciones.
No uses abreviaturas: Di "lunes a viernes" en lugar de "L-V".
## Conocimiento de Empresa
Horario: Lunes a viernes de 9 a 18 horas, sábados de 10 a 14 horas.
Política de devoluciones: 30 días desde la compra con recibo.
Envío estándar: 3-5 días laborables.
Productos principales: Laptops, tablets, accesorios de oficina.
## Instrucciones de Tarea
1. Saluda de forma cálida y preséntate.
2. Pregunta en qué puedes ayudar.
3. Escucha la consulta completa antes de responder.
4. Proporciona la información solicitada de forma clara.
5. Pregunta si necesita ayuda adicional.
6. Despídete profesionalmente.
## Manejo de Objeciones
Si el cliente está molesto: "Entiendo tu frustración. Déjame ver cómo puedo resolver esto."
Si no tienes la información: "No tengo esa información ahora mismo. Te puedo transferir con alguien que sí puede ayudarte."
Si solicitan algo imposible: "No puedo hacer eso directamente, pero lo que sí puedo hacer es..."
```
```markdown Ejemplo de Conversación theme={null}
Usuario: Hola, tengo un problema con mi pedido.
Agente: Hola, soy Ana de TechSolutions. Lamento que tengas un problema. ¿Me puedes contar qué pasó?
Usuario: Pedí una laptop hace una semana y aún no llega.
Agente: Entiendo. ¿Tienes el número de pedido a mano?
Usuario: Sí, es el 45892.
Agente: Perfecto, el cuatro cinco ocho nueve dos. Dame un momento para revisar.
[Consulta sistema]
Agente: Veo que tu pedido salió hace 4 días. El envío estándar toma de 3 a 5 días, así que debería llegar en los próximos dos días. ¿Te envío el número de rastreo por mensaje?
Usuario: Sí, por favor.
Agente: Listo, te lo acabo de enviar. ¿Hay algo más en lo que pueda ayudarte?
Usuario: No, eso es todo.
Agente: Perfecto. Gracias por llamar, que tengas buen día.
```
## Mejor Práctica 2: Cuándo migrar a Camino Conversacional
No todos los casos de uso funcionan bien con un prompt único. Si tu agente empieza a ser impredecible o el prompt se vuelve demasiado largo, es momento de considerar un agente de Camino Conversacional.
### Señales de que necesitas cambiar de arquitectura:
* **Tu prompt tiene demasiados "si... entonces"**: Cuando superas 3-4 condiciones, el modelo empieza a confundirse
* **Usas muchas herramientas**: Con más de 5 integraciones, el agente no sabe cuándo usar cada una
* **Necesitas recordar información**: Si debes rastrear variables entre diferentes momentos de la conversación
* **Comportamiento errático**: El agente responde bien a veces y otras veces falla en el mismo escenario
### Qué ganas con Camino Conversacional:
* **Enfoque**: Cada nodo tiene un único propósito, sin distracciones
* **Confiabilidad**: Las transiciones y herramientas se activan de forma determinística, no dependen de interpretación
* **Debugging más simple**: Puedes identificar exactamente en qué nodo está fallando
* **Consistencia**: El comportamiento es predecible porque está explícitamente programado
**Regla práctica**: Si escribiste más de 3 bloques del tipo "Si el usuario menciona X, entonces haz Y", probablemente tu caso de uso funcione mejor con un flujo estructurado.
## Mejor Práctica 3: Sé explícito con las herramientas
Esta sección aplica solo a Agentes de Prompt Único. Los Agentes de Camino Conversacional gestionan las llamadas a funciones automáticamente según la configuración de cada nodo.
### Por qué es importante
Un error común es pensar que el modelo sabrá cuándo usar cada herramienta con solo leer su descripción. En la práctica, esto no funciona bien. El resultado es un agente que:
* Usa herramientas cuando no debería
* Ignora herramientas cuando sí las necesita
* Confunde cuál herramienta usar en cada situación
### La solución: instrucciones paso a paso
Necesitas decirle al agente exactamente cuándo activar cada herramienta. No dejes nada a la interpretación. Usa los nombres exactos de las funciones en las instrucciones.
#### Ejemplo: Agente de Servicio al Cliente
```markdown theme={null}
## Instrucciones de Uso de Herramientas
1. Recopila información inicial sobre el problema del cliente.
2. Determina el tipo de solicitud:
- Si el cliente menciona "reembolso" o "devolver dinero":
→ Llama a la función `transferir_a_soporte` inmediatamente
- Si el cliente necesita estado de pedido:
→ Llama a la función `consultar_estado_pedido` con order_id
- Si el cliente quiere cambiar su pedido:
→ Primero llama `consultar_estado_pedido`
→ Luego transiciona a estado_modificacion
3. Después de recuperar información:
- Siempre resume lo que encontraste
- Pregunta si necesitan ayuda adicional
- Si sí, determina la siguiente acción apropiada
```
#### Ejemplo: Agente de Reservas de Restaurante
```markdown theme={null}
## Instrucciones de Uso de Herramientas
1. Saluda y pregunta para cuántas personas y qué fecha desean reservar.
2. Una vez tengas ambos datos:
→ Llama a `consultar_disponibilidad` con fecha y cantidad_personas
3. Analiza el resultado:
- Si hay disponibilidad:
• Ofrece las opciones de horario disponibles
• Espera confirmación del cliente
→ Llama a `crear_reserva` con todos los datos
- Si NO hay disponibilidad:
• Ofrece fechas alternativas cercanas
• Si el cliente acepta alternativa:
→ Llama nuevamente a `consultar_disponibilidad` con nueva fecha
4. Después de crear la reserva:
→ Llama a `enviar_confirmacion` con el número de reserva
→ Confirma verbalmente todos los detalles al cliente
5. IMPORTANTE: Nunca llames a `crear_reserva` sin antes verificar disponibilidad.
```
### Claves para escribir instrucciones de herramientas efectivas
1. **Palabras clave**: Especifica qué términos o frases debe escuchar el agente para activar cada herramienta
2. **Orden de ejecución**: Si una herramienta depende de otra, déjalo claro. Por ejemplo: "primero consulta, después crea"
3. **Restricciones**: Igual de importante es decir cuándo NO usar una herramienta. Evita llamadas innecesarias
4. **Justificación**: Añade una línea explicando para qué sirve cada herramienta. Ayuda al modelo a entender el propósito
## Mejor Práctica 4: Optimización para Conversaciones de Voz
A diferencia de los chatbots de texto, los agentes telefónicos deben generar respuestas que suenen naturales cuando son habladas. Esto requiere consideraciones especiales:
### Reglas de Formato para Voz
```markdown theme={null}
## Guías de Respuesta para Voz
Fechas: Di "quince de marzo de dos mil veinticinco" no "15/03/2025"
Horarios: Di "tres de la tarde" no "15:00 horas"
Números de teléfono: Di "seis uno dos, tres cuatro, cinco seis" agrupando dígitos
Montos: Di "veinte euros" no "20,00 EUR"
URLs: No deletrees. Di "te envío el enlace por mensaje"
Emails: No deletrees. Di "te envío la información por correo"
Listas: Máximo 3 opciones. Si hay más, pregunta qué tipo busca primero.
NUNCA uses:
- Asteriscos o emojis: *sonríe* 😊
- Abreviaturas: "L-V" → "lunes a viernes"
- Jerga de internet: "LOL", "OMG"
- Símbolos: "+", "@", "#"
```
### Control de Longitud de Respuestas
```markdown theme={null}
## Reglas de Concisión
Respuesta por defecto: Máximo 2 frases
Explicación compleja: Máximo 4 frases, luego pregunta si quedó claro
Listas de opciones: Máximo 3 ítems a la vez
Si hay mucha información: Divide en partes y pregunta qué quiere saber primero
Ejemplo MALO:
"Tenemos cinco tipos de seguros: el básico que cubre accidentes y responsabilidad civil,
el premium que incluye todo lo anterior más cobertura de robo y daños parciales,
el familiar que extiende la cobertura a todos los miembros del hogar..."
Ejemplo BUENO:
"Tenemos seguros básicos, premium y familiares. ¿Cuál te interesa que te explique?"
```
### Manejo de Interrupciones
```markdown theme={null}
## Comportamiento con Interrupciones
Si el usuario te interrumpe:
1. Detente inmediatamente en lo que estás diciendo
2. No repitas lo que ya dijiste
3. Responde a lo nuevo que mencionó
4. Solo pregunta si quiere retomar el tema anterior si era crítico
Ejemplo:
Agente: "El horario de atención es de lunes a—"
Usuario: "¿Y el precio?"
Agente: "El precio inicial es de cincuenta euros. ¿Quieres saber sobre otros planes?"
[NO repite lo del horario a menos que el usuario lo pida]
```
## Iteración y Optimización
La iteración es clave para perfeccionar tus prompts. Aquí tienes un proceso recomendado:
Usa las estructuras de esta guía como punto de partida.
Realiza 5-10 llamadas de prueba con diferentes tipos de consultas.
Revisa transcripciones para detectar:
* Momentos donde el agente no sabe qué hacer
* Respuestas que suenan poco naturales
* Uso incorrecto de herramientas
* Información incorrecta o desactualizada
Ajusta solo las partes del prompt que causaron problemas y comienza de nuevo el proceso
**Estrategia de pruebas**: Pide a alguien que no conoce tu agente que haga una llamada real. Su experiencia te mostrará problemas que tú no verías porque conoces cómo "debería" funcionar.
## Siguientes pasos
Aprende cuándo y cómo usar flujos estructurados para mayor control.
Ajusta voz, volumen, idioma y parámetros avanzados.
Conecta APIs y bases de datos a tu agente.
Gestiona y prueba múltiples versiones de prompts.
# Variables Dinámicas
Source: https://docs.diga.io/es/build/agentes/variables-dinamicas
Personaliza las respuestas de tu agente con información contextual usando variables dinámicas
## Introducción
Las variables dinámicas te permiten inyectar datos personalizados en las respuestas de tu agente para cada llamada específica. Usando la sintaxis `{{nombre_variable}}`, puedes crear agentes que se adaptan a diferentes contextos manteniendo flujos de conversación consistentes.
### Casos de uso comunes
* **Saludos personalizados**: "Hola `{{nombre_cliente}}`, le llamo para confirmar su interés en el formulario de `{{tipo_formulario}}`"
* **Respuestas contextuales**: "Veo que llamas sobre el pedido `{{numero_pedido}}`"
* **Información temporal**: Referencia a `{{fecha_cita}}` o `{{fecha_limite} o {{current_time}}}`
### Dónde funcionan las variables
Las variables dinámicas se pueden usar en:
* **Prompt del agente**: Instrucciones y personalidad del agente
* **Saludo inicial**: Mensaje de bienvenida al usuario
* **Nodos de conversación**: Instrucciones en un nodo concreto
* **Condiciones de rama**: Las condiciones que enrutan entre nodos en un [camino conversacional](/es/build/agentes/camino-conversacional)
* **Integraciones y flujos**: Pasa valores de variables a los [flujos](/es/build/flujos/introduccion) y sus integraciones para enviar datos personalizados a sistemas externos
## Agregar y probar variables
Las variables dinámicas son marcadores rodeados por dobles llaves. Por ejemplo:
```text theme={null}
Hola {{nombre_cliente}}, entiendo que estás interesado en {{nombre_producto}}.
¿Cómo puedo ayudarte hoy?
```
Cuando escribas en el editor de prompt o saludo, al escribir `{{` aparecerá un menú con las variables disponibles.
Antes de publicar, puedes probar tus variables usando el panel de pruebas. Los valores que ingreses aquí simularán los datos que recibirás en producción.
Los valores que establezcas en ese panel a la hora de crear una versión serán los que se usarán por defecto en caso de que no se pasen otros distintos en el momento de realizar la llamada
### Para llamadas salientes
Al crear una llamada usando la API, incluye tus variables en el campo `dynamic_variables`:
```json theme={null}
{
"from_number": "+34612345678",
"to_number": "+34698765432",
"dynamic_variables": {
"nombre_cliente": "María García",
"numero_pedido": "ORD-12345",
"fecha_entrega": "mañana a las 3 PM"
}
}
```
### Para llamadas entrantes
Usará el valor que hayas establecido por defecto en la versión del agente que esté publicada
**Recomendación:** Usa valores de tipo string (texto) en `dynamic_variables`. Otros tipos de datos como números o booleanos se aceptan, pero sus valores se convierten a texto al insertarse en los prompts y condiciones, por lo que usar strings mantiene el resultado predecible.
## Variables del sistema
Diga proporciona automáticamente estas variables del sistema - no requieren configuración:
| Variable | Descripción | Ejemplo |
| - | - | - |
| `{{agent_name}}` | Nombre del agente configurado | "Asistente de Ventas" |
| `{{user_phone_number}}` | Número de teléfono del usuario | "+34612345678" |
| `{{current_time}}` | Hora actual en UTC | "Friday, January 10, 2025 14:30:00 UTC" |
| `{{current_time[zona_horaria]}}` | Hora actual en zona horaria específica | "Friday, January 10, 2025 15:30:00 CET" |
### Ejemplos de hora con zona horaria
Para obtener la hora en una zona horaria específica, usa la sintaxis `{{current_time[zona_horaria]}}`:
```text theme={null}
Hora actual en Madrid: {{current_time[Europe/Madrid]}}
Hora actual en Ciudad de México: {{current_time[America/Mexico_City]}}
Hora actual en Buenos Aires: {{current_time[America/Argentina/Buenos_Aires]}}
Hora actual en Nueva York: {{current_time[America/New_York]}}
```
Usa identificadores de zona horaria IANA válidos como `Europe/Madrid`, `America/New_York`, etc. Puedes encontrar la lista completa en [Wikipedia](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
## Variables desde flujos
Los [flujos pre-llamada](/es/build/flujos/flujos-pre-llamada) pueden definir variables dinámicas para una llamada. Por ejemplo, un flujo que busca al contacto en tu CRM puede devolver su nombre, plan o estado de cuenta, y esos valores se convierten en variables que puedes usar en cualquier parte del agente.
Cuando un flujo pre-llamada proporciona una variable, esta aparece en el panel de **variables dinámicas** del agente como **solo lectura**, con la etiqueta **"Proporcionada por \[nombre del flujo]"**. No defines su valor aquí — el flujo lo rellena en el momento de la llamada. Para cambiar lo que devuelve el flujo, usa el atajo de edición que tiene al lado para ir al flujo.
Estas variables también aparecen en el autocompletado de `{{` en los editores de prompt y saludo, junto a tus propias variables y las del sistema, para que puedas insertarlas sin escribirlas a mano.
Un parámetro de un flujo durante llamada también puede rellenarse desde una variable dinámica en lugar de ser extraído por el agente — útil cuando ya tienes el valor (por ejemplo, de un flujo pre-llamada) y no quieres que el agente vuelva a pedirlo. Consulta [Rellenar parámetros desde variables dinámicas](/es/build/flujos/flujos-durante-llamada#rellenar-parámetros-desde-variables-dinámicas).
## Precedencia de variables
Cuando una misma variable está definida en múltiples lugares, se aplica la siguiente prioridad (de mayor a menor):
1. **Variables de flujo pre-llamada** (mayor prioridad): Los valores devueltos por un [flujo pre-llamada](/es/build/flujos/flujos-pre-llamada) tienen prioridad sobre el resto
2. **Variables de llamada**: Valores específicos para cada llamada, por ejemplo pasados mediante la API
3. **Variables de agente**: Valores por defecto configurados en el agente. Estas son las variables que hemos configurado previamente en el panel de variables.
Esto significa que puedes establecer valores por defecto a nivel de agente y sobrescribirlos para llamadas específicas cuando sea necesario.
### Ejemplo de precedencia
```text theme={null}
# Configuración del agente
dynamic_variables: {
"empresa": "TechCorp",
"departamento": "Ventas"
}
# Variables de la llamada
dynamic_variables: {
"empresa": "ClienteXYZ",
"cliente": "Juan Pérez"
}
# Resultado final (valores que usará el agente)
{
"agent_name": "Asistente Virtual", # Sistema
"user_phone_number": "+34612345678", # Sistema
"empresa": "ClienteXYZ", # Llamada sobrescribe agente
"departamento": "Ventas", # Agente (no sobrescrito)
"cliente": "Juan Pérez" # Llamada
}
```
## Buenas prácticas
Configura valores por defecto a nivel de agente para variables que usas frecuentemente. Esto evita que tus prompts muestren variables vacías.
Siempre prueba tu agente tanto con variables definidas como sin ellas para asegurar que maneja ambos casos correctamente.
Evita almacenar información sensible como contraseñas, claves API o datos financieros en variables dinámicas:
```text theme={null}
# Evitar
{{clave_api}}
{{numero_tarjeta}}
# Mejor: usa solo identificadores
{{id_cliente}}
{{referencia_pedido}}
```
## Ejemplos de uso
### Agente de atención al cliente
```text theme={null}
Eres un agente de atención al cliente de {{nombre_empresa}}.
Estás realizando una llamada saliente al cliente {{nombre}} con número de cuenta {{numero_cuenta}} para obtener más información sobre su duda de soporte.
Salúdalo por su nombre y ayúdalo con su consulta sobre {{motivo_llamada}}.
```
### Recordatorio de citas
```text theme={null}
Eres un asistente de {{nombre_negocio}} llamando para confirmar una cita.
Información de la cita:
- Cliente: {{nombre_cliente}}
- Fecha: {{fecha_cita}}
- Hora: {{hora_cita}}
- Servicio: {{servicio}}
- Fecha actual: {{current_time}}
Confirma que el cliente puede asistir y recuérdale llegar 15 minutos antes.
```
### Seguimiento de pedidos
```text theme={null}
Eres un agente de soporte de {{tienda_nombre}}.
Información del pedido:
- Número de pedido: {{numero_pedido}}
- Estado actual: {{estado_pedido}}
- Fecha estimada de entrega: {{fecha_entrega}}
Ayuda al cliente con cualquier duda sobre su pedido.
La hora actual es {{current_time[Europe/Madrid]}}.
```
# Bases de conocimiento
Source: https://docs.diga.io/es/build/bases-conocimiento
Crea y gestiona bases de conocimiento para proporcionar información personalizada a tus agentes.
Las bases de conocimiento son colecciones de documentos que contienen información de tu negocio. Puedes vincularlas a tus agentes para que accedan a esta información durante las conversaciones y respondan con mayor precisión.
También puedes subir documentos, textos o URLs de forma independiente, sin asignarlos a ninguna base de conocimiento. Estos elementos sueltos aparecerán en la vista general y podrás organizarlos en bases más adelante si lo necesitas.
Accede a esta sección desde **Bases de conocimiento** en el panel lateral izquierdo.
## Vista general
La vista principal muestra una tabla con todos los documentos y bases de conocimiento del proyecto. Para cada entrada puedes ver:
* **Nombre y tamaño** del documento o base
* **Tipo** (archivo, URL, texto, base de conocimiento)
* **Fecha** de creación
Usa el Buscador o el filtro de **Tipo** en la parte superior de la tabla para encontrar documentos específicos.
## Añadir documentos
Haz clic en **Añadir documentos** en la esquina superior derecha. Selecciona el tipo de contenido que quieres añadir:
| Tipo | Descripción |
| - | - |
| **Base de conocimiento** | Crea una base vacía para agrupar documentos relacionados |
| **URL** | Importa contenido desde una página web |
| **Archivo** | Sube un archivo desde tu equipo |
| **Texto** | Escribe o pega texto directamente |
### Subir archivos
Los formatos de archivo soportados son:
* **PDF** (`.pdf`)
* **Word** (`.docx`)
* **Markdown** (`.md`)
* **Texto plano** (`.txt`)
* **HTML** (`.html`)
En el modal de añadir documentos, elige la opción **Archivo**.
Elige entre los formatos disponibles (PDF, Word, Markdown, etc.).
Haz clic en el área de carga o arrastra el archivo. Configura las opciones adicionales si es necesario.
Elige la base de conocimiento a la que pertenecerá el archivo. Si no seleccionas ninguna, el documento se añadirá de forma independiente y podrás organizarlo en una base más adelante.
Haz clic en **Guardar** para subir y procesar el archivo.
### Añadir una URL
Al añadir una URL puedes elegir entre dos modos: **Single URL** o **Sitemap**.
**Single URL** — Importa el contenido de una única página web.
En el modal de añadir documentos, elige la opción **URL** y asegúrate de que la pestaña **Single URL** esté activa.
Elige la base de conocimiento de destino. Si no seleccionas ninguna, el documento se añadirá de forma independiente.
Escribe o pega la URL de la página web.
Haz clic en **Guardar**. El sistema extraerá automáticamente el contenido de la página.
**Sitemap** — Importa varias páginas de un sitio web a la vez.
En el modal de añadir documentos, elige la opción **URL** y haz clic en la pestaña **Sitemap**.
Elige la base de conocimiento de destino. Si no seleccionas ninguna, los documentos se añadirán de forma independiente.
Escribe la URL del sitio web. El sistema buscará el sitemap y extraerá las páginas disponibles.
Haz clic en **Continuar**. Aparecerá una lista con todas las páginas encontradas en el sitemap. Marca las que quieras importar o usa **Select all** para seleccionarlas todas.
Haz clic en **Guardar**. Se creará un documento por cada página seleccionada.
### Crear un texto
En el modal de añadir documentos, elige la opción **Texto**.
Escribe un nombre para el documento y añade el contenido en el campo de texto.
Elige la base de conocimiento de destino. Si no seleccionas ninguna, el documento se añadirá de forma independiente.
Haz clic en **Guardar**.
### Crear una base de conocimiento vacía
Si quieres crear primero la estructura y añadir documentos después:
1. Haz clic en **Añadir documentos**.
2. Selecciona **Base de conocimiento**.
3. Introduce un nombre para la base.
4. Haz clic en **Guardar**.
La base aparecerá en la lista y podrás añadirle documentos más adelante.
## Dentro de una base de conocimiento
Haz clic en una base de conocimiento para acceder a su contenido. Dentro encontrarás una tabla con todos los documentos que contiene:
* **Nombre y tamaño** del documento
* **Tipo** (archivo, URL, texto)
* **Fecha** de creación
Desde esta vista puedes:
* **Añadir documentos** a la base usando el botón en la esquina superior.
* **Ver el contenido** de un documento haciendo clic sobre él. Dependiendo del tipo, verás el texto completo, el archivo para descargar o la URL de origen.
* **Mover documentos** a otra base de conocimiento.
* **Eliminar documentos** individuales de la base.
Cuando añades un documento a una base de conocimiento que ya está vinculada a un agente, el documento se procesa automáticamente y el agente tendrá acceso al nuevo contenido una vez finalice el procesamiento.
### Mover elementos a otra base
Puedes mover uno o varios documentos de una base de conocimiento a otra para reorganizar tu contenido sin necesidad de eliminar y volver a subir los archivos.
Dentro de la base de conocimiento, marca las casillas de los documentos que deseas mover.
En la barra de acciones que aparece al seleccionar elementos, haz clic en **Mover**.
Se abrirá un modal con la lista de bases de conocimiento disponibles en el proyecto. Selecciona la base a la que quieres trasladar los documentos. También puedes elegir **Sin base de conocimiento** para desvincularlos de cualquier base.
Haz clic en **Guardar**. Los documentos se trasladarán a la base seleccionada.
Si la base de destino está vinculada a un agente, los documentos movidos se procesarán automáticamente y estarán disponibles para ese agente.
## Eliminar una base de conocimiento
Al eliminar una base de conocimiento se eliminan todos los documentos que contiene. Esta acción no se puede deshacer.
1. Accede a la base de conocimiento que quieres eliminar.
2. Haz clic en el menú de opciones.
3. Selecciona **Eliminar base de conocimiento**.
4. Confirma la acción en el modal de confirmación.
## Vincular bases a agentes
Una vez creadas, las bases de conocimiento se vinculan a los agentes desde la configuración de cada agente. Puedes vincular la misma base a varios agentes y un agente puede tener varias bases vinculadas.
Aprende cómo vincular bases de conocimiento a tus agentes y configurar la herencia en caminos conversacionales.
## Límites
| Concepto | Límite |
| - | - |
| **Tamaño máximo por archivo** | 15 MB |
| **Número de documentos** | Sin límite |
| **Almacenamiento por proyecto** | Varía según el plan contratado |
El almacenamiento total disponible para bases de conocimiento (RAG Storage) depende de tu plan de suscripción. Consulta la página de [Planes y precios](/es/plataforma/facturacion) para ver los límites de tu plan, y [Ajustes > Uso](/es/plataforma/uso#bases-de-conocimiento) para ver el espacio que llevas ocupado.
Si alcanzas el límite de almacenamiento de tu plan, no podrás añadir nuevos documentos hasta que liberes espacio o mejores tu suscripción.
## Buenas prácticas
Si el contenido tiene menos de 500 bytes (aproximadamente un párrafo corto), es más eficiente incluirlo directamente en el prompt del agente en lugar de crear un documento en una base de conocimiento. Reserva las bases para contenido más extenso donde el agente necesita buscar información relevante.
Crea bases de conocimiento separadas por área (productos, políticas, preguntas frecuentes) en lugar de una sola base con todo. Esto facilita el mantenimiento y permite vincular solo la información relevante a cada agente.
Revisa periódicamente el contenido de tus bases para asegurar que la información esté vigente. Un agente con información desactualizada genera una mala experiencia.
Nombra tus bases y documentos de forma clara (por ejemplo, "Política de devoluciones 2025" en lugar de "Doc1"). Facilita la gestión cuando tienes múltiples bases.
Los documentos con encabezados, listas y secciones bien definidas son más fáciles de consultar para el agente que bloques largos de texto sin formato.
## Preguntas frecuentes
Sí. Una base de conocimiento puede estar vinculada a varios agentes del mismo proyecto simultáneamente.
El agente dejará de tener acceso a ese documento de forma inmediata.
Los archivos y URLs no se pueden editar directamente. Si necesitas actualizar la información, elimina el documento y sube una versión nueva.
El procesamiento suele ser rápido, pero depende del tamaño del documento.
# Asignar Flujos a Agentes
Source: https://docs.diga.io/es/build/flujos/asignar-agentes
Conecta tus flujos con agentes específicos para que se ejecuten durante o después de las llamadas
## ¿Por qué Asignar Flujos?
Los flujos con triggers de Diga (Pre-llamada, Llamada finalizada y Llamada a función) solo se ejecutan para los agentes a los que están asignados. Esto te permite:
* Usar flujos diferentes para agentes diferentes
* Controlar qué automatizaciones se ejecutan para cada agente
* Probar flujos con un agente específico antes de aplicarlos a otros
Esta página aplica solo a **agentes de prompt único**. Si tu agente usa [caminos conversacionales](/es/build/agentes/camino-conversacional), los flujos se asignan directamente en el editor de caminos — los flujos durante llamada y post-llamada a través de [nodos de flujo](/es/build/agentes/camino-conversacional/tipos-nodos#nodo-de-flujo), y los flujos pre-llamada a través del [nodo de flujos pre-llamada](/es/build/agentes/camino-conversacional/tipos-nodos#flujos-pre-llamada).
**Prerequisito**: El flujo debe estar **publicado** y **habilitado** antes de asignarlo a un agente. Si necesitas crear un flujo primero, consulta [Crear Flujos](/es/build/flujos/crear-flujos).
## Asignar un Flujo
Desde el dashboard, ve a la sección **Agentes** y selecciona el agente al que quieres asignar flujos.
En la configuración del agente, busca la sección **Flujos**. Aquí verás los flujos actualmente asignados y podrás añadir nuevos.
Selecciona los flujos que quieres que se ejecuten antes de que empiece cada llamada. Aparecen con una etiqueta **Pre-llamada**. Los flujos pre-llamada se ejecutan antes de que el agente salude y pueden personalizar el prompt, definir variables dinámicas o bloquear la llamada. Puedes asignar **múltiples flujos pre-llamada** al mismo agente.
Para saber cómo funcionan, consulta [Flujos Pre-llamada](/es/build/flujos/flujos-pre-llamada).
Selecciona los flujos que quieres que se ejecuten cuando las llamadas de este agente finalicen. Puedes asignar **múltiples flujos post-llamada** al mismo agente — todos se ejecutarán cuando la llamada termine.
Para saber cómo funcionan, consulta [Flujos Post-llamada](/es/build/flujos/flujos-post-llamada).
Selecciona los flujos que quieres que el agente pueda usar como herramientas durante la conversación. Puedes asignar **múltiples flujos durante llamada** al mismo agente.
Cada flujo durante llamada aparece como una herramienta disponible para el agente. El agente decidirá cuál usar según el contexto de la conversación y la descripción que configuraste en el trigger de Llamada a función.
Para saber cómo funcionan, consulta [Flujos Durante Llamada](/es/build/flujos/flujos-durante-llamada).
Los cambios se guardan automáticamente. Los flujos asignados estarán activos en la siguiente llamada del agente.
## Post-llamada vs Durante llamada
| Característica | Post-llamada | Durante llamada |
| - | - | - |
| **Cuándo se ejecuta** | Al terminar la llamada | En medio de la conversación |
| **Cantidad por agente** | Múltiples | Múltiples |
| **El agente espera respuesta** | No | Sí |
| **El usuario nota algo** | No, es transparente | Sí, el agente puede informar de la espera |
| **Trigger** | Llamada finalizada | Llamada a función |
## Flujos y Versiones de Agente
Los flujos se asignan a **versiones específicas** de un agente. Esto significa que:
* Diferentes versiones del mismo agente pueden tener flujos diferentes
* Puedes probar nuevos flujos en una versión de desarrollo sin afectar la versión de producción
* Al crear una nueva versión, los flujos asignados no se copian automáticamente
Usa el [control de versiones](/es/build/agentes/control-versiones) junto con la asignación de flujos para probar nuevas automatizaciones de forma segura.
## Verificar la Asignación
Después de asignar flujos, verifica que todo funcione correctamente:
1. Realiza una [llamada de prueba](/es/build/agentes/llamadas-test) con el agente
2. Para flujos **post-llamada**: verifica que la acción se ejecutó después de colgar (email enviado, registro creado, etc.)
3. Para flujos **durante llamada**: durante la llamada, pide al agente que ejecute la acción (ej. "consulta mi disponibilidad para mañana")
4. Revisa el historial de ejecuciones del flujo para confirmar que se ejecutó correctamente
## Siguientes Pasos
Conoce en detalle los triggers y acciones disponibles.
Prueba tus agentes con flujos asignados.
Crea nuevos flujos para tus agentes.
Gestiona versiones de agentes con diferentes flujos.
# Conexiones
Source: https://docs.diga.io/es/build/flujos/conexiones
Conecta servicios externos a tus flujos mediante claves de API o OAuth
## ¿Qué son las conexiones?
Una conexión es la credencial que permite a una pieza acceder a un servicio externo en tu nombre. Cuando añades una acción como **Enviar correo (Gmail)**, **Crear evento (Google Calendar)** o **Actualizar contacto (HubSpot)** a un flujo, la pieza necesita autorización para actuar en ese servicio. Esa autorización se almacena como una conexión.
Las conexiones tienen alcance de proyecto: una vez creadas, cualquier flujo del proyecto puede reutilizar la misma conexión.
Las credenciales de las conexiones se cifran y almacenan en el motor de flujos. Diga nunca almacena tus claves de API, tokens de OAuth ni contraseñas.
## Tipos de autenticación
Distintas piezas requieren distintos tipos de credenciales:
| Tipo | Cómo funciona | Ejemplos |
| - | - | - |
| **API Key** | Pegas una clave secreta de los ajustes del servicio | Cal.com, Airtable, Notion |
| **OAuth** | Autorizas a Diga desde la pantalla de inicio de sesión del propio servicio | Gmail, Google Calendar, HubSpot, Slack |
| **Autenticación básica** | Usuario y contraseña | APIs personalizadas |
| **Personalizada** | Campos específicos del servicio | Varía |
## Crear una conexión
Las conexiones se crean dentro del constructor de flujos al configurar una pieza que requiere autenticación.
Al añadir una acción de una pieza (por ejemplo, **Gmail → Enviar correo**), el panel de configuración mostrará un campo **Conexión** en la parte superior.
Si aún no existe ninguna conexión para esta pieza, haz clic en **Crear conexión** en el desplegable. Se abrirá un diálogo para configurar las credenciales.
Dale a la conexión un nombre descriptivo para identificarla más adelante (por ejemplo, "Gmail - Cuenta de soporte" o "HubSpot - Producción").
Según el tipo de autenticación:
**Para API Key, autenticación básica o personalizada:** introduce las credenciales directamente en los campos proporcionados.
**Para OAuth:** haz clic en el botón **Conectar**. Se abrirá una ventana emergente con la pantalla de autorización del servicio (por ejemplo, el selector de cuentas de Google). Inicia sesión y concede los permisos solicitados. Una vez que autorices, la ventana se cierra automáticamente y la conexión estará lista.
Haz clic en **Guardar**. La conexión ya está disponible en el desplegable **Conexión** para cualquier pieza del mismo tipo.
## Cómo funciona OAuth
Cuando autorizas una conexión OAuth, el proceso es el siguiente:
1. Diga abre una ventana emergente con la pantalla de consentimiento del servicio (Google, Slack, HubSpot, etc.)
2. Inicias sesión y apruebas los permisos solicitados
3. El servicio redirige de vuelta con un código de autorización temporal
4. La ventana se cierra y el motor de flujos intercambia ese código por un token de acceso y un token de refresco
5. Los tokens se cifran y almacenan. No necesitas gestionarlos manualmente
Los tokens de OAuth expiran periódicamente. El motor de flujos los renueva automáticamente antes de cada ejecución, por lo que tus flujos siguen funcionando sin interrupciones. Si un token ya no puede renovarse (por ejemplo, revocaste el acceso desde los ajustes del servicio), la conexión pasa a estado **Inactiva** y necesita reconectarse.
## Reutilizar conexiones
Después de crear una conexión, aparece en el desplegable **Conexión** de cualquier acción de la misma pieza. Puedes usar la misma conexión de Gmail en múltiples flujos sin volver a autorizar.
Si usas el mismo servicio para distintos propósitos, crea conexiones separadas con nombres claros. Por ejemplo, dos conexiones de Google Calendar, una para cada calendario que gestiones.
## Gestionar conexiones
Puedes ver y gestionar todas las conexiones de tu proyecto en **Ajustes > Proyecto > Conexiones**. Desde allí puedes:
* Ver qué flujos usan cada conexión
* Filtrar por estado **Activa** o **Inactiva**
* Reconectar una conexión cuyas credenciales hayan expirado
* Renombrar conexiones
Consulta [Conexiones](/es/plataforma/conexiones) para más detalles.
## Siguientes pasos
Aprende a construir flujos paso a paso.
Usa flujos pre-configurados como punto de partida.
# Crear Flujos
Source: https://docs.diga.io/es/build/flujos/crear-flujos
Guía paso a paso para crear flujos de automatización en el constructor visual
## Acceder a los Flujos
Para empezar a crear flujos, accede a la sección **Flujos** desde el menú lateral del dashboard. Aquí verás todos tus flujos existentes y podrás crear nuevos.
Al hacer clic en **Crear flujo** en la esquina superior derecha, se abrirá un modal donde puedes elegir entre usar una [plantilla predefinida](/es/build/flujos/plantillas) o empezar desde cero.
Si prefieres verlo en vídeo, este tutorial recorre la creación de un flujo completo: trigger, parámetros, acciones, publicación, habilitación y asignación al agente.
## Crear un Flujo desde Cero
Haz clic en **Crear flujo** en la esquina superior derecha. Se abrirá un modal con las plantillas disponibles. Para empezar desde cero, haz clic en el botón **Empezar desde cero** en la parte inferior del modal. Se abrirá el constructor visual con un flujo vacío.
El primer paso de cualquier flujo es el trigger: el evento que lo inicia. Haz clic en el bloque de trigger y selecciona la pieza que quieres usar.
Para flujos conectados a llamadas de Diga, selecciona la **pieza de Diga** y elige uno de sus triggers:
* **Pre-llamada** — Para [flujos pre-llamada](/es/build/flujos/flujos-pre-llamada) que se ejecutan antes de que el agente salude
* **Llamada finalizada** — Para flujos post-llamada
* **Llamada a función** — Para flujos durante llamada
Para construir un flujo **lanzador de llamadas** que inicie llamadas salientes, usa cualquier trigger externo (programación horaria, webhook, evento de CRM, etc.) y luego añade la acción **Hacer llamada** de Diga.
Cada trigger tiene opciones de configuración. Por ejemplo, el trigger de **Llamada a función** te permite definir:
* Cuándo el agente debe ejecutar esta función (descripción en lenguaje natural)
* Qué parámetros debe extraer de la conversación
* Si requiere confirmación del usuario
Consulta la [Pieza de Diga](/es/build/flujos/pieza-diga) para detalles de cada trigger.
Antes de continuar, prueba el trigger para generar datos de ejemplo. Estos datos se usarán para configurar los pasos siguientes. Haz clic en **Probar trigger** y sigue las instrucciones según el tipo de trigger.
Haz clic en el botón **+** debajo del trigger para añadir acciones. Selecciona una pieza y la acción específica que quieres realizar.
Por ejemplo:
* **Google Sheets** → Añadir fila (para registrar datos de la llamada)
* **Slack** → Enviar mensaje (para notificar al equipo)
* **HTTP** → Hacer petición (para llamar a cualquier API)
Cada acción puede usar datos de los pasos anteriores. Al configurar un campo, haz clic en él para abrir el panel de **datos disponibles**. Verás los datos de salida de todos los pasos anteriores.
Por ejemplo, puedes insertar la transcripción de la llamada (del trigger) en el cuerpo de un email (en una acción de Gmail).
Prueba cada paso individualmente para verificar que los datos fluyen correctamente antes de continuar al siguiente.
Cuando hayas terminado de configurar todas las acciones, haz clic en **Publicar**. Esto crea una versión publicada del flujo que está lista para ejecutarse.
## Borrador vs Publicado
Los flujos tienen un sistema de versiones con dos estados:
La versión que estás editando. Los cambios en borrador no afectan al flujo que está en producción. Puedes experimentar sin riesgo.
La versión activa que se ejecuta cuando se dispara el trigger. Una vez publicada, esta versión queda congelada.
Esto significa que puedes seguir editando un flujo mientras la versión publicada sigue funcionando normalmente. Cuando estés satisfecho con los cambios, publica de nuevo para actualizar la versión activa.
Un flujo debe estar **publicado** antes de poder habilitarlo. Si intentas habilitar un flujo que solo tiene borrador, no se activará.
## Habilitar y Deshabilitar Flujos
Una vez publicado, puedes habilitar o deshabilitar un flujo en cualquier momento:
* **Habilitado**: El flujo se ejecuta cuando se dispara el trigger
* **Deshabilitado**: El flujo existe pero no se ejecuta
Esto es útil para pausar temporalmente un flujo sin perder su configuración.
## Lógica y Control de Flujo
Además de acciones lineales, puedes añadir lógica a tus flujos:
Añade bifurcaciones con lógica if/else para ejecutar diferentes acciones según las condiciones. Por ejemplo, enviar un email diferente según si la llamada duró más o menos de 5 minutos.
Itera sobre una lista de elementos. Útil cuando necesitas procesar múltiples registros, como enviar mensajes a una lista de contactos.
Pausa la ejecución del flujo durante un tiempo determinado. Útil para esperar antes de ejecutar una acción de seguimiento.
Si necesitas lógica específica, puedes añadir un paso de código JavaScript/TypeScript para transformar datos o realizar operaciones personalizadas.
## Historial de Ejecuciones
Cada vez que un flujo se ejecuta, se registra en el historial de ejecuciones. Desde aquí puedes ver:
* El estado de cada ejecución (exitosa o fallida)
* Los datos de entrada y salida de cada paso
* El momento exacto de cada ejecución
* Errores detallados si algún paso falló
Esto es muy útil para depurar problemas y verificar que tus flujos funcionan correctamente.
## Siguientes Pasos
Empieza rápido con flujos pre-configurados.
Conecta tus flujos con agentes para que se ejecuten.
Aprende sobre los triggers y acciones de Diga.
Repasa los conceptos fundamentales de los flujos.
# Flujos Durante Llamada
Source: https://docs.diga.io/es/build/flujos/flujos-durante-llamada
Permite que tu agente ejecute un flujo multi-paso en mitad de la conversación, como una herramienta
## ¿Qué son los Flujos Durante Llamada?
Un flujo durante llamada es un flujo que el agente puede ejecutar **mientras habla con el usuario**, como si fuera una herramienta. Donde una [integración](/es/build/integraciones/introduccion) llama a un solo endpoint, un flujo durante llamada ejecuta un flujo multi-paso completo — y puede devolver el resultado a la conversación.
Úsalo cuando una sola llamada a la API no es suficiente:
* **Buscar** un cliente, luego revisar sus pedidos abiertos, y después formatear el resultado combinado
* **Consultar varios sistemas** y combinar las respuestas
* **Hacer una reserva** que requiere varias APIs en secuencia
* **Ramificar** según una respuesta antes de devolver los datos al agente
Los flujos durante llamada se ejecutan *durante* la conversación. Compáralos con los [flujos pre-llamada](/es/build/flujos/flujos-pre-llamada) (antes de que el agente salude) y los [flujos post-llamada](/es/build/flujos/flujos-post-llamada) (después de que la llamada termina).
## Cómo funciona
En mitad de la conversación, el agente reconoce que necesita hacer algo — consultar disponibilidad, buscar una cuenta — según la descripción de función que escribiste.
El agente extrae los parámetros de la conversación y se dispara el trigger Llamada a función, ejecutando el flujo.
El agente espera el resultado y lo usa para seguir hablando.
## Crear un Flujo Durante Llamada
Desde la sección **Flujos**, crea un nuevo flujo (desde cero o a partir de una plantilla). Consulta [Crear Flujos](/es/build/flujos/crear-flujos).
Elige la pieza de **Diga** y selecciona el trigger **Llamada a función**. El agente tratará este flujo como una herramienta que puede invocar.
Define cómo y cuándo usa el agente el flujo:
* **Descripción de la función** — cuándo debe llamarlo el agente, en lenguaje natural
* **Parámetros** — qué debe extraer el agente de la conversación (y si cada uno lo extrae la IA o se toma de una [variable dinámica](/es/build/agentes/variables-dinamicas))
* **Confirmación de usuario** — si el agente confirma antes de ejecutar
Consulta [La Pieza de Diga](/es/build/flujos/pieza-diga#llamada-a-función) para la referencia completa de campos.
Añade los pasos que realiza el flujo — peticiones HTTP, consultas a bases de datos, otras piezas — usando los parámetros que extrae el agente.
Termina el flujo con la acción **Devolver respuesta** de Diga para que el agente reciba los datos y pueda continuar la conversación.
El flujo **debe** terminar con **Devolver respuesta** y responder en menos de 60 segundos. De lo contrario el agente recibe un error y continúa sin los datos.
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo y asegúrate de que esté **habilitado**. Luego asígnalo a un agente (ver más abajo).
## Parámetros
Los parámetros son los datos que el agente pasa al flujo cuando se ejecuta. Para cada parámetro defines un nombre, un tipo de dato, si es obligatorio y — lo importante — un **Origen del valor** que decide de dónde sale su valor:
* **Extraído por la IA** (por defecto): el agente toma el valor de la conversación, usando la descripción del parámetro para saber qué buscar.
* **Variable dinámica**: el valor viene de una [variable dinámica](/es/build/agentes/variables-dinamicas) de la llamada en lugar de ser extraído.
## Rellenar parámetros desde variables dinámicas
A menudo *ya tienes* un valor — pasado por la [API](/es/build/agentes/variables-dinamicas), definido como valor por defecto del agente, o producido por un [flujo pre-llamada](/es/build/flujos/flujos-pre-llamada) — y no quieres que el agente vuelva a pedirlo (ni que se arriesgue a equivocarse). Para esos parámetros, configura el **Origen del valor** como **Variable dinámica**.
### Cómo configurarlo
En el trigger **Llamada a función**, abre el parámetro que quieres rellenar automáticamente.
Cambia **Origen del valor** de *Extraído por la IA* a **Variable dinámica**. El campo de descripción se sustituye por un campo **Nombre de la variable dinámica**.
Escribe el nombre de la variable **sin llaves** — por ejemplo `id_reserva`, no `{{id_reserva}}`.
### Qué ocurre durante la llamada
* El parámetro se **quita de lo que el agente tiene que deducir** — nunca se le pide y no puede rellenarlo mal.
* Cuando el flujo se ejecuta, Diga rellena ese parámetro con el valor actual de la variable dinámica correspondiente en la llamada y lo envía en el payload del flujo.
* Los parámetros que dejas como *Extraído por la IA* siguen funcionando igual, junto a los dinámicos.
La variable debe existir realmente en la llamada. Asegúrate de que la proporcione la API, un valor por defecto del agente o un flujo pre-llamada — si falta, el parámetro se envía vacío.
### Ejemplo
Un flujo de "Modificar reserva" donde el ID de la reserva ya se conoce por una búsqueda pre-llamada, así que solo el resto queda en manos del agente:
| Parámetro | Origen del valor | Valor durante la llamada |
| - | - | - |
| `id_reserva` | Variable dinámica → `id_reserva` | Se rellena con las variables de la llamada — el agente nunca pregunta |
| `accion` | Extraído por la IA | El agente lo extrae ("cancelar", "reprogramar"…) |
| `notas` | Extraído por la IA | El agente extrae cualquier detalle extra |
El contacto simplemente dice *"Quiero cancelar mi reserva."* El agente extrae `accion = cancelar`, Diga inyecta `id_reserva` desde la variable dinámica, y el flujo recibe los tres valores.
Los parámetros que rellenas así también aparecen en el panel de **variables dinámicas** del agente, donde puedes darles un valor de prueba para probar el flujo antes de ponerlo en producción. Consulta [Variables Dinámicas](/es/build/agentes/variables-dinamicas#variables-desde-flujos).
## Asignar Flujos Durante Llamada a un Agente
Abre el agente y ve a su sección **Flujos**. Añade ahí el flujo durante llamada. Cada flujo muestra una etiqueta **Durante la llamada**.
Puedes asignar **múltiples flujos durante llamada** al mismo agente — cada uno se convierte en una herramienta que el agente puede elegir usar, según la descripción de la función.
Los caminos ejecutan los flujos durante llamada mediante un [nodo de flujo](/es/build/agentes/camino-conversacional/tipos-nodos#nodo-de-flujo) colocado en el flujo regular de la conversación. Como un nodo de herramienta, admite transiciones basadas en el resultado hacia el siguiente nodo.
Como el resto de flujos, los flujos durante llamada se asignan por [versión de agente](/es/build/agentes/control-versiones). El flujo debe estar **publicado** y **habilitado** para que se ejecute.
## Cuando el llamante interrumpe un flujo en ejecución
Los llamantes reales no esperan educadamente: añaden detalles o cambian de opinión mientras un flujo todavía se está ejecutando. Diga lo gestiona por ti:
* **La ejecución nunca se cancela.** Una vez disparado, el flujo se ejecuta hasta el final: cancelarlo en local no desharía una cita que ya se está creando en tus sistemas.
* **El agente se mantiene informado.** Se le avisa al instante de que el flujo sigue en marcha (para que no lo vuelva a llamar) y recibe el resultado real en cuanto termina, tanto si es un éxito como un fallo.
* **El agente reconoce lo que ya ha pasado.** Si el llamante cambió de opinión a mitad de ejecución, el agente dice en voz alta lo que ya se hizo antes de ajustar, en lugar de fingir que no pasó nada o duplicar la acción en silencio.
* **Una petición corregida se ejecuta como una nueva.** Si el llamante corrige un detalle mientras el flujo se ejecuta ("mejor a las 8"), el agente vuelve a ejecutar el flujo con los valores corregidos. Nunca da por hecho un cambio si no lo ha ejecutado de verdad.
* **El agente termina su frase primero.** Un resultado que llega mientras el agente está hablando se entrega en la siguiente pausa, nunca cortándole a mitad de frase.
Este comportamiento viene de serie: no necesitas pedirlo en el prompt. Lo que **tú** controlas es qué puede ofrecer el agente honestamente a continuación:
**Respalda con un flujo cada promesa de tu prompt.** El comportamiento integrado nunca afirma una acción que el agente no puede realizar: si el llamante quiere cambiar una cita y el agente solo tiene un flujo de *crear*, dirá con claridad que la cita anterior sigue existiendo y habrá que gestionarla, no fingirá cancelarla. Si reprogramar o cancelar importa en tu caso de uso, crea también esos flujos y asígnalos. Si decides no hacerlo, indica en el prompt qué debe hacer el agente en su lugar (por ejemplo, "si el llamante quiere cambiar una cita, anótalo para que lo gestione el equipo").
Redacta el mensaje de **Return Response** como algo que el agente pueda decir en voz alta, en el idioma de tus llamantes. El agente construye su respuesta a partir de él: "Cita creada para el 25 de agosto a las 10:00" produce una respuesta mucho más natural que un estado técnico en inglés.
### Si el flujo falla mientras el llamante habla
Lo que el agente le dice al llamante depende de lo que demuestre el fallo:
* **La petición fue rechazada** (el endpoint respondió con un error de cliente como 400 o 404, así que nunca llegó a ejecutarse): el agente sabe que no se guardó nada, lo dice, y puede volver a intentarlo con los datos corregidos.
* **El resultado es desconocido** (el flujo agotó el tiempo de espera, falló con un error de servidor como 500, o se cortó la conexión): el flujo puede haberse completado antes del error, así que el agente no afirma ni que funcionó ni que falló. Le dice al llamante que no ha podido confirmar la acción y que se revisará, y **no** vuelve a ejecutar el flujo, porque repetirlo podría crear un duplicado.
Si tu flujo detecta un problema, termínalo con un **Return Response** que lo diga con palabras sencillas en lugar de dejar que falle. Un error o un tiempo de espera agotado dejan al agente sin saber si ha pasado algo; una respuesta explícita le permite contarle al llamante exactamente qué ocurre.
## Casos de uso comunes
El agente pregunta una fecha, ejecuta el flujo para consultar tu calendario y lee los horarios disponibles.
Obtén los datos y la actividad reciente de un cliente de uno o varios sistemas, combínalos y devuelve un resumen claro que el agente pueda usar.
Ejecuta en secuencia las distintas llamadas a la API que requiere una reserva, y luego confirma el resultado al usuario.
Crea un ticket en tu sistema, y luego confirma al usuario que se ha registrado.
## Siguientes Pasos
Referencia completa del trigger Llamada a función y la acción Devolver respuesta.
Prepara y personaliza cada llamada antes de que el agente salude.
Compara los flujos durante llamada con las integraciones de un solo endpoint.
Conecta tus flujos con agentes para que se ejecuten.
# Flujos Post-llamada
Source: https://docs.diga.io/es/build/flujos/flujos-post-llamada
Ejecuta un flujo automáticamente cuando una llamada termina para registrar, notificar y actualizar tus sistemas
## ¿Qué son los Flujos Post-llamada?
Un flujo post-llamada es un flujo que se ejecuta **automáticamente cuando una llamada termina**. Recibe todo lo que ocurrió en la llamada — transcripción, duración, datos del contacto, variables dinámicas — y lo usa para actualizar tus sistemas sin que nadie tenga que mover un dedo.
Aquí es donde ocurre el trabajo posterior a una conversación:
* **Registrar la llamada** y su resultado en tu CRM
* **Enviar un resumen** por email a tu equipo
* **Crear un ticket de soporte** con la transcripción adjunta
* **Enviar datos estructurados** a una hoja de cálculo y notificar a un canal de Slack
* **Ramificar según el resultado** — por ejemplo, escalar solo cuando la llamada terminó sin resolución
Los flujos post-llamada son el extremo opuesto de la llamada respecto a los [flujos pre-llamada](/es/build/flujos/flujos-pre-llamada). Un flujo post-llamada se ejecuta **después** de que la llamada termina; uno pre-llamada se ejecuta **antes** de que el agente salude.
## Cómo funciona
El contacto cuelga o el agente finaliza la llamada.
Diga envía todos los datos de la llamada a cada flujo post-llamada asignado al agente.
El flujo ejecuta sus pasos — registrar, notificar, actualizar — usando cualquiera de los datos de la llamada.
Los flujos post-llamada se ejecutan en segundo plano cuando la llamada ya ha terminado, por lo que nunca añaden retraso a la conversación y el contacto no los nota.
## Crear un Flujo Post-llamada
Desde la sección **Flujos**, crea un nuevo flujo (desde cero o a partir de una plantilla). Consulta [Crear Flujos](/es/build/flujos/crear-flujos).
Elige la pieza de **Diga** y selecciona el trigger **Llamada finalizada**. Esto ejecuta el flujo automáticamente cada vez que termina una llamada de un agente asignado.
Haz clic en **Probar trigger** para generar datos de ejemplo de la llamada. Usarás estos datos para configurar los campos de los pasos siguientes.
Añade los pasos que necesites, usando los datos de la llamada donde quieras:
* **Google Sheets** → Añadir fila (registrar la llamada)
* **Gmail** → Enviar email (la transcripción como resumen)
* **Slack** → Enviar mensaje (notificar a tu equipo)
* **HTTP** → Hacer petición (actualizar cualquier sistema)
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo y asegúrate de que esté **habilitado**. Luego asígnalo a un agente (ver más abajo).
## Datos disponibles para el flujo
Cuando la llamada termina, el flujo recibe el registro completo de la llamada — incluyendo el `status`, la `duration`, el `end_reason`, los datos del contacto (`contact.identifier` es el número de teléfono), las `dynamic_variables` de la llamada y el array completo de `messages` (la transcripción). Consulta el [trigger Llamada finalizada](/es/build/flujos/pieza-diga#llamada-finalizada) para la referencia completa de campos.
Usa cualquiera de estos campos en tus acciones. Por ejemplo, inserta la transcripción completa en un email, o envía la duración y el resultado de la llamada a una hoja de cálculo.
## Asignar Flujos Post-llamada a un Agente
Abre el agente y ve a su sección **Flujos**. Añade ahí el flujo post-llamada. Cada flujo muestra una etiqueta **Post-llamada** para que puedas distinguirlos.
Puedes asignar **múltiples flujos post-llamada** al mismo agente — todos se ejecutan cuando la llamada termina.
Los caminos asignan los flujos post-llamada mediante un [nodo de flujo](/es/build/agentes/camino-conversacional/tipos-nodos#nodo-de-flujo) conectado **después de un nodo de Terminar**. El flujo se ejecuta cuando el camino llega a ese final. Un nodo de flujo post-llamada es terminal — no puede tener ramas de salida.
Como el resto de flujos, los flujos post-llamada se asignan por [versión de agente](/es/build/agentes/control-versiones). El flujo debe estar **publicado** y **habilitado** para que se ejecute.
## Casos de uso comunes
Envía la transcripción a tu equipo por email o Slack, con la duración y el resultado, para que todos estén al tanto sin escuchar la grabación.
Busca o crea el contacto en tu CRM, registra la llamada y crea una tarea de seguimiento — todo a partir de los datos de la llamada.
Añade una fila a una hoja de cálculo o un registro a tu base de datos por cada llamada, para poder analizar volúmenes, motivos y resultados.
Ramifica según el resultado de la llamada y crea un ticket o avisa a un humano solo cuando la llamada terminó sin resolución.
## Siguientes Pasos
Referencia completa del trigger Llamada finalizada y los datos que proporciona.
Ejecuta un flujo en mitad de la conversación, como una herramienta que el agente puede usar.
Conecta tus flujos con agentes para que se ejecuten.
Construye el flujo paso a paso en el constructor visual.
# Flujos Pre-llamada
Source: https://docs.diga.io/es/build/flujos/flujos-pre-llamada
Ejecuta un flujo antes de que empiece la conversación para validar, personalizar y controlar cada llamada
## ¿Qué son los Flujos Pre-llamada?
Un flujo pre-llamada es un flujo que se ejecuta **en el momento en que empieza una llamada, antes de que el agente diga su primera palabra**. El agente espera a que el flujo termine y usa su resultado para dar forma a la conversación que está a punto de comenzar.
Esto te permite preparar cada llamada con información fresca y actualizada:
* **Buscar al contacto** en tu CRM o base de datos y saludarlo por su nombre
* **Inyectar contexto** en el prompt del agente para esta llamada concreta
* **Definir variables dinámicas** que el agente usará durante toda la conversación
* **Controlar la llamada**: decidir si debe continuar o no (por ejemplo, bloquear un número que no esté en tu lista de permitidos)
Los flujos pre-llamada son el extremo opuesto de la llamada respecto a los [flujos post-llamada](/es/build/flujos/introduccion#post-llamada). Un flujo pre-llamada se ejecuta **antes** de que el agente salude; uno post-llamada se ejecuta **después** de que la llamada termina.
No confundas los flujos **Pre-llamada** con los flujos **Lanzador de llamadas**. Un flujo pre-llamada se ejecuta *dentro* de una llamada que ya está empezando, para prepararla. Un [lanzador de llamadas](/es/build/flujos/pieza-diga#hacer-llamada) usa la acción **Hacer llamada** para *iniciar* una llamada saliente completamente nueva a partir de un evento externo.
## Cómo funciona
Cuando entra una llamada (o se conecta una llamada saliente), Diga ejecuta cada flujo pre-llamada asignado al agente, espera su respuesta, aplica el resultado y solo entonces deja que el agente comience:
Un contacto marca tu número, o se realiza una llamada saliente. El agente todavía no saluda.
Diga envía los datos de la llamada a cada flujo pre-llamada asignado y espera una respuesta. Tu flujo puede consultar cualquier servicio externo, ejecutar lógica y decidir qué debe saber el agente.
Cada flujo termina con la acción **Devolver datos de llamada**, enviando de vuelta un texto adicional para el prompt (opcional) y un conjunto de variables dinámicas.
Diga fusiona los datos devueltos en la llamada y el agente saluda al contacto, ahora con el prompt y las variables que tu flujo le proporcionó.
El contacto no oye nada durante este paso. En llamadas entrantes y web hay un breve momento de silencio mientras el flujo se ejecuta; en llamadas salientes los flujos se ejecutan antes de marcar el número, por lo que el teléfono del contacto simplemente suena con normalidad.
## Crear un Flujo Pre-llamada
Desde la sección **Flujos**, crea un nuevo flujo (desde cero o a partir de una plantilla). Consulta [Crear Flujos](/es/build/flujos/crear-flujos).
Elige la pieza de **Diga** y selecciona el trigger **Pre-llamada**. Esto le indica a Diga que ejecute el flujo al inicio de una llamada y espere su resultado.
El trigger Pre-llamada tiene dos opciones:
| Campo | Descripción |
| - | - |
| **Tiempo de espera (segundos)** | Tiempo máximo que el agente espera a este flujo antes de continuar (o abortar). Por defecto son **30 segundos** y está limitado a **55 segundos**. |
| **Abortar llamada si falla** | Si está activado, la llamada se cuelga cuando este flujo falla, agota el tiempo de espera o devuelve datos no válidos. Si está desactivado (por defecto), la llamada continúa sin la salida del flujo. |
Añade las acciones que necesites: consultar una base de datos, llamar a tu CRM, ejecutar una condición, transformar datos. Usa los datos de la llamada del trigger (como el número de teléfono del contacto) para buscar el registro correcto.
El **último** paso debe ser la acción **Devolver datos de llamada** de Diga. Es lo que envía el texto adicional del prompt y las variables dinámicas de vuelta al agente.
El flujo **debe** terminar con **Devolver datos de llamada**. La pieza genérica **Respond** no funcionará — su respuesta nunca llega al agente, y la llamada se tratará como si el flujo hubiera fallado.
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo y asegúrate de que esté **habilitado**. Luego asígnalo a un agente (ver más abajo).
## La acción Devolver datos de llamada
Esta acción define lo que el flujo devuelve al agente. Ambos campos son opcionales — usa uno, los dos o ninguno.
| Campo | Descripción |
| - | - |
| **Texto adicional del prompt** | Texto que se añade al prompt de sistema del agente para esta llamada. Puede contener marcadores `{{variable}}`. Úsalo para añadir instrucciones o contexto por llamada. |
| **Variables dinámicas** | Pares clave/valor que se fusionan con las [variables dinámicas](/es/build/agentes/variables-dinamicas) de la llamada. Tienen prioridad sobre cualquier valor definido a nivel de llamada. |
### Ejemplo
Un flujo que busca al contacto en un CRM y personaliza al agente:
```
Trigger: Pre-llamada
→ Acción: Buscar contacto en HubSpot (por número de teléfono)
→ Acción: Devolver datos de llamada
- Texto adicional del prompt: "Estás hablando con un cliente premium recurrente.
Sé especialmente atento y menciona su pedido reciente si es relevante."
- Variables dinámicas:
- nombre_cliente: {{paso_2.first_name}}
- plan: {{paso_2.plan}}
- ultimo_pedido: {{paso_2.last_order_id}}
```
El agente ahora inicia la llamada conociendo ya el nombre del contacto, su plan y su último pedido — y puedes usar `{{nombre_cliente}}`, `{{plan}}` y `{{ultimo_pedido}}` en cualquier parte del prompt, el saludo, los nodos de conversación o las condiciones de las ramas.
## Asignar Flujos Pre-llamada a un Agente
Cómo asignas un flujo pre-llamada depende del tipo de agente.
Abre el agente y ve a su sección **Flujos**. Añade ahí el flujo pre-llamada, igual que añades los flujos post-llamada y durante llamada. Cada flujo muestra una etiqueta **Pre-llamada** para que puedas distinguirlos.
Puedes asignar **múltiples flujos pre-llamada** al mismo agente.
Los caminos usan un nodo dedicado de **Flujos pre-llamada**, que se muestra encima del nodo de **Inicio** en el editor de caminos. Haz clic en él (o en su botón **Añadir**) para abrir el selector, que solo lista flujos pre-llamada. Los flujos que añadas se ejecutan antes de que se ejecute el nodo de inicio del camino.
Consulta [Tipos de Nodos](/es/build/agentes/camino-conversacional/tipos-nodos#flujos-pre-llamada) para más detalles.
Como el resto de flujos, los flujos pre-llamada se asignan por [versión de agente](/es/build/agentes/control-versiones). El flujo debe estar **publicado** y **habilitado** para que se ejecute.
### Múltiples flujos pre-llamada
Puedes asignar más de un flujo pre-llamada al mismo agente o camino. Todos se ejecutan, y sus resultados se fusionan:
* Los **textos adicionales del prompt** se combinan entre sí.
* Las **variables dinámicas** se fusionan. Si dos flujos definen la misma variable, la fusión sigue un orden consistente, de modo que los flujos posteriores tienen prioridad sobre los anteriores.
## Controlar una llamada
Los flujos pre-llamada pueden detener una llamada antes de que empiece. Esto se controla por flujo con la opción **Abortar llamada si falla**:
Si el flujo falla, agota el tiempo de espera o devuelve datos no válidos, la **llamada se termina de inmediato**. En una llamada entrante el contacto se desconecta; en una saliente, el número nunca se marca.
Úsalo cuando el flujo sea un requisito obligatorio — por ejemplo, una comprobación de elegibilidad o lista de permitidos que debe pasar antes de que nadie hable con el agente.
Si el flujo falla o agota el tiempo de espera, la **llamada continúa con normalidad**, solo que sin la salida de ese flujo. El contacto no nota nada.
Úsalo cuando el flujo solo enriquece la llamada (contexto opcional) y no deba bloquear la conversación si tu servicio externo está lento o caído.
Mantén los flujos pre-llamada rápidos. El contacto está esperando (en silencio) mientras se ejecutan, y el agente puede esperar como máximo 55 segundos. Si una consulta es lenta, baja el tiempo de espera para que la llamada falle rápido y continúe, o mueve el trabajo no esencial a un [flujo post-llamada](/es/build/flujos/introduccion#post-llamada).
## Casos de uso comunes
Busca al contacto por su número de teléfono y devuelve su nombre y datos de cuenta como variables dinámicas, para que el agente pueda saludarlo personalmente desde la primera frase.
Comprueba el estado del contacto (VIP, factura pendiente, ticket abierto) y devuelve variables que tu [camino conversacional](/es/build/agentes/camino-conversacional) use en sus condiciones de rama para enviar la llamada por el camino correcto.
Valida al contacto contra una lista de permitidos, una lista de bloqueados o un horario de atención. Activa **Abortar llamada si falla** para que las llamadas que no cumplan nunca lleguen al agente.
Devuelve un texto adicional para el prompt que adapte el comportamiento del agente a esta llamada concreta — por ejemplo, cambiar el tono ante una reclamación, o añadir lenguaje de cumplimiento normativo para ciertas regiones.
## Siguientes Pasos
Referencia completa del trigger Pre-llamada y la acción Devolver datos de llamada.
Usa las variables que produce tu flujo en toda la conversación.
El nodo de flujos pre-llamada en el editor de caminos conversacionales.
Construye el flujo paso a paso en el constructor visual.
# Introducción a los Flujos
Source: https://docs.diga.io/es/build/flujos/introduccion
Orquesta automatizaciones multi-paso antes, durante y después de las llamadas de tus agentes
## ¿Qué son los Flujos?
Los flujos son automatizaciones multi-paso que conectan las llamadas de tus agentes con servicios externos a través de un constructor visual. Donde una [integración](/es/build/integraciones/introduccion) gestiona una sola llamada a la API, un flujo te permite encadenar múltiples pasos entre distintos servicios, con lógica y condiciones entre ellos.
Por ejemplo, cuando una llamada termina, un flujo puede extraer los puntos clave de la transcripción, crear un trato en HubSpot, añadir una fila a Google Sheets y notificar a tu equipo en Slack, todo como una secuencia automatizada.
Los flujos son opcionales. Tus agentes funcionan sin ellos. Úsalos cuando necesites orquestar múltiples pasos o servicios, no solo llamar a un endpoint.
## Flujos vs Integraciones
Ambas herramientas conectan tus agentes con servicios externos, pero sirven propósitos distintos:
| | Integraciones | Flujos |
| - | - | - |
| **Qué hacen** | Llaman a un endpoint de API | Encadenan múltiples pasos entre servicios |
| **Cuándo se ejecutan** | Solo durante la llamada | Antes, durante o después de la llamada |
| **Configuración** | Configuras endpoint + parámetros | Constructor visual con más de 200 piezas |
| **Lógica** | Ninguna | Condiciones, bucles, retrasos, código |
| **Ideal para** | Consultar o escribir datos en un sistema | Orquestar entre múltiples sistemas |
**Usa una integración** cuando tu agente necesite consultar un endpoint y devolver el resultado a la conversación. Por ejemplo, verificar el estado de un pedido en tu base de datos o crear un ticket en tu CRM.
**Usa un flujo** cuando necesites algo más: varios servicios implicados, procesamiento post-llamada, campañas de llamadas salientes, o cualquier lógica que vaya más allá de una sola solicitud.
## Tipos de Flujos
Se ejecutan antes de que el agente salude para validar, personalizar o bloquear la llamada. Buscan datos e inyectan el prompt y las variables con las que el agente empieza.
Se ejecutan automáticamente cuando una llamada termina. Ideales para registrar, notificar y actualizar sistemas con los datos de la llamada.
Se ejecutan como herramientas del agente en mitad de la conversación. Úsalos cuando una sola llamada a la API no es suficiente y necesitas encadenar pasos o transformar datos.
Inician llamadas salientes desde un flujo. Se disparan por eventos externos como formularios completados, actualizaciones en el CRM o una programación horaria.
### Pre-llamada
Los flujos pre-llamada se ejecutan en el momento en que empieza una llamada, **antes de que el agente salude**. El agente espera a que terminen y usa su resultado para preparar la conversación — buscando al contacto, añadiendo contexto al prompt, definiendo variables dinámicas o incluso decidiendo si la llamada debe continuar.
**Casos de uso comunes:**
* Buscar al contacto en tu CRM y saludarlo por su nombre
* Definir variables dinámicas (estado de cuenta, plan, tickets abiertos) que el agente usa durante toda la llamada
* Añadir instrucciones por llamada al prompt del agente
* Validar al contacto contra una lista de permitidos o un horario de atención y bloquear las llamadas que no cumplan
Los flujos pre-llamada usan el trigger **Pre-llamada** y deben terminar con la acción **Devolver datos de llamada**. Consulta [Flujos Pre-llamada](/es/build/flujos/flujos-pre-llamada) para la guía completa.
### Post-llamada
Los flujos post-llamada se activan automáticamente cuando una llamada finaliza. El flujo recibe todos los datos de la llamada: transcripción, duración, información del contacto, variables dinámicas e historial completo de mensajes.
**Casos de uso comunes:**
* Resumir la llamada y enviarlo por email
* Actualizar un registro en tu CRM (HubSpot, Salesforce, etc.) y crear una tarea de seguimiento
* Crear un ticket de soporte y adjuntar la transcripción
* Registrar datos estructurados en Google Sheets y lanzar una notificación en Slack
* Ejecutar lógica condicional, por ejemplo para escalar a un humano solo si la llamada terminó sin resolución
Los flujos post-llamada usan el trigger **Llamada finalizada**. Consulta [Flujos Post-llamada](/es/build/flujos/flujos-post-llamada) para la guía completa.
### Durante llamada
Los flujos durante llamada actúan como herramientas que el agente puede invocar mientras habla con el usuario. El agente detecta cuando necesita información externa, ejecuta el flujo y usa la respuesta para continuar la conversación.
Usa un flujo aquí (en lugar de una integración) cuando necesites hacer más de una cosa: por ejemplo, buscar la cuenta de un cliente, luego verificar sus pedidos abiertos, y después formatear los datos combinados antes de devolverlos al agente.
**Casos de uso comunes:**
* Consultar múltiples sistemas y combinar los resultados
* Obtener datos y ramificar condicionalmente según la respuesta
* Transformar o enriquecer datos antes de devolverlos al agente
* Realizar una reserva que requiere llamar a varias APIs en secuencia
Los flujos durante llamada usan el trigger **Llamada a función**. El agente espera el resultado y lo usa para seguir hablando. Consulta [Flujos Durante Llamada](/es/build/flujos/flujos-durante-llamada) para la guía completa.
### Lanzador de llamadas
Los flujos lanzadores de llamadas utilizan la acción **Hacer llamada** de la pieza de Diga para iniciar llamadas salientes. Pueden ser disparados por cualquier evento externo: un cambio en un registro del CRM, un formulario completado, una hora programada o un webhook.
**Casos de uso comunes:**
* Llamar a leads automáticamente después de que completen un formulario
* Campañas de seguimiento programadas
* Llamadas de confirmación después de una reserva
* Recordatorios de citas disparados por tu sistema de calendario
## Conceptos Clave
### Piezas
Las piezas son los conectores que proporcionan triggers y acciones para servicios específicos. Hay más de 200 disponibles: Google Sheets, Slack, HubSpot, Gmail, Stripe y muchos más. La [pieza de Diga](/es/build/flujos/pieza-diga) es la que conecta los flujos con tus llamadas.
### Triggers
Un trigger es el evento que inicia un flujo. Cada flujo tiene exactamente uno. La pieza de Diga proporciona tres triggers específicos para llamadas:
* **Pre-llamada**: se activa cuando una llamada empieza, antes de que el agente salude
* **Llamada finalizada**: se activa cuando una llamada termina
* **Llamada a función**: se activa en mitad de la llamada cuando el agente necesita ejecutar una acción
### Acciones
Las acciones son los pasos que se ejecutan después del trigger. Cada acción recibe los datos de todos los pasos anteriores, por lo que la información fluye a través de la cadena. Puedes usar la transcripción del paso 1 en el email del paso 4, por ejemplo.
### Conexiones
Las conexiones son las credenciales que las piezas usan para acceder a servicios externos (claves de API, tokens OAuth). Las autorizas una vez y las reutilizas en todos tus flujos. Consulta [Conexiones](/es/build/flujos/conexiones) para más detalles.
## Siguientes Pasos
Construye tu primer flujo paso a paso en el constructor visual.
Empieza rápido con flujos pre-configurados.
Conecta tus flujos con agentes para que se ejecuten.
Triggers y acciones específicos para llamadas de Diga.
# La Pieza de Diga
Source: https://docs.diga.io/es/build/flujos/pieza-diga
Referencia completa de los triggers y acciones de Diga para conectar flujos con llamadas
## ¿Qué es la Pieza de Diga?
La pieza de Diga es el componente que conecta tus flujos con las llamadas de tus agentes. Proporciona triggers para reaccionar a eventos de llamadas y acciones para interactuar con el sistema de telefonía de Diga.
Inician un flujo cuando ocurre un evento en una llamada
Ejecutan operaciones dentro de un flujo en ejecución
## Triggers
### Pre-llamada
Se activa cuando una llamada empieza, **antes de que el agente salude**. Es el trigger para los [flujos pre-llamada](/es/build/flujos/flujos-pre-llamada). El agente espera la salida del flujo y la usa para personalizar la conversación antes de decir su primera palabra.
Un flujo pre-llamada **debe terminar con la acción [Devolver datos de llamada](#devolver-datos-de-llamada)** para que el agente reciba el texto adicional del prompt y las variables dinámicas. La pieza genérica **Respond** no funcionará — su respuesta nunca llega al agente.
#### Configuración
| Campo | Descripción |
| - | - |
| **Tiempo de espera (segundos)** | Tiempo máximo que el agente espera a este flujo antes de continuar (o abortar). Por defecto son **30 segundos** y está limitado a **55 segundos**. |
| **Abortar llamada si falla** | Si está activado, la llamada se cuelga cuando el flujo falla, agota el tiempo de espera o devuelve datos no válidos. Desactivado por defecto, en cuyo caso la llamada continúa sin la salida del flujo. |
#### Datos que recibe
Cuando se dispara este trigger, el flujo recibe los datos de la llamada que está empezando, que puedes usar para buscar el registro correcto:
| Campo | Descripción |
| - | - |
| `id` | Identificador único de la llamada |
| `type` | Tipo de llamada (`inbound` o `outbound`) |
| `status` | Estado actual de la llamada |
| `channel` | Canal que usa la llamada |
| `contact` | Objeto de contacto (`id`, `identifier`, `contact_type`, `created_date`). El número de teléfono es `contact.identifier` |
| `agent_id` | Identificador del agente |
| `agent_version_id` | Identificador de la versión del agente |
| `phone_register_id` | Identificador del registro de teléfono |
| `start_time` | Fecha y hora de inicio |
| `created_date` | Cuándo se creó el registro de la llamada |
| `dynamic_variables` | Variables dinámicas ya definidas en la llamada |
Consulta [Flujos Pre-llamada](/es/build/flujos/flujos-pre-llamada) para la guía completa, incluido cómo crear, asignar y controlar llamadas con estos flujos.
***
### Llamada Finalizada
Se activa automáticamente cuando una llamada termina. Es el trigger principal para flujos **post-llamada**.
#### Datos que recibe
Cuando se dispara este trigger, el flujo recibe toda la información de la llamada:
| Campo | Descripción |
| - | - |
| `id` | Identificador único de la llamada |
| `status` | Estado final de la llamada |
| `duration` | Duración en segundos |
| `type` | Tipo de llamada (`inbound` o `outbound`) |
| `end_reason` | Razón por la que terminó la llamada |
| `recording_url` | URL de la grabación de la llamada |
| `contact` | Objeto de contacto (`id`, `identifier`, `contact_type`, `created_date`). El número de teléfono es `contact.identifier` |
| `agent_id` | Identificador del agente |
| `agent_version_id` | Identificador de la versión del agente |
| `phone_register_id` | Identificador del registro de teléfono |
| `start_time` | Fecha y hora de inicio |
| `end_time` | Fecha y hora de fin |
| `created_date` | Cuándo se creó el registro de la llamada |
| `dynamic_variables` | Variables dinámicas pasadas al agente |
| `messages` | Historial completo de mensajes (transcripción) |
Cada mensaje en el array `messages` incluye:
* `role` — Quién habló (`user` o `assistant`)
* `content` — El texto del mensaje
* `created_date` — Cuándo se envió
Puedes usar cualquiera de estos campos en las acciones de tu flujo. Por ejemplo, insertar la transcripción completa en un email o enviar la duración a una hoja de cálculo.
#### Configuración
Este trigger no requiere configuración adicional. Solo necesitas [asignar el flujo al agente](/es/build/flujos/asignar-agentes) para que se active.
Consulta [Flujos Post-llamada](/es/build/flujos/flujos-post-llamada) para la guía completa sobre cómo crear y asignar estos flujos.
***
### Llamada a Función
Se activa durante una llamada cuando el agente decide ejecutar una función. Es el trigger para flujos **durante llamada**. El agente lo usa como una herramienta más, de forma similar a las [integraciones](/es/build/integraciones/introduccion).
Consulta [Flujos Durante Llamada](/es/build/flujos/flujos-durante-llamada) para la guía completa sobre cómo crear y asignar estos flujos.
#### Configuración
| Campo | Descripción |
| - | - |
| **Descripción de la función** | Instrucción en lenguaje natural que indica al agente cuándo usar esta función. Ejemplo: "Usa esta función cuando el usuario quiera consultar la disponibilidad de citas" |
| **Parámetros** | Los datos que el agente debe extraer de la conversación. Para cada parámetro defines: nombre, tipo de dato, si es obligatorio y una descripción |
| **Modo de ejecución** | Si el agente **espera** la respuesta del flujo antes de continuar. **Síncrono** (por defecto): el agente se pausa y usa los datos devueltos. **Asíncrono**: el flujo se ejecuta en segundo plano y el agente continúa de inmediato sin esperar |
| **Audio de ejecución** | Lo que escucha el contacto mientras el agente espera en modo síncrono. **Ninguno**, **Tecleo** (sonidos de teclado) o **Música de espera** |
| **Pre-habla** | Si el agente dice un mensaje breve antes de ejecutar. **Auto** deja que el agente decida; **Forzar** hace que diga una frase corta sobre lo que va a hacer (por ejemplo, "Un momento, lo compruebo ahora mismo") justo antes de ejecutar el flujo, y luego espere en silencio. Nunca adelanta el resultado |
| **Confirmación de usuario** | Si el agente debe pedir confirmación antes de ejecutar |
#### Parámetros
Los parámetros definen qué información extrae el agente de la conversación para enviarla al flujo. Por ejemplo, para un flujo de "Consultar disponibilidad":
| Parámetro | Tipo | Obligatorio | Descripción |
| - | - | - | - |
| `fecha` | Texto | Sí | La fecha para consultar disponibilidad |
| `servicio` | Texto | No | El tipo de servicio solicitado |
El agente extrae estos valores automáticamente del contexto de la conversación y los envía al flujo. Los tipos de dato de los parámetros incluyen **Texto**, **Número**, **Booleano** y **Array**.
##### Origen del valor
Cada parámetro tiene un **Origen del valor** que decide de dónde sale su valor:
* **Extraído por la IA** (por defecto): el agente extrae el valor de la conversación, usando la descripción del parámetro para saber qué buscar.
* **Variable dinámica**: el valor se toma directamente de una [variable dinámica](/es/build/agentes/variables-dinamicas) en lugar de extraerse. Al elegir esta opción, indica el **Nombre de la variable dinámica** (sin llaves, p. ej. `id_cliente`). No se le pide este parámetro al agente — Diga lo rellena automáticamente con las variables de la llamada.
Usa **Variable dinámica** para datos que ya tienes (definidos por la API o por un [flujo pre-llamada](/es/build/flujos/flujos-pre-llamada)), para que el agente no tenga que volver a pedirlos durante la conversación. Para un paso a paso y un ejemplo, consulta [Rellenar parámetros desde variables dinámicas](/es/build/flujos/flujos-durante-llamada#rellenar-parámetros-desde-variables-dinámicas).
#### Datos que recibe
| Campo | Descripción |
| - | - |
| `call_id` | Identificador de la llamada en curso |
| `arguments` | Los parámetros extraídos por el agente |
#### Cómo espera el agente
El agente **espera** a que el flujo termine y recibe la respuesta, y la usa para continuar la conversación.
**Ejemplo**: Consultar disponibilidad de citas. El agente pregunta la fecha, ejecuta el flujo, espera la respuesta y le dice al usuario los horarios disponibles.
**Importante**: El flujo debe incluir la acción **Devolver respuesta** como último paso para enviar datos de vuelta al agente. El tiempo máximo de espera es de 60 segundos.
Si el flujo tarda más de 60 segundos o no incluye la acción **Devolver respuesta**, el agente recibirá un error y continuará la conversación sin los datos.
#### Confirmación de usuario
Cuando activas la confirmación de usuario, el agente le explica al usuario qué acción va a realizar y le pide confirmación antes de ejecutar el flujo. Esto es útil para acciones sensibles como procesar pagos o hacer reservas.
**Ejemplo de conversación:**
```
Usuario: "Quiero reservar una cita para mañana a las 10"
Agente: "Perfecto, voy a reservar una cita para mañana jueves a las 10:00. ¿Confirmas?"
Usuario: "Sí, confirma"
Agente: [ejecuta el flujo]
```
## Acciones
### Hacer Llamada
Inicia una llamada saliente desde un flujo. Esta acción convierte cualquier flujo en un disparador de llamadas, permitiéndote crear campañas automatizadas o llamadas reactivas a eventos externos. Los flujos construidos en torno a esta acción se conocen como flujos **lanzadores de llamadas**.
#### Configuración
| Campo | Descripción |
| - | - |
| **Número de origen** | El número de teléfono de Diga desde el que se realizará la llamada. Se selecciona de los números disponibles en tu proyecto |
| **Número de destino** | El número al que se va a llamar. Puede ser un valor fijo o dinámico (datos de un paso anterior) |
| **Versión del agente** | La versión del agente que gestionará la llamada (opcional) |
| **Variables dinámicas** | Variables que se pasarán al agente durante la llamada (opcional) |
#### Casos de uso
Conecta un trigger de tu CRM (nuevo lead creado) con la acción de hacer llamada para contactar automáticamente a nuevos leads.
```
Trigger: Nuevo lead en HubSpot
→ Acción: Hacer llamada al número del lead
- Agente: "Agente de cualificación"
- Variables: nombre del lead, fuente, producto de interés
```
Usa un trigger de programación para llamar a clientes y recordarles sus citas.
```
Trigger: Programación (24h antes de cada cita)
→ Acción: Buscar citas del día siguiente
→ Acción: Hacer llamada a cada contacto
- Agente: "Agente de recordatorios"
- Variables: fecha de cita, servicio, dirección
```
Conecta un webhook con la acción de hacer llamada para contactar a usuarios que completan un formulario web.
```
Trigger: Webhook (formulario completado)
→ Acción: Hacer llamada al número del formulario
- Agente: "Agente de ventas"
- Variables: nombre, email, consulta
```
***
### Devolver Respuesta
Devuelve datos al agente durante una llamada. Esta acción es **obligatoria** en flujos durante llamada. Es el último paso del flujo y contiene la información que el agente necesita para continuar la conversación.
#### Configuración
| Campo | Descripción |
| - | - |
| **Tipo de respuesta** | JSON o texto plano |
| **Contenido** | Los datos a devolver. Puede incluir datos de pasos anteriores |
#### Ejemplo
Un flujo que consulta disponibilidad de citas:
```
Trigger: Llamada a función (parámetros: fecha, servicio)
→ Acción: Consultar API de calendario (HTTP request)
→ Acción: Devolver respuesta
- Tipo: JSON
- Contenido: { "slots": ["10:00", "11:30", "15:00"], "service": "Consulta general" }
```
El agente recibe estos datos y le dice al usuario: "Tengo disponibilidad a las 10:00, 11:30 y 15:00 para una consulta general. ¿Cuál prefieres?"
***
### Devolver Datos de Llamada
Devuelve datos al agente **antes de que empiece la llamada**. Esta acción es **obligatoria** como último paso de un [flujo pre-llamada](/es/build/flujos/flujos-pre-llamada) — es lo que envía el prompt y las variables de vuelta al agente para que pueda comenzar la conversación.
No la confundas con **Devolver respuesta**. Devolver datos de llamada se ejecuta al *inicio* de una llamada (flujos pre-llamada); Devolver respuesta se ejecuta *durante* una llamada (flujos durante llamada).
#### Configuración
| Campo | Descripción |
| - | - |
| **Texto adicional del prompt** | Texto que se añade al prompt de sistema del agente para esta llamada. Puede contener marcadores `{{variable}}`. Opcional. |
| **Variables dinámicas** | Pares clave/valor que se fusionan con las variables dinámicas de la llamada. Tienen prioridad sobre los valores definidos a nivel de llamada. Opcional. |
#### Ejemplo
Un flujo pre-llamada que personaliza al agente a partir de una búsqueda en el CRM:
```
Trigger: Pre-llamada
→ Acción: Buscar contacto en HubSpot (por número de teléfono)
→ Acción: Devolver datos de llamada
- Texto adicional del prompt: "Estás hablando con un cliente premium recurrente. Sé atento."
- Variables dinámicas: { "nombre_cliente": "Jane Doe", "plan": "premium" }
```
El agente empieza la llamada conociendo ya el nombre y el plan del contacto, y puede usar `{{nombre_cliente}}` y `{{plan}}` en cualquier parte de su prompt, saludo o camino.
## Referenciar Datos entre Pasos
En cualquier acción, puedes usar datos de pasos anteriores. Haz clic en un campo de entrada para ver los datos disponibles de todos los pasos previos.
**Ejemplos de referencia:**
* Datos del trigger: transcripción, duración, parámetros de la función
* Datos de acciones anteriores: respuesta de una API, resultado de una consulta
Esto te permite construir flujos donde la información fluye naturalmente de un paso al siguiente.
## Siguientes Pasos
Pon en práctica estos triggers y acciones creando tu primer flujo.
Conecta tus flujos con agentes para activarlos.
Usa plantillas que ya incluyen la pieza de Diga configurada.
Compara flujos con integraciones directas en el agente.
# Plantillas de Flujos
Source: https://docs.diga.io/es/build/flujos/plantillas
Usa flujos pre-configurados para empezar rápidamente con automatizaciones probadas
## ¿Qué son las Plantillas?
Las plantillas son flujos pre-configurados que puedes copiar a tu proyecto con un solo clic. Cada plantilla incluye el trigger, las acciones y la lógica necesaria para un caso de uso específico. Solo necesitas completar las variables (como claves de API o IDs) y estarás listo para empezar.
Cuando copias una plantilla, se crea una copia independiente en tu proyecto. Puedes modificarla libremente sin afectar la plantilla original.
## Usar una Plantilla
Desde la sección **Flujos** del dashboard, haz clic en **Plantillas** para ver el catálogo de plantillas disponibles.
Haz clic en la plantilla que quieras usar para ver sus detalles: qué hace, qué piezas utiliza y qué variables necesitas configurar.
Haz clic en **Usar Plantilla** para crear el flujo en tu proyecto. El flujo se creará en estado **deshabilitado** para que puedas revisarlo antes de activarlo.
Cada plantilla puede tener variables que necesitas rellenar antes de copiar. Por ejemplo:
* Una clave de API para conectar con un servicio externo
* Una URL de webhook
* Un ID de canal de Slack o spreadsheet de Google
Si la plantilla usa piezas que requieren autenticación (Gmail, Slack, HubSpot, etc.), se te pedirá que configures las conexiones necesarias. Esto autoriza a la pieza a acceder a tu cuenta del servicio.
Revisa que la configuración sea correcta y publícalo. Una vez publicado, habilítalo para que empiece a ejecutarse.
Recuerda que después de copiar la plantilla necesitas **publicar** y luego **habilitar** el flujo. También debes [asignar el flujo a un agente](/es/build/flujos/asignar-agentes) si usa triggers de Diga (Pre-llamada, Llamada finalizada o Llamada a función).
## Modificar una Plantilla Copiada
Una vez copiada, la plantilla es un flujo normal que puedes modificar como quieras:
* Añadir o eliminar acciones
* Cambiar la lógica de las condiciones
* Ajustar los datos que se envían a cada servicio
* Agregar pasos adicionales
Esto te permite usar la plantilla como punto de partida y personalizarla según tus necesidades.
## Siguientes Pasos
Aprende a construir flujos personalizados paso a paso.
Conecta tus flujos con agentes para activarlos.
# Integraciones HTTP
Source: https://docs.diga.io/es/build/integraciones/integraciones-http
Conecta cualquier API REST a tus agentes telefónicos mediante integraciones HTTP
## ¿Qué son las Integraciones HTTP?
Las integraciones HTTP te permiten conectar tus agentes con **cualquier API REST** que uses o controles. Es la forma más flexible de integrar sistemas externos, desde CRMs hasta plataformas de pagos, bases de datos o servicios internos.
A diferencia de las integraciones MCP que sincronizan herramientas automáticamente, con HTTP **tú defines manualmente** cada herramienta: qué endpoint llamar, qué parámetros enviar y cómo autenticarse.
## Crear una Integración HTTP
Desde el dashboard, ve a la sección **Integraciones** y haz clic en **Nueva Integración**.
Selecciona el tipo **HTTP**.
Define los detalles básicos de tu integración:
**Nombre**: Identifica tu integración (ej. "Zendesk", "Apidetuempresa" )
**URL Base**: El dominio y ruta base de la API (ej. `https://api.tuempresa.com/v1`)
**Descripción**: (Opcional) Explica para qué sirve esta integración
**Credenciales**: Dependiendo del servidor, puede requerir:
* Bearer Token
* Headers personalizados
* Sin autenticación
Una vez confirmada la conexión, guarda la integración.
Ahora puedes crear herramientas que usen esta integración.
## Crear Herramientas
Una vez creada la integración, necesitas definir las **herramientas** (acciones específicas) que tus agentes pueden usar.
En la lista de integraciones, selecciona la que acabas de crear.
Haz clic en **Nueva Herramienta**.
Configura los detalles de la acción:
**Nombre**: Identificador único en formato snake\_case (ej. `buscar_cliente`, `crear_ticket`)
**Descripción**: Explica cuándo el agente debe usar esta herramienta. Sé específico.
**Buena descripción**: "Usa esta herramienta cuando el usuario proporcione su número de pedido y quiera saber el estado de su envío"
**Mala descripción**: "Consulta pedidos"
**Método HTTP**: GET, POST, PUT, PATCH, DELETE
**Endpoint**: Ruta relativa a la URL base (ej. `/customers`, `/tickets/create`)
**Headers Personalizados**: (Opcional) Añade headers específicos para esta herramienta, si es necesario.
Especifica qué información necesita la herramienta. Los parámetros son opcionales (dependerá de la API) y podemos encontrar dos tipos:
**Parametros de la query**: Se envían en la URL (ej. `?status=open&limit=5`)
**Parametros del body**: Se envían en el cuerpo de la solicitud (JSON)
Para cada parámetro define los siguientes campos:
* **Nombre**: Identificador único (ej. `customer_id`, `status`). Debe ser el nombre del valor que espera la API.
* **Descripción**: Qué información representa y cómo obtenerla
* **Tipo de Dato**: string, integer, number, boolean. Los parámetros del body pueden ser además **object** (con propiedades anidadas).
* **Obligatorio**: Si es requerido o no
* **Modo de obtención**: Cómo el agente consigue este valor:
* Prompt: El agente pregunta al usuario o lo infiere del contexto
* Valor fijo: Un valor constante que defines al crear la herramienta
* Valor dinámico: valor rellenado en tiempo de ejecución desde una plantilla/variable.
La descripción del parámetro es clave para que el agente entienda qué valor debe proporcionar. Sé claro y específico.
Las herramientas reciben el mismo tratamiento integrado que los flujos cuando el llamante interrumpe una herramienta en ejecución o la petición falla a mitad de llamada: la ejecución nunca se cancela, el agente recibe el resultado real y nunca afirma un resultado que no puede confirmar. Consulta [Cuando el llamante interrumpe un flujo en ejecución](/es/build/flujos/flujos-durante-llamada#cuando-el-llamante-interrumpe-un-flujo-en-ejecución).
## Ejemplo Completo: Integración con un CRM
Vamos a crear una integración con un CRM ficticio para buscar clientes.
### 1. Crear la Integración
### 2. Crear Herramienta: Buscar Cliente
* Configuración basica:
* Endpoint y método:
* Parámetros:
### 3. Ejemplo de Uso en Llamada
```
Usuario: Mi email es juan@ejemplo.com, ¿qué pedidos tengo?
Agente: [Llama a buscar_cliente con email="juan@ejemplo.com"]
API responde:
{
"customers": [{
"id": "cust_123",
"name": "Juan Pérez",
"email": "juan@ejemplo.com",
"phone": "+34612345678"
}]
}
Agente: Hola Juan, veo que tienes una cuenta con nosotros.
Déjame consultar tus pedidos...
```
## Mejores Prácticas
**Nombres de herramientas**:
* Usa verbos que describan la acción: `buscar_`, `crear_`, `actualizar_`, `eliminar_`
* Formato snake\_case: `consultar_inventario`, no `consultarInventario`
* Sé específico: `crear_ticket_soporte`, no solo `crear`
**Nombres de parámetros**:
* Consistentes con la API: usa los mismos nombres que la documentación
* Descriptivos: `customer_id` mejor que `id`
Las descripciones ayudan al agente a decidir cuándo usar cada herramienta.
**Buenas descripciones incluyen**:
* Cuándo usar la herramienta (trigger)
* Qué información necesita del usuario
* Qué hace exactamente
**Ejemplo**:
```
✅ BIEN:
"Usa esta herramienta cuando el usuario mencione su número de
pedido y quiera conocer el estado de su envío. Requiere el
número de pedido completo (ej. ORD-12345)."
❌ MAL:
"Consulta pedidos"
```
Define qué debe hacer el agente si la herramienta falla:
**En el prompt del agente**, añade instrucciones como:
```markdown theme={null}
## Manejo de Errores de Herramientas
Si una herramienta falla:
1. No repitas el error técnico al usuario
2. Explica el problema en lenguaje simple
3. Ofrece una alternativa
Ejemplo:
"Lo siento, no puedo acceder a esa información en este momento.
¿Puedo ayudarte con algo más o prefieres que te transfiera
con un agente humano?"
```
* **Rota credenciales regularmente**: Actualiza API keys cada 3-6 meses
* **Usa credenciales de solo lectura** cuando sea posible
* **Separa entornos**: Diferentes credenciales para staging y producción
* **Nunca expongas credenciales** en prompts, logs o respuestas del agente
Las llamadas lentas pausan la conversación.
**Reduce latencia**:
* Usa endpoints optimizados (solo pide los datos necesarios)
* Limita el tamaño de respuestas (usa parámetros como `limit`, `fields`)
* Considera cachear datos que no cambian frecuentemente
* Monitorea tiempos de respuesta (objetivo: \< 2 segundos)
**Ejemplo**:
```
✅ BIEN: GET /customers/123?fields=name,email,phone
❌ MAL: GET /customers/123 (devuelve 50 campos innecesarios)
```
## Solución de Problemas
**Causa**: Credenciales incorrectas o expiradas.
**Solución**:
* Verifica que el tipo de autenticación sea correcto
* Confirma que la API key o token esté activa
* Revisa si el token tiene los permisos necesarios
* Para Bearer tokens, verifica que no haya expirado
**Causa**: El endpoint no existe.
**Solución**:
* Verifica la URL base (debe terminar en la versión de la API, ej. `/v1`)
* Confirma que el endpoint esté correctamente escrito
* Revisa la documentación para cambios en la API
**Causa**: Parámetros faltantes o con formato incorrecto.
**Solución**:
* Verifica que los parámetros requeridos estén configurados
* Confirma que los tipos de datos sean correctos (string, number, etc.)
* Revisa que los parámetros estén en la ubicación correcta (path, query, body)
**Causa**: Límite de rate limit excedido.
**Solución**:
* Verifica los límites de la API en su documentación
* Reduce la frecuencia de llamadas
* Considera upgradar tu plan con el proveedor de la API
* Implementa caché para datos que no cambian frecuentemente
**Causa**: El agente no sabe cuándo usar la herramienta.
**Solución**:
* Mejora la descripción de la herramienta (sé más específico)
* En agentes de Prompt Único: añade instrucciones explícitas sobre cuándo usar la herramienta
* En Caminos Conversacionales: asegúrate de que el nodo correcto esté configurado para usar la herramienta
**Causa**: Parámetros mal configurados o descripción ambigua.
**Solución**:
* Revisa que los parámetros tengan descripciones claras
* Asegúrate de que los tipos de datos sean correctos
* Mejora las instrucciones en el prompt del agente
* Usa confirmación de usuario para herramientas críticas
## Siguientes Pasos
Aprende a asignar esta integración a tus agentes y filtrar herramientas.
Descubre cómo sincronizar herramientas automáticamente con MCP.
# Integraciones MCP
Source: https://docs.diga.io/es/build/integraciones/integraciones-mcp
Conecta servidores MCP a tus agentes para sincronizar herramientas automáticamente
## ¿Qué son las Integraciones MCP?
MCP (Model Context Protocol) es un protocolo estandarizado que permite que servicios externos **expongan herramientas automáticamente** a sistemas de IA. En lugar de crear manualmente cada herramienta como en HTTP, las integraciones MCP se sincronizan con un servidor y obtienen todas las herramientas disponibles de forma automática.
Es como conectar un plugin: el servidor MCP le dice al agente qué herramientas ofrece, qué parámetros necesitan y cómo llamarlas.
Puede conocer mas sobre MCP en la [documentación oficial del protocolo](https://modelcontextprotocol.io).
## MCP disponibles en Diga
Diga se conecta a los servidores MCP mediante **Streamable HTTP**. Proporciona la URL HTTP(S) del servidor (ej. `https://tu-servidor.com/mcp`). Los servidores que solo admiten SSE no están soportados actualmente.
## Crear una Integración MCP
Desde el dashboard, ve a la sección **Integraciones** y haz clic en **Nueva Integración**.
Selecciona el tipo **MCP**.
Proporciona los detalles de conexión al servidor:
**Nombre**: Identifica tu integración (ej. "Salesforce MCP", "HubSpot MCP")
**URL del Servidor**: Endpoint del servidor MCP
**Credenciales**: Dependiendo del servidor, puede requerir:
* Bearer Token
* Headers personalizados
* Sin autenticación
No existe un botón independiente de "Probar Conexión". Cuando guardas la integración, Diga valida la conexión con el servidor MCP y sincroniza sus herramientas automáticamente.
Si la validación falla:
* Verifica que la URL del servidor sea correcta
* Confirma que las credenciales estén activas
* Asegúrate de que el servidor MCP esté en línea y accesible
Cuando guardas la integración, Diga automáticamente:
1. Descubre qué herramientas ofrece el servidor
2. Lee sus descripciones y parámetros
3. Las muestra en tu lista de herramientas
La sincronización inicial de herramientas ocurre cuando se crea la integración. Las herramientas también se vuelven a sincronizar cuando listas las herramientas o asignas la integración a un agente.
Revisa las herramientas disponibles.
Puedes:
* **Ver descripción**: Entender qué hace cada herramienta
* **Ver parámetros**: Revisar qué información necesita
* **Configurar confirmación**: Requerir aprobación del usuario para herramientas sensibles
Una vez configurada, guarda la integración.
Las herramientas sincronizadas están listas para asignarse a agentes.
## Gestionar Herramientas Sincronizadas
A diferencia de HTTP donde creas herramientas manualmente, con MCP las herramientas vienen del servidor. Sin embargo, puedes gestionarlas:
### Configurar Confirmación de Usuario
Aunque la herramienta venga del servidor MCP, puedes añadir una capa de confirmación:
En la lista de herramientas sincronizadas, encuentra la que necesita confirmación.
Marca **Requiere Confirmación de Usuario**.
Ahora, cuando el agente intente usar esta herramienta:
1. Explicará al usuario qué hará
2. Pedirá confirmación explícita
3. Solo ejecutará si el usuario acepta
### Sincronizacion de Herramientas
Como las herramientas se sincronizan desde el servidor MCP, cualquier cambio en el servidor (nuevas herramientas, actualizaciones) se reflejará en Diga la próxima vez que listes las herramientas o asignes la integración a un agente.
Si el servidor MCP no es manejado por ti, te recomendamos comprobar periódicamente las herramientas para asegurarte de que todo esté actualizado.
## Siguientes Pasos
Aprende a asignar integraciones MCP a tus agentes y filtrar herramientas.
Descubre cómo crear herramientas personalizadas con HTTP.
# Introducción a las Integraciones
Source: https://docs.diga.io/es/build/integraciones/introduccion
Conecta tus agentes con sistemas externos para realizar acciones durante las llamadas telefónicas
## ¿Qué son las Integraciones?
Las integraciones permiten que tus agentes telefónicos se conecten con sistemas externos durante las conversaciones. En lugar de programar manualmente cada llamada API, defines **herramientas** reutilizables que tus agentes pueden usar cuando las necesiten.
Por ejemplo, un agente de soporte puede:
* Buscar información de un cliente en tu CRM
* Crear tickets en tu sistema de gestión
* Procesar devoluciones en tu plataforma de pagos
* Consultar inventario en tu base de datos
Todo esto sucede en tiempo real durante la conversación telefónica, sin que el usuario tenga que esperar.
Las integraciones son opcionales. Puedes crear agentes que solo conversen sin realizar acciones externas. Úsalas cuando necesites que tu agente **haga algo** además de hablar.
## Casos de Uso Comunes
Las integraciones elevan las capacidades de tus agentes en múltiples casos:
**Atención al Cliente**
* Buscar información de clientes en CRM
* Consultar estado de pedidos
* Crear tickets de soporte
**Ventas y Comercio**
* Consultar disponibilidad de productos
* Verificar precios y descuentos
* Procesar pedidos
**Servicios Financieros**
* Consultar saldos de cuenta
* Verificar transacciones
* Procesar reembolsos
## Conceptos Clave
### Herramientas
Una **herramienta** es una acción específica que tu agente puede realizar. Ejemplos:
* `buscar_cliente` - Busca un cliente por teléfono o email
* `crear_ticket` - Crea un ticket de soporte
* `consultar_inventario` - Verifica disponibilidad de un producto
* `procesar_reembolso` - Inicia una devolución
Cada herramienta tiene:
* **Nombre**: Identificador único (ej. `buscar_cliente`)
* **Descripción**: Explica cuándo usarla
* **Parámetros**: Información que necesita (ej. número de teléfono, email)
### Integraciones
Una **integración** es un contenedor que agrupa herramientas relacionadas y gestiona la conexión con un sistema externo.
Por ejemplo, una integración "Zendesk" podría incluir:
* `buscar_cliente`
* `crear_ticket`
* `actualizar_ticket`
* `consultar_estado_ticket`
Las integraciones también almacenan las credenciales (API keys, tokens) necesarias para autenticarse con el sistema externo.
## Cómo Funcionan las Integraciones Durante una Llamada
Cuando un usuario está en una llamada con tu agente, este puede usar las herramientas asignadas para realizar acciones en tiempo real:
El usuario hace una petición durante la conversación (ej. "¿Cuál es el estado de mi pedido 12345?")
El agente reconoce que necesita usar una herramienta para responder (ej. `consultar_pedido`)
El agente ejecuta la herramienta con los parámetros necesarios (ej. `order_id=12345`)
La integración consulta el sistema externo y devuelve los datos al agente
El agente usa la información recibida para dar una respuesta clara (ej. "Tu pedido está en camino y llegará mañana")
Todo esto sucede en segundos, sin que el usuario tenga que esperar o ser transferido.
## Tipos de Integraciones
Diga soporta dos tipos de integraciones:
Creas herramientas manualmente definiendo endpoints, parámetros y autenticación. Es la opción más flexible.
Las herramientas se sincronizan automáticamente desde el servidor. El proveedor gestiona las actualizaciones.
## Confirmación de Usuario
Para acciones sensibles (como procesar pagos o eliminar datos), puedes requerir **confirmación explícita del usuario** antes de ejecutar una herramienta.
Cuando configuras confirmación de usuario, el agente:
1. Explica qué acción va a realizar
2. Pide confirmación al usuario ("¿Confirmas que quieres procesar el reembolso de 50 euros?")
3. Espera una respuesta afirmativa
4. Solo entonces ejecuta la herramienta
Esto añade una capa de seguridad para operaciones críticas.
**Recomendación**: Activa confirmación de usuario para cualquier herramienta que pueda tener consecuencias importantes o irreversibles.
## Siguientes Pasos
Guía paso a paso para conectar cualquier API REST a tus agentes.
Aprende a sincronizar herramientas automáticamente desde servidores MCP.
Configura qué agentes pueden usar qué herramientas.
Aprende a instruir a tus agentes sobre cuándo usar cada herramienta.
# Crea tu primer agente
Source: https://docs.diga.io/es/crear-agente
Guia paso a paso para crear tu primer agente en Diga
Diga facilita la creación de agentes conversacionales que pueden atender llamadas de manera natural. En esta guía rápida, te mostraremos:
* Cómo crear un nuevo agente en la plataforma Diga.
* Cómo configurar lo básico del agente.
* Cómo asignar un número de teléfono al agente.
* Cómo probar tu agente realizando una llamada.
> **¿No tienes una cuenta?** [Regístrate aquí](https://dashboard.diga.io/signup) para comenzar.
Si prefieres verlo en vídeo, este tutorial te enseña a crear un agente a partir de un prompt: prompt, voz, idioma, ajustes de llamada, bases de conocimiento, herramientas y publicación.
## Pasos para crear tu primer agente
1. Navega a "Agentes" en el panel lateral izquierdo.
2. Haz clic en el botón "Crear agente".
1. Elige entre "Crear desde cero" o "Crear desde una plantilla".
2. Si lo creas desde cero, elige entre "Prompt único" o "Camino conversacional".
3. Indica el nombre y la descripción.
4. Haz clic en "Siguiente".
1. Configura el prompt o el camino conversacional según el tipo de agente seleccionado.
2. Ajusta las configuraciones adicionales como la voz, el idioma o el volumen.
1. Haz clic en "Crear Versión" en la esquina superior derecha.
2. Selecciona "Publicar inmediatamente".
3. Selecciona un número existente o [compra uno nuevo](/es/telefonia/comprar-numeros).
4. Dale a publicar.
¡Felicidades! Has creado y publicado tu primer agente en Diga. Este agente esta listo para recibir llamadas en el número asignado.
## Siguientes pasos
Ahora que has creado tu primer agente, puedes explorar las siguientes guías para mejorar y personalizar tu agente segúen el caso de uso:
Mejora la efectividad de tus agentes con mejores prompts.
Construye flujos complejos para interacciones avanzadas.
Conecta tus aplicaciones a tus agentes.
# Logs de llamadas
Source: https://docs.diga.io/es/despliegue/logs-llamadas
Consulta los eventos detallados de cada llamada para entender qué ocurrió en cada momento
## ¿Qué son los logs de llamadas?
Los logs de llamadas son un registro detallado de todos los eventos que ocurren durante una llamada. Cada acción — desde que se inicia la llamada hasta que finaliza — genera un evento con información contextual que te permite entender exactamente qué pasó y en qué momento.
Puedes consultar los logs de cada llamada desde la vista de detalles de la llamada en el **Registro de Llamadas**.
## Categorías de eventos
Los eventos se organizan en categorías según el tipo de actividad:
Eventos que marcan los momentos clave de la llamada: cuándo se inició la grabación, cuándo se completó la llamada o si falló.
| Evento | Descripción |
| - | - |
| Grabación iniciada | Se inició la grabación de la llamada |
| Tipo de respuesta detectado | En salientes con detección activada: qué contestó la llamada (persona, buzón, menú telefónico) y la transcripción de lo que se oyó |
| Llamada completada | La llamada finalizó correctamente |
| Llamada fallida | La llamada falló por un error |
Eventos relacionados con lo que dice el contacto durante la llamada.
| Evento | Descripción |
| - | - |
| Mensaje del usuario recibido | Se recibió un mensaje del contacto (transcripción completada) |
| El usuario comenzó a hablar | El contacto comenzó a hablar |
| El usuario dejó de hablar | El contacto dejó de hablar |
Eventos sobre el comportamiento y las respuestas del agente durante la conversación.
| Evento | Descripción |
| - | - |
| Agente inicializado | El agente se inicializó para la llamada |
| Saludo enviado | El agente envió su mensaje de bienvenida |
| Mensaje del agente enviado | El agente generó y envió una respuesta |
| El agente comenzó a hablar | El agente comenzó a hablar |
| El agente terminó de hablar | El agente terminó de hablar |
| Agente interrumpido | El contacto interrumpió al agente |
| Recordatorio enviado | El agente envió un recordatorio por inactividad |
| Mensaje dejado en el buzón de voz | El agente dejó tu mensaje configurado en un contestador, con el texto exacto que dijo |
| Navegación del menú telefónico iniciada | El agente empezó a navegar un menú telefónico, con el objetivo o la secuencia de teclas que persigue |
| Opción del menú telefónico seleccionada | El agente pulsó una tecla: incluye el menú que escuchó, la tecla elegida y el porqué de la decisión |
| Navegación del menú telefónico finalizada | Cómo terminó la navegación (persona alcanzada, sin respuesta, sin salida) y el razonamiento final |
Eventos sobre las herramientas nativas que el agente ejecuta durante la llamada: transferencias, colgar, añadir participantes.
| Evento | Descripción |
| - | - |
| Transferencia solicitada | Se solicitó una transferencia de llamada |
| Transferencia completada | La transferencia se completó |
| Transferencia fallida | La transferencia falló |
| Colgar solicitado | Se solicitó colgar la llamada |
| Llamada colgada | La llamada se colgó correctamente |
| Añadir participante solicitado | Se solicitó añadir un participante a la llamada |
| Participante añadido | El participante se añadió correctamente |
| Añadir participante fallido | No se pudo añadir el participante |
Eventos sobre la ejecución de herramientas de integración (HTTP, MCP) configuradas por ti.
| Evento | Descripción |
| - | - |
| Integración ejecutada | El agente ejecutó una herramienta de integración |
| Aprobación solicitada | La herramienta requiere confirmación del contacto |
| Aprobación concedida | El contacto confirmó la ejecución |
| Aprobación denegada | El contacto rechazó la ejecución |
| Integración completada | La integración se ejecutó correctamente |
| Integración fallida | La integración falló |
Eventos sobre las búsquedas que el agente realiza en su base de conocimiento para recuperar información relevante durante la llamada.
| Evento | Descripción |
| - | - |
| Búsqueda RAG completada | Una búsqueda en la base de conocimiento devolvió resultados relevantes |
| Búsqueda RAG sin resultados | Una búsqueda en la base de conocimiento no devolvió coincidencias |
| Búsqueda RAG fallida | Una búsqueda en la base de conocimiento falló |
Eventos sobre las transiciones entre nodos en agentes con caminos conversacionales.
| Evento | Descripción |
| - | - |
| Transición de camino | El agente se movió de un nodo a otro |
| Generación de nodo iniciada | El agente comenzó a generar una respuesta en un nodo |
| Error de camino | Ocurrió un error durante la ejecución del camino |
Eventos sobre el proceso de transferencia a un agente humano.
| Evento | Descripción |
| - | - |
| Participante humano marcando | Se está llamando al agente humano |
| Participante humano contestó | El agente humano contestó |
| Participante humano desconectado | El agente humano se desconectó |
| Transferencia completada | La transferencia se completó |
Eventos sobre las ejecuciones de flujos (workflows) vinculadas a la llamada: envíos a tus endpoints, flujos pre-llamada y herramientas de workflow invocadas durante la conversación.
| Evento | Descripción |
| - | - |
| Workflow en cola | El workflow se puso en cola para envío |
| Workflow enviado | Se envió la petición HTTP del workflow |
| Workflow exitoso | El workflow recibió una respuesta exitosa |
| Workflow fallido | El workflow recibió una respuesta de error |
| Reintentos de workflow agotados | Se agotaron los reintentos del workflow |
| Flujo pre-llamada activado | Se activó un flujo pre-llamada antes de iniciar la llamada |
| Flujo pre-llamada completado | Un flujo pre-llamada terminó y devolvió sus datos |
| Herramienta de workflow invocada | Se invocó una herramienta de workflow durante la llamada |
| Herramienta de workflow completada | Una herramienta de workflow terminó correctamente |
| Herramienta de workflow fallida | Una herramienta de workflow falló |
| Herramienta de workflow interrumpida | Una herramienta de workflow fue interrumpida |
| Herramienta de workflow activada | Se activó una herramienta de workflow |
| Aprobación de workflow concedida | Se aprobó la ejecución de un workflow |
## Información de cada evento
Cada evento en el log incluye:
| Campo | Descripción |
| - | - |
| **Timestamp** | Fecha y hora exacta del evento |
| **Nivel** | Severidad del evento: INFO, WARNING, ERROR o CRITICAL |
| **Categoría** | A qué categoría pertenece (ciclo de vida, agente, etc.) |
| **Evento** | Nombre específico del evento |
| **Datos** | Información contextual según el tipo de evento |
### Niveles de severidad
| Nivel | Significado |
| - | - |
| **INFO** | Comportamiento normal y esperado |
| **WARNING** | Algo inesperado ocurrió pero se recuperó automáticamente |
| **ERROR** | Una operación falló (ej: integración con timeout, transferencia fallida) |
| **CRITICAL** | Un fallo grave que afectó la llamada completa |
Los logs están diseñados para darte visibilidad sobre lo que ocurrió en cada llamada sin exponerte a detalles de infraestructura internos.
# Monitoreo de Llamadas
Source: https://docs.diga.io/es/despliegue/monitoreo-logs
Consulta y analiza todas las llamadas realizadas por tus agentes en tiempo real
## Registro de Llamadas
El registro de llamadas te permite consultar y gestionar todas las llamadas realizadas por tus agentes en tiempo real. Usa los filtros para encontrar rápidamente cualquier conversación.
En este vídeo verás cómo investigar una llamada desde el registro: escuchar el audio, revisar la transcripción y analizar los logs.
### Acceder al Registro
Para acceder al registro de llamadas, simplemente navega a la sección **Registro de Llamadas** en el panel izquierdo. Allí encontrarás una tabla con todas las llamadas realizadas por tus agentes.
### Información de la Tabla
Cada entrada del registro muestra:
| Campo | Descripción |
| - | - |
| **Identificador** | ID único de la llamada (ej: `#ef52...`) con opción de copiar |
| **Agente** | Nombre del agente que atendió la llamada |
| **Tipo** | Indica si la llamada fue **Entrante** o **Saliente** |
| **Teléfono de contacto** | Número del cliente o contacto |
| **Motivo de finalización** | Cómo terminó la llamada |
| **Duración** | Tiempo total de la conversación |
| **Fecha** | Fecha y hora exacta de la llamada |
| **Acciones** | Enlace para ver los detalles completos |
### Motivos de finalización
La columna **Motivo de finalización** te indica cómo terminó cada llamada:
La llamada terminó correctamente y fue el agente quien la finalizó.
La llamada terminó correctamente y fue la persona al otro lado quien colgó.
La llamada se transfirió a una persona o a otro número.
El contacto no respondió a la llamada.
La llamada no pudo completarse por un error técnico.
La llamada no llegó a atenderse porque ya se estaba usando el máximo de [llamadas simultáneas](/es/plataforma/uso#llamadas-simultáneas) de tu plan.
La llamada estuvo esperando un hueco libre y se descartó antes de poder atenderse.
Si ves **Límite de concurrencia alcanzado** o **Tiempo de espera agotado** a menudo, estás perdiendo llamadas por el tope de tu plan. Revisa tu demanda real en [Ajustes > Uso](/es/plataforma/uso#llamadas-simultáneas).
### Indicadores en tiempo real
En la cabecera del registro verás dos indicadores del consumo de tu plan:
| Indicador | Qué muestra |
| - | - |
| **Live · X/Y llamadas simultáneas** | Las llamadas en curso ahora mismo frente al tope de tu plan. Si se supera el tope, el indicador avisa de las llamadas **overlimit** |
| **Min left: X/Y** | Los minutos que te quedan del plan. Al pasar el ratón verás cuándo se reinician |
Ambos indicadores enlazan a [Ajustes > Uso](/es/plataforma/uso), donde tienes el detalle completo.
## Detalles de Llamada
Al hacer clic en una llamada, accedes a su vista detallada con toda la información de la conversación.
### Información General
En la parte superior encontrarás:
* **ID de llamada**: Identificador único completo con opción de copiar
* **Estado**: Badge indicando si la llamada está completada, en curso, etc.
* **Fecha y hora**: Momento exacto en que se realizó la llamada
* **Agente**: Nombre del agente que atendió
* **Tipo**: Si fue entrante o saliente
* **Duración**: Tiempo total de la conversación
### Información del Contacto
El número de teléfono del contacto, mostrado como un enlace `tel:` en el que se puede hacer clic. Este campo se oculta cuando la llamada no tiene un contacto asociado.
Indica cómo terminó la llamada: "Cliente colgó", "Agente finalizó", "Transferida", etc.
### Reproductor de Audio
Escucha la grabación completa de la llamada:
* **Controles de reproducción**: Play, pausa y barra de progreso
* **Control de volumen**: Ajusta el nivel de audio
* **Indicador de tiempo**: Muestra el tiempo actual y duración total
Para descargar grabaciones, vuelve a la lista de llamadas, selecciona una o varias llamadas mediante las casillas de verificación y usa la acción de descarga masiva para exportarlas como un archivo ZIP. No existe un botón de descarga por llamada en el reproductor de audio.
Las grabaciones se almacenan de forma segura y se conservan según la política de almacenamiento de tu plan. Puedes descargarlas para archivo permanente.
### Transcripción de Llamada
La transcripción muestra la conversación completa en formato de chat:
**Formato de la transcripción:**
* **Contacto** (izquierda): Mensajes del cliente en burbujas alineadas a la izquierda
* **Agente** (derecha): Respuestas del agente en burbujas alineadas a la derecha
* **Marcas de tiempo**: Cada mensaje incluye la hora exacta
**Ejemplo de transcripción:**
```
Contacto - viernes, 12:00
"¿Escucháis?"
Agente - viernes, 12:00
"Hola, soy NataliA, su enfermera virtual de la Unidad de
Insuficiencia Cardiaca del Hospital, ¿qué tal está?"
Contacto - viernes, 12:00
"Hola, Natalia, pues estoy fenomenal."
Agente - viernes, 12:00
"Me alegro mucho de escuchar eso. ¿Me indica su nombre
para confirmar en su ficha?"
```
# Trazas de llamadas
Source: https://docs.diga.io/es/despliegue/trazas-llamadas
Visualiza el flujo completo de una llamada con trazas distribuidas para analizar tiempos y comportamiento
## ¿Qué son las trazas?
Las trazas te permiten ver el flujo completo de una llamada desglosado en pasos individuales llamados **spans**. Cada span representa una operación concreta — como un turno de conversación, una respuesta del agente o la ejecución de una herramienta — con su duración exacta.
Mientras que los [logs de llamadas](/es/despliegue/logs-llamadas) te dicen **qué pasó**, las trazas te dicen **cuánto tardó cada paso** y **cómo se relacionan entre sí**.
## Estructura de una traza
Cada llamada genera una traza con una estructura jerárquica. El span raíz representa la sesión completa, y dentro de él se anidan los pasos individuales:
```
Sesión del agente (llamada completa)
├── Turno del usuario
│ └── Usuario hablando
├── Turno del agente
│ ├── Generación LLM (respuesta de la IA)
│ ├── Síntesis de voz (texto a audio)
│ ├── Herramienta ejecutada (si aplica)
│ └── Agente hablando
├── Transición de camino (si usa caminos conversacionales)
└── ...más turnos
```
## Tipos de spans
| Span | Qué representa |
| - | - |
| **Sesión del agente** | La llamada completa de inicio a fin |
| **Turno del usuario** | Un turno completo del contacto hablando |
| **Turno del agente** | Un turno completo del agente respondiendo |
| **Generación LLM** | El tiempo que tardó la IA en generar la respuesta |
| **Síntesis de voz** | El tiempo de conversión de texto a audio |
| **Herramienta ejecutada** | La ejecución de una herramienta (integración, transferencia, etc.) |
| **Transición de camino** | Un cambio de nodo en agentes con caminos conversacionales |
Los nombres de los spans que se muestran en la interfaz de trazas provienen de la instrumentación subyacente, por lo que pueden diferir ligeramente de los nombres descriptivos de esta tabla. Las trazas también dependen de la disponibilidad del almacenamiento de trazas y pueden no aparecer si este no está disponible temporalmente.
## Información disponible en cada span
Dependiendo del tipo de span, puedes ver diferentes atributos:
### Turnos de conversación
| Atributo | Descripción |
| - | - |
| **Mensaje del usuario** | Lo que dijo el contacto |
| **Respuesta del agente** | Lo que respondió el agente |
| **Interrumpido** | Si el contacto interrumpió al agente |
### Herramientas ejecutadas
| Atributo | Descripción |
| - | - |
| **Nombre de la herramienta** | Qué herramienta se ejecutó |
| **Argumentos** | Con qué parámetros se llamó |
### Transiciones de camino
| Atributo | Descripción |
| - | - |
| **Nodo origen** | Desde qué nodo se hizo la transición |
| **Nodo destino** | A qué nodo se movió el agente |
| **Tipo de nodo** | El tipo del nodo destino |
## Casos de uso
Identifica qué paso está tardando más: ¿la generación de la IA? ¿La síntesis de voz? ¿Una integración externa?
Confirma que los caminos conversacionales siguen las transiciones esperadas entre nodos.
Revisa qué herramientas se ejecutaron, con qué parámetros y cuánto tardaron.
Detecta en qué momentos los contactos interrumpieron al agente y cómo respondió.
# Introducción
Source: https://docs.diga.io/es/index
Diga es la plataforma no-code para crear agentes de voz con IA que atienden llamadas. Empieza aquí para construir, configurar y desplegar tu primer agente.
## ¿Qué es Diga?
Diga es una plataforma no-code diseñada para ser **simple, potente y fácil de adoptar.** Tanto si formas parte de una consultora, agencia, pyme o cualquier tipo de negocio que necesite automatizar llamadas, aquí encontrarás la información necesaria para crear y gestionar agentes de voz que funcionan de manera natural y eficiente.
En esta documentión aprenderás a configurar agentes, gestionar proyectos con espacios de trabajo y facturación independientes, integrar sistemas externos mediante MCP o APIs personalizadas, y a conectar números de teléfono propios o adquiridos desde la plataforma a través de SIP trunk.
Nuestro objetivo es ofrecerte una guía clara para que puedas trabajar con Diga de forma autónoma y segura.
Nos encanta tenerte aquí. Explora, crea e impulsa tu negocio.
Si quieres una visión general antes de empezar, este vídeo te hace un recorrido completo por la plataforma: proyectos, Melo, agentes, flujos, bases de conocimiento, números de teléfono y analíticas.
Sigue nuestra guía de inicio rápido.
## Explorar
Aprende a crear prompts efectivos para tus agentes.
Diseña flujos para interacciones complejas.
Obtén números españoles para tus agentes.
Entiende las métricas clave de rendimiento.
# Servidor MCP de Diga para asistentes de IA
Source: https://docs.diga.io/es/mcp/servidor-mcp
Conecta Cursor, Claude, Codex y otros clientes MCP a Diga iniciando sesión con tu cuenta de Diga o con una API key de proyecto.
Usa el servidor Model Context Protocol (MCP) alojado por Diga para crear y gestionar agentes de voz desde asistentes de IA y herramientas de desarrollo compatibles.
Esta página explica cómo conectar un asistente **a Diga**. Para que un agente de voz de Diga acceda a un servidor MCP externo durante una llamada, consulta [Integraciones MCP](../build/integraciones/integraciones-mcp).
## Requisitos previos
Antes de comenzar, necesitas:
* Una cuenta de Diga que pertenezca al menos a un proyecto
* Un cliente MCP compatible con servidores remotos mediante Streamable HTTP
* Solo si usas una API key en lugar de iniciar sesión: una API key de Diga del proyecto que quieres gestionar. Sigue los pasos para [crear una API key](../plataforma/api-keys#crear-una-api-key) y crea una clave restringida con solo los permisos que necesite tu asistente.
## Qué puedes hacer
El servidor MCP de Diga convierte las operaciones de la API de Diga en herramientas que tu asistente puede descubrir y utilizar. Según tus permisos, puedes usar lenguaje natural para:
* Crear, actualizar, publicar, listar y consultar agentes de voz y sus versiones
* Crear llamadas y consultar sus detalles, mensajes, grabaciones, logs y trazas
* Crear y mantener bases de conocimiento a partir de texto, URLs y archivos
* Gestionar números de teléfono, voces, integraciones, webhooks y flujos
* Consultar miembros, uso, facturación y otros recursos del proyecto
Tu cliente MCP muestra las herramientas exactas disponibles, incluida la descripción y los parámetros requeridos de cada una.
## Elige cómo autenticarte
Tu cliente MCP se conecta a Diga mediante Streamable HTTP. Elige una de estas dos formas de autenticarte:
| | Iniciar sesión con Diga (OAuth) | API key |
| - | - | - |
| Configuración | Añade solo la URL del servidor. Tu cliente abre una ventana del navegador donde inicias sesión en Diga. | Añade la URL del servidor y un header `x-api-key`. |
| Permisos | Tu rol en el proyecto | Las restricciones de la clave |
| Proyecto | Cualquier proyecto al que pertenezcas. Elige uno después de conectar y cámbialo cuando quieras. | Fijo al proyecto donde se creó la clave |
| Ideal para | Personas que usan un asistente de forma interactiva | Scripts, entornos compartidos y clientes sin soporte de OAuth |
| Ajuste | Valor |
| - | - |
| Nombre del servidor | `diga` |
| URL del servidor | `https://mcp.diga.io/mcp` |
| Header de API key (solo con API key) | `x-api-key: ` |
**Al iniciar sesión con Diga:** tu cuenta puede pertenecer a varios proyectos, así que el servidor necesita saber en cuál trabajar. La primera vez que pides algo, el asistente lista tus proyectos y te pide que elijas uno. También puede llamar directamente a la herramienta `diga_select_project`. La elección se recuerda durante 24 horas y puedes cambiar de proyecto en cualquier momento pidiéndoselo al asistente.
**Al usar una API key:** la clave pertenece al proyecto donde la creaste, así que no hace falta elegir. Para gestionar otro proyecto, sustituye la clave por una de ese proyecto.
## Conecta tu cliente MCP
Elige tu cliente. Si usas API key, sustituye `` por tu API key completa de Diga.
Abre **Settings → Connectors → Add custom connector**, ponle el nombre **Diga** e introduce `https://mcp.diga.io/mcp` como URL. Al activar el conector, Claude abre una ventana del navegador para iniciar sesión en Diga.
Para usar una API key, abre **Request headers** en los ajustes del conector y añade `x-api-key` con tu clave como valor. Si tu versión de Claude no muestra esa opción, usa el puente `mcp-remote` en Claude Desktop (**Settings → Developer → Edit Config**):
```json theme={null}
{
"mcpServers": {
"diga": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.diga.io/mcp", "--header", "x-api-key:"]
}
}
}
```
Inicia sesión con Diga:
```bash theme={null}
claude mcp add --transport http diga https://mcp.diga.io/mcp
```
Después ejecuta `/mcp` dentro de Claude Code y elige **diga** para completar el inicio de sesión en el navegador.
Para usar una API key:
```bash theme={null}
claude mcp add --transport http diga \
--header "x-api-key: " \
https://mcp.diga.io/mcp
```
Abre **Cursor Settings → MCP → Add new global MCP server**. Para iniciar sesión con Diga, añade solo la URL y completa el inicio de sesión cuando Cursor abra tu navegador:
```json theme={null}
{
"mcpServers": {
"diga": {
"url": "https://mcp.diga.io/mcp"
}
}
}
```
Para usar una API key, añade el header:
```json theme={null}
{
"mcpServers": {
"diga": {
"url": "https://mcp.diga.io/mcp",
"headers": {
"x-api-key": ""
}
}
}
}
```
Añade el servidor a `~/.codex/config.toml`:
```toml theme={null}
[mcp_servers.diga]
url = "https://mcp.diga.io/mcp"
```
Para iniciar sesión con Diga, ejecuta `codex mcp login diga` y completa el inicio de sesión en el navegador.
Para usar una API key, añade `bearer_token_env_var = "DIGA_API_KEY"` al bloque anterior y define la variable antes de iniciar Codex:
```bash theme={null}
export DIGA_API_KEY=""
```
Codex envía este valor como `Authorization: Bearer `, un formato que también acepta el servidor MCP de Diga.
Configura un servidor remoto Streamable HTTP con la URL `https://mcp.diga.io/mcp`. Los clientes compatibles con OAuth descubren automáticamente el inicio de sesión de Diga y abren una ventana del navegador. Para acceder con API key, añade el header:
```json theme={null}
{
"name": "diga",
"url": "https://mcp.diga.io/mcp",
"headers": {
"x-api-key": ""
}
}
```
Nunca incluyas una API key en la URL del servidor ni la subas al control de versiones. Las URLs pueden aparecer en el historial, los logs del proxy y las analíticas. Usa variables de entorno cuando tu cliente MCP lo permita.
## Verifica la conexión
Después de guardar la configuración, reinicia o recarga tu cliente MCP. Comprueba que aparece un servidor llamado **diga** y que sus herramientas están disponibles.
Empieza con una solicitud de solo lectura, por ejemplo:
> Lista mis agentes de Diga.
Si iniciaste sesión con Diga y perteneces a más de un proyecto, el asistente te preguntará primero qué proyecto usar. Tu cliente debería pedir confirmación antes de ejecutar una herramienta si sus ajustes de permisos así lo requieren.
## Solución de problemas
Iniciaste sesión con Diga y todavía no has elegido un proyecto, o la elección caducó pasadas 24 horas. Dile al asistente qué proyecto usar o pídele que liste tus proyectos primero.
Tu cuenta de Diga tiene activada la autenticación en dos pasos. La pantalla de autorización te pide el código al iniciar sesión. Si la conexión se aprobó sin él, desconecta y vuelve a conectar el servidor de Diga en tu cliente MCP e introduce el código cuando te lo pida. Como alternativa, conéctate con una API key.
Tu cliente MCP no admite OAuth para servidores remotos. Conéctate con una API key de proyecto.
Si iniciaste sesión con Diga, puede que tu sesión haya caducado. Desconecta y vuelve a conectar el servidor para iniciar sesión de nuevo. Si usas una API key, confirma que has copiado la clave completa y que el cliente la envía como `x-api-key` sin el prefijo `Bearer`. Si usas el header `Authorization`, su valor debe ser `Bearer `.
Estás autenticado, pero no tienes permiso para usar ese recurso. Si iniciaste sesión con Diga, pide a un administrador del proyecto que actualice tu rol. Si usas una API key, actualiza las restricciones de la clave en **Ajustes → Proyecto → API Keys** o usa otra clave restringida con el permiso necesario.
Si iniciaste sesión con Diga, pide al asistente que cambie al proyecto correcto. Si usas una API key, la clave determina el proyecto. Sustitúyela por una clave creada en el proyecto de Diga correcto y reinicia el cliente MCP para que vuelva a cargar la configuración.
Verifica que la URL sea exactamente `https://mcp.diga.io/mcp` y que el cliente admita servidores MCP remotos mediante Streamable HTTP. Algunos clientes necesitan reiniciarse después de cambiar la configuración.
## Recomendaciones de seguridad
* Prefiere iniciar sesión con Diga para el uso interactivo. El acceso sigue tu rol y termina al desconectar.
* Si usas API keys, crea una clave diferente para cada cliente MCP y entorno
* Concede solo los permisos de lectura o escritura que necesite el asistente
* Revisa las llamadas a herramientas antes de aprobar acciones que modifiquen o eliminen recursos
* Rota una clave inmediatamente si queda expuesta
# Gestión de citas (Cal.com)
Source: https://docs.diga.io/es/plantillas/agentes/gestion-citas-calcom
Agente que agenda, reprograma y cancela citas por voz usando Cal.com
**Flujos relacionados:** [Obtener tipos de cita (Cal.com)](/es/plantillas/flujos/obtener-eventos-calcom), [Comprobar disponibilidad (Cal.com)](/es/plantillas/flujos/comprobar-disponibilidad-calcom), [Crear cita (Cal.com)](/es/plantillas/flujos/crear-cita-calcom), [Buscar cita (Cal.com)](/es/plantillas/flujos/buscar-cita-calcom), [Reprogramar cita (Cal.com)](/es/plantillas/flujos/reprogramar-cita-calcom) y [Cancelar cita (Cal.com)](/es/plantillas/flujos/cancelar-cita-calcom).
Recepcionista telefónica para una clínica que agenda, reprograma y cancela citas usando Cal.com como calendario.
A diferencia de [Gestión de citas (Google Calendar)](/es/plantillas/agentes/gestion-citas-google-calendar), esta plantilla cubre el ciclo completo de la cita: no solo crea, también localiza, mueve y anula reservas ya existentes, y trae los tipos de cita disponibles automáticamente al principio de la llamada en lugar de tenerlos fijados en el prompt.
## Qué hace
Atiende las llamadas de tus pacientes, identifica qué tipo de consulta necesitan, consulta los huecos libres en Cal.com y deja la cita creada — o localiza una cita existente para cambiarla de hora o cancelarla.
Es un agente de [prompt único](/es/build/agentes/prompt-unico) en español, con un tono cercano y serio pensado para gestión de citas médicas. Nunca da consejos ni disclaimers médicos: se limita a la agenda.
La plantilla completa son **seis flujos**. Uno se ejecuta automáticamente antes de que el agente hable; los otros cinco son las herramientas que usa durante la conversación.
| Flujo | Cuándo se ejecuta | Papel |
| - | - | - |
| [Obtener tipos de cita (Cal.com)](/es/plantillas/flujos/obtener-eventos-calcom) | Antes (pre-llamada) | Trae los tipos de cita disponibles |
| [Comprobar disponibilidad (Cal.com)](/es/plantillas/flujos/comprobar-disponibilidad-calcom) | Durante | Herramienta `comprobar_disponibilidad` |
| [Crear cita (Cal.com)](/es/plantillas/flujos/crear-cita-calcom) | Durante | Herramienta `crear_cita` |
| [Buscar cita (Cal.com)](/es/plantillas/flujos/buscar-cita-calcom) | Durante | Herramienta `buscar_cita` |
| [Reprogramar cita (Cal.com)](/es/plantillas/flujos/reprogramar-cita-calcom) | Durante | Herramienta `reprogramar_cita` |
| [Cancelar cita (Cal.com)](/es/plantillas/flujos/cancelar-cita-calcom) | Durante | Herramienta `cancelar_cita` |
### Cómo transcurre la llamada
1. **Saluda e identifica la intención.** Avisa de que la llamada puede ser grabada y pregunta qué necesita el paciente: cita nueva, cambiar una que ya tiene, o anularla.
2. **Cita nueva.** Pregunta el tipo de cita (usando los tipos que trajo [Obtener tipos de cita](/es/plantillas/flujos/obtener-eventos-calcom)) y el día. Llama a `comprobar_disponibilidad`, ofrece el hueco o dos alternativas, pide nombre y correo, y confirma antes de llamar a `crear_cita`.
3. **Reprogramar.** Pide el correo con el que se reservó, llama a `buscar_cita` para localizarla, pregunta el nuevo día, comprueba disponibilidad para el mismo tipo de cita y confirma antes de llamar a `reprogramar_cita`.
4. **Cancelar.** Pide el correo, localiza la cita con `buscar_cita`, repite en voz alta el día y la hora, y solo cancela con un sí explícito — cualquier duda del cliente detiene la cancelación.
5. **Situaciones especiales.** Si el paciente describe síntomas de urgencia, salta el flujo normal y ofrece el primer hueco libre del día. Si pregunta por precios, resultados o cualquier tema fuera de la agenda, dice que el equipo se lo verá y no inventa una respuesta. Nunca lee en voz alta los identificadores internos de citas o tipos de cita.
El agente nunca menciona que está usando una herramienta ni explica sus resultados internos — habla siempre en función del resultado, no del proceso.
## Qué necesitas
* Una [conexión](/es/plataforma/conexiones) de Cal.com
* El flujo [Obtener tipos de cita (Cal.com)](/es/plantillas/flujos/obtener-eventos-calcom)
* El flujo [Comprobar disponibilidad (Cal.com)](/es/plantillas/flujos/comprobar-disponibilidad-calcom)
* El flujo [Crear cita (Cal.com)](/es/plantillas/flujos/crear-cita-calcom)
* El flujo [Buscar cita (Cal.com)](/es/plantillas/flujos/buscar-cita-calcom)
* El flujo [Reprogramar cita (Cal.com)](/es/plantillas/flujos/reprogramar-cita-calcom)
* El flujo [Cancelar cita (Cal.com)](/es/plantillas/flujos/cancelar-cita-calcom)
## Puesta en marcha
En **Agentes**, pulsa **Crear Agente**, selecciona la plantilla "Gestión de citas (Cal.com)" y **Usar plantilla**.
| Variable | Qué poner |
| - | - |
| `<>` | El nombre del/de la agente |
| `<>` | El nombre de tu clínica |
| `<>` | Los síntomas o palabras que deben tratarse como urgencia |
`<>` y `<>` aparecen dos veces cada una: en el bloque **Identidad** y en el saludo inicial del **Flujo de la llamada**. Cámbialas en los dos sitios. `<>` aparece una vez, en **Situaciones especiales**.
Crea los seis flujos desde el apartado **Flujo** en **Herramientas**, o directamente desde este agente. [Obtener tipos de cita](/es/plantillas/flujos/obtener-eventos-calcom) va como flujo **pre-llamada**; los otros cinco son herramientas que el agente invoca por su nombre — `comprobar_disponibilidad`, `crear_cita`, `buscar_cita`, `reprogramar_cita` y `cancelar_cita` — así que los nombres deben coincidir exactamente.
Todos apuntan a la **misma cuenta de Cal.com**. Si usas cuentas distintas para consultar y para crear, el agente ofrecerá huecos que luego no podrá reservar.
Varios flujos traen `Europe/Madrid` fijado. Si operas en otra zona horaria, revísala en cada uno: [Comprobar disponibilidad](/es/plantillas/flujos/comprobar-disponibilidad-calcom#revisa-la-zona-horaria), [Crear cita](/es/plantillas/flujos/crear-cita-calcom#revisa-la-zona-horaria) y [Reprogramar cita](/es/plantillas/flujos/reprogramar-cita-calcom#revisa-la-zona-horaria).
El flujo [Crear cita (Cal.com)](/es/plantillas/flujos/crear-cita-calcom#marca-start-date-como-obligatorio) trae la fecha de la cita como parámetro opcional, cuando en realidad es imprescindible. Corrígelo antes de publicar.
Cada flujo hay que [publicarlo](/es/build/flujos/crear-flujos#borrador-vs-publicado). Si este paso no se ejecuta, el agente no podrá hacer uso de los flujos.
Haz una [llamada de prueba](/es/build/agentes/llamadas-test) probando los tres caminos — cita nueva, reprogramar y cancelar — y comprueba que los cambios se reflejan en Cal.com. Después [publica el agente](/es/build/agentes/control-versiones).
## Antes de publicar
Ten en cuenta los siguientes puntos a la hora de configurar tu plantilla:
* **Crear cita sin comprobación previa:** si quieres que el flujo vuelva a comprobar el hueco justo antes de reservar (como sí hacen reprogramar y cancelar), tendrás que añadirlo tú; de base, [Crear cita](/es/plantillas/flujos/crear-cita-calcom#antes-de-publicar) confía en que Cal.com rechace un hueco ya ocupado, y si eso ocurre, el agente se queda sin respuesta en lugar de recibir un mensaje de error.
* **Motivo de la reprogramación:** si quieres que el motivo del cambio quede registrado en Cal.com, tendrás que añadirlo; de base, [Reprogramar cita](/es/plantillas/flujos/reprogramar-cita-calcom#antes-de-publicar) lo manda siempre vacío, aunque sí recoge el motivo de la cancelación.
* **Transferir a una persona:** añade la [herramienta de transferencia](/es/build/agentes/herramientas-llamada) si quieres que el agente pueda hacerlo; de base, ante temas fuera de la agenda dice que el equipo se lo verá, pero no transfiere la llamada.
* **Atender en varios idiomas:** cambia el [selector de idioma](/es/build/agentes/personalizacion-llamada#identidad-del-agente) a **Multilingüe** para que el agente detecte el idioma de cada paciente y responda en ese mismo idioma. Por defecto solo habla español.
* **Tipos de cita nuevos en Cal.com:** aparecen solos en la siguiente llamada gracias al flujo pre-llamada — no hace falta tocar el prompt cada vez que añades o quitas un tipo de cita en Cal.com.
## Siguientes Pasos
El flujo que prepara la llamada.
El flujo que consulta los huecos libres.
El paso previo a reprogramar o cancelar.
Si quieres modificar el prompt de la plantilla.
# Gestión de citas (Google Calendar)
Source: https://docs.diga.io/es/plantillas/agentes/gestion-citas-google-calendar
Recepcionista telefónica que consulta tu agenda y deja la cita creada en Google Calendar
**Flujos relacionados:** [Comprobar disponibilidad (Google Calendar)](/es/plantillas/flujos/comprobar-disponibilidad) y [Crear cita (Google Calendar)](/es/plantillas/flujos/crear-cita).
## Qué hace
Atiende las llamadas de tus clientes, identifica en qué centro quieren ser atendidos, consulta los huecos libres de tu calendario y deja la cita creada.
Es un agente de [prompt único](/es/build/agentes/prompt-unico) en español, con un tono pausado pensado para la gestión de citas de tu negocio.
### Cómo transcurre la llamada
1. **Ubica al cliente.** Pregunta a qué centro quiere acudir y, si no sabe decirlo, lo deduce de la base de conocimiento. Este paso es opcional y basta con cambiar el prompt para que el agente se ajuste a la gestión de citas de un único centro.
2. **Consulta la agenda.** Llama a `comprobar_disponibilidad` con la hora de apertura y de cierre del día que pide el cliente, y recibe los huecos libres ya calculados, en hora local. Si el cliente cambia de día o de hora, vuelve a llamar a la herramienta.
3. **Ofrece y recoge los datos.** Solo propone horas que caben enteras dentro de un mismo hueco libre: si la que pidió el cliente no cabe, le ofrece las dos alternativas más cercanas. Cuando el cliente elige una, le pide el nombre y el teléfono.
4. **Crea la cita.** Llama a `crear_cita`, que vuelve a comprobar el hueco antes de dar de alta el evento. Si mientras hablabais ha entrado otra cita en esa franja, el flujo no crea nada y el agente ofrece otra hora.
## Qué necesitas
* Una [conexión](/es/plataforma/conexiones) de Google Calendar
* El flujo [Comprobar disponibilidad (Google Calendar)](/es/plantillas/flujos/comprobar-disponibilidad)
* El flujo [Crear cita (Google Calendar)](/es/plantillas/flujos/crear-cita)
* Una [base de conocimiento](/es/build/bases-conocimiento) con tus centros: dirección, barrio y horario (opcional)
## Puesta en marcha
En **Agentes**, pulsa **Crear Agente**, selecciona la plantilla y **Usar plantilla**.
| Variable | Qué poner |
| - | - |
| `<>` | El nombre del/de la asistente |
| `<>` | El nombre de tu empresa |
En el prompt, edita el bloque **Horario de llamadas** con el horario real de tu centro: es de ahí de donde el agente saca la hora de apertura y de cierre que le pasa a `comprobar_disponibilidad`, así que si no cuadra, los huecos que ofrezca tampoco.
La duración de la cita viene fijada en 15 minutos y aparece en dos sitios del prompt: en las instrucciones de `comprobar_disponibilidad`, junto al ejemplo de hasta qué hora se puede ofrecer dentro de un hueco, y en las de `crear_cita`. Cámbiala en los dos.
Crea los flujos [Comprobar disponibilidad (Google Calendar)](/es/plantillas/flujos/comprobar-disponibilidad) y [Crear cita (Google Calendar)](/es/plantillas/flujos/crear-cita) desde el apartado **Flujo** en **Herramientas**. Los dos tienen que apuntar al **mismo calendario**: si no, el agente ofrece huecos de una agenda y crea la cita en otra.
Así se crea un flujo sin salir del agente:
Los nombres deben coincidir exactamente — `comprobar_disponibilidad` y `crear_cita` — porque el prompt los invoca de forma literal.
Los dos flujos vienen con la zona horaria fijada en `Europe/Madrid`. Si operas en otra, revísala antes de seguir: son tres campos en [Comprobar disponibilidad](/es/plantillas/flujos/comprobar-disponibilidad#revisa-la-zona-horaria) y dos en [Crear cita](/es/plantillas/flujos/crear-cita#revisa-la-zona-horaria).
Cada flujo hay que [publicarlo](/es/build/flujos/crear-flujos#borrador-vs-publicado), si este paso no se ejecuta, el agente no podrá hacer uso de los flujos.
Sube el listado de centros y vincúlalo al agente. El agente lo consulta para ubicar al cliente que no sabe decir a qué centro acude.
Haz una [llamada de prueba](/es/build/agentes/llamadas-test) agendando una cita real, comprueba que aparece en el calendario a la hora correcta y [publica el agente](/es/build/agentes/control-versiones). Para la llamada de prueba, tienes que pulsar en **Test**.
### Ejemplo de conversación
```
Agente: Le atiende Gema, una agente de Diga. ¿En qué puedo ayudarle?
Cliente: Buenos días, quería pedir cita.
Agente: Claro que sí. ¿A qué centro quiere acudir?
Cliente: Al que está al lado del mercado.
Agente: [consulta la base de conocimiento]
Ese es el centro de Chamberí, en la calle Fuencarral. ¿Qué día le viene bien?
Cliente: Mañana por la mañana, si puede ser.
Agente: Déjeme mirar la agenda un momento.
[llama a comprobar_disponibilidad]
Mañana martes tengo libre a las nueve y media, a las diez y cuarto y a las once.
¿Cuál prefiere?
Cliente: A las diez y cuarto.
Agente: Perfecto. ¿Me dice su nombre y apellidos?
Cliente: Manuel Ortega Ruiz.
Agente: ¿Y un teléfono de contacto?
Cliente: Seis once, veintidós, treinta y tres, cuarenta y cuatro.
Agente: [llama a crear_cita]
Listo, Manuel. Le he reservado la cita mañana martes a las diez y cuarto
en el centro de Chamberí. ¿Necesita algo más?
Cliente: No, muchas gracias.
Agente: A usted. Que tenga un buen día.
```
## Antes de publicar
Ten en cuenta los siguientes puntos a la hora de configurar tu plantilla:
* **Anular o modificar citas:** si necesitas esta función, tendrás que añadirla; el agente dice que lo gestiona, pero no hay ninguna herramienta detrás.
* **Transferir o colgar:** añade la [herramienta de transferencia](/es/build/agentes/herramientas-llamada) si quieres que el agente pueda hacerlo; de base no cuenta con ninguna de las dos.
* **Atender en varios idiomas:** cambia el [selector de idioma](/es/build/agentes/personalizacion-llamada#identidad-del-agente) a **Multilingüe** para que el agente detecte el idioma de cada cliente y responda en ese mismo idioma. Por defecto solo habla español, aunque el cliente cambie de idioma.
* **Agendas separadas por centro:** duplica los dos flujos y ponles nombres específicos, ajustando el prompt en consecuencia. De base, el agente trabaja contra un solo calendario: puede ubicar al cliente en varios centros a través de la base de conocimiento, pero todas las citas acaban en la misma agenda.
## Siguientes Pasos
El flujo que consulta los huecos libres.
El flujo que da de alta el evento.
Si quieres modificar el prompt de la plantilla.
# Gestión de leads (HubSpot)
Source: https://docs.diga.io/es/plantillas/agentes/gestion-leads
Agente que llama a los leads que rellenan tu formulario y les agenda una cita con el equipo
**Flujos relacionados:** [Disparador de llamada mediante Webhook](/es/plantillas/flujos/llamada-saliente-formulario), [Comprobar disponibilidad (Google Calendar)](/es/plantillas/flujos/comprobar-disponibilidad), [Crear cita (Google Calendar)](/es/plantillas/flujos/crear-cita) y [Gestión de lead postllamada (HubSpot)](/es/plantillas/flujos/gestion-leads-hubspot).
La plantilla está pensada para casos en los que quieres contactar rápidamente con un lead después de que haya dejado sus datos en tu web, un anuncio o cualquier otro formulario.
## Qué hace
El agente se encarga de contactar con el lead, consultar la disponibilidad del equipo y crear la cita en Google Calendar. Después de la llamada, puedes automatizar la actualización del lead en HubSpot y el envío de emails.
La plantilla completa son **cuatro flujos**, pero el agente solo maneja dos como herramientas. Los otros dos envuelven la llamada: uno la origina y otro recoge el resultado cuando termina.
| Flujo | Cuándo se ejecuta | Papel |
| - | - | - |
| [Disparador de llamada mediante Webhook](/es/plantillas/flujos/llamada-saliente-formulario) | Antes | Recibe el formulario y lanza la llamada |
| [Comprobar disponibilidad (Google Calendar)](/es/plantillas/flujos/comprobar-disponibilidad) | Durante | Herramienta `comprobar_disponibilidad` |
| [Crear cita (Google Calendar)](/es/plantillas/flujos/crear-cita) | Durante | Herramienta `crear_cita` |
| [Gestión de lead postllamada (HubSpot)](/es/plantillas/flujos/gestion-leads-hubspot) | Después | Actualiza el CRM y manda el email |
### Cómo transcurre la llamada
1. **Se presenta y pide permiso.** Dice que es una IA, menciona que el lead acaba de contactar y pregunta si tiene treinta segundos. Si el lead se muestra molesto, se despide sin insistir.
2. **Pregunta cuándo le viene bien.** Espera a que el lead diga una franja o una hora.
3. **Consulta la agenda.** Avisa con un "dame un segundito" y llama a `comprobar_disponibilidad`. Recibe los huecos libres en hora local.
4. **Ofrece dos opciones.** Ofrece hasta dos horarios disponibles. Si el horario solicitado no está disponible, propone las alternativas más cercanas. Si no hay disponibilidad ese día, pide al lead otra fecha.
5. **Pide confirmación explícita.** Repite día y hora en voz alta y espera un sí antes de tocar el calendario. Si el lead corrige algo, vuelve a llamar a `comprobar_disponibilidad` con los datos nuevos.
6. **Crea la cita.** Llama a `crear_cita`, que vuelve a comprobar el hueco antes de dar de alta el evento. Después se despide y termina.
Cuando la llamada acaba, el flujo [Gestión de lead postllamada (HubSpot)](/es/plantillas/flujos/gestion-leads-hubspot) se dispara solo: detecta si contestó una persona, si se cerró cita, actualiza el contacto en HubSpot y envía el email que corresponda.
## Qué necesitas
* Un [número de teléfono](/es/telefonia/comprar-telefonos) desde el que llamar
* Una [conexión](/es/plataforma/conexiones) de Google Calendar, Gmail y HubSpot
* El flujo [Disparador de llamada mediante Webhook](/es/plantillas/flujos/llamada-saliente-formulario)
* El flujo [Comprobar disponibilidad (Google Calendar)](/es/plantillas/flujos/comprobar-disponibilidad)
* El flujo [Crear cita (Google Calendar)](/es/plantillas/flujos/crear-cita)
* El flujo [Gestión de lead postllamada (HubSpot)](/es/plantillas/flujos/gestion-leads-hubspot)
## Puesta en marcha
En **Agentes**, pulsa **Crear Agente**, selecciona la plantilla "Gestión de leads (HubSpot)" y **Usar plantilla**.
| Variable | Qué poner |
| - | - |
| `<>` | El nombre del/de la agente |
| `<>` | El nombre de tu empresa |
`<>` aparece dos veces: en el bloque **Identidad** y dentro del saludo del paso 1 de **Instrucciones de Tarea**. Cámbialo en los dos.
En el prompt, edita el bloque **Horario de llamadas** con el horario real de tu equipo. De ahí saca el agente la hora de apertura y de cierre que le pasa a `comprobar_disponibilidad`: si no cuadra, los huecos que ofrezca tampoco.
La duración viene fijada en 15 minutos y aparece en tres sitios del prompt: en el propio bloque de horario, en las instrucciones de `comprobar_disponibilidad` — junto al ejemplo de hasta qué hora se puede ofrecer dentro de un hueco — y en las de `crear_cita`. Cámbiala en los tres.
Crea los flujos [Comprobar disponibilidad (Google Calendar)](/es/plantillas/flujos/comprobar-disponibilidad) y [Crear cita (Google Calendar)](/es/plantillas/flujos/crear-cita) desde el apartado **Flujo** en **Herramientas**. Los dos tienen que apuntar al **mismo calendario**: si no, el agente ofrece huecos de una agenda y crea la cita en otra.
Así se crea un flujo sin salir del agente:
Los nombres deben coincidir exactamente — `comprobar_disponibilidad` y `crear_cita` — porque el prompt los invoca de forma literal. El añadido "(from template)" que se tiene de crear el flujo a partir de una plantilla se puede quitar a mano una vez que abres el flujo.
Los dos flujos vienen con la zona horaria fijada en `Europe/Madrid`. Si operas en otra, revísala antes de seguir: son tres campos en [Comprobar disponibilidad (Google Calendar)](/es/plantillas/flujos/comprobar-disponibilidad#revisa-la-zona-horaria) y dos en [Crear cita (Google Calendar)](/es/plantillas/flujos/crear-cita#revisa-la-zona-horaria).
Este agente no recibe llamadas: las hace. Crea el flujo [Disparador de llamada mediante Webhook](/es/plantillas/flujos/llamada-saliente-formulario) desde las plantillas de flujos, apunta tu formulario a su URL de webhook y selecciona ahí este agente.
Añade [Gestión de lead postllamada (HubSpot)](/es/plantillas/flujos/gestion-leads-hubspot) como [flujo post-llamada](/es/build/flujos/flujos-post-llamada) desde la sección **Flujo** del agente. Sin él, el agente agenda igual, pero nada queda registrado en tu CRM ni se envía ningún email. En la explicación del flujo hay además algunas recomendaciones para poder llevar la gestión de leads al siguiente nivel.
Ese flujo necesita el email del lead en la variable dinámica `mail`, que se define en el flujo de llamada saliente. Revisa el [paso correspondiente](/es/plantillas/flujos/llamada-saliente-formulario#pasa-los-datos-del-lead-al-agente) antes de darlo por bueno.
El prompt termina la llamada con un "y cuelga", pero la plantilla llega sin ninguna [herramienta de llamada](/es/build/agentes/herramientas-llamada) activada. Actívale **Colgar** si quieres que ese paso funcione de verdad; si no, la llamada se queda abierta hasta que cuelgue el lead o salte la inactividad.
Cada flujo hay que [publicarlo](/es/build/flujos/crear-flujos#borrador-vs-publicado). Si este paso no se ejecuta, el agente no podrá hacer uso de los flujos.
Haz una [llamada de prueba](/es/build/agentes/llamadas-test) agendando una cita real, comprueba que aparece en el calendario a la hora correcta y [publica el agente](/es/build/agentes/control-versiones). Para la llamada de prueba, tienes que pulsar en **Test**.
### Ejemplo de conversación
```
Agente: ¡Hola! Soy Nora, un agente de inteligencia artificial — sí, una IA te está
llamando. Vi que acabas de contactarnos por internet hace nada, y no he
perdido el tiempo. ¿Tienes treinta segundos?
Lead: Sí, dime.
Agente: Genial. Mi único trabajo es encontrarte un hueco en la agenda con el equipo,
así nos ahorramos el típico ir y venir de emails.
¿Cuándo te vendría bien que te llamásemos?
Lead: Mañana por la tarde si puede ser.
Agente: Dame un segundito que compruebe si tenemos huecos...
[llama a comprobar_disponibilidad]
Tengo mañana a las cuatro o a las cinco y media. ¿Cuál prefieres?
Lead: A las cuatro mejor.
Agente: Perfecto, jueves seis de marzo a las cuatro de la tarde. ¿Confirmas?
Lead: Sí, confirmado.
Agente: [llama a crear_cita]
Hecho, ya está en el calendario.
Eso es todo por mi parte, ¡gracias por el ratito! Que vaya bien.
```
## Antes de publicar
Ten en cuenta los siguientes puntos a la hora de configurar tu plantilla:
* **Colgar la llamada:** debes activar la [herramienta de llamada](/es/build/agentes/herramientas-llamada) **Colgar** para que el "y cuelga" del cierre funcione; la plantilla llega sin ella activada, así que sin este paso la llamada se queda abierta hasta que cuelgue el lead o salte la inactividad.
* **Marcar como "no contactar":** si necesitas que un lead quede marcado como tal, tienes que añadirlo tú al flujo post-llamada. El prompt lo anota al final del apartado de situaciones específicas, pero por sí solo no hay ninguna herramienta ni flujo que lo aplique.
* **Transferir a una persona:** añade la [herramienta de transferencia](/es/build/agentes/herramientas-llamada) o gestiónalo en el flujo posterior si quieres que esto ocurra de verdad. Ante la petición de hablar con alguien real, el agente de base dice que lo anota y que el equipo escribirá, pero no pasa nada más.
* **Reintentar llamadas sin respuesta:** si quieres que se reintente cuando el lead no contesta, tendrás que montarlo aparte. Cada formulario dispara una sola llamada.
* **Anular o modificar citas:** si necesitas esta función, tendrás que añadirla; la plantilla no la incluye.
* **Atender en varios idiomas:** cambia el [selector de idioma](/es/build/agentes/personalizacion-llamada#identidad-del-agente) a **Multilingüe** para que el agente detecte el idioma de cada lead y responda en ese mismo idioma. Por defecto solo habla español, aunque el lead cambie de idioma.
## Siguientes Pasos
El flujo que origina la llamada.
El flujo que recoge el resultado.
El flujo que consulta los huecos libres.
Si quieres modificar el prompt de la plantilla.
# Ventas outbound
Source: https://docs.diga.io/es/plantillas/agentes/ventas-outbound
Agente que llama en frío a prospectos, califica su interés y agenda una demo con ventas
**Flujos relacionados:** [Guardar resultado de llamada (Google Sheets)](/es/plantillas/flujos/guardar-resultado-llamada-sheets) y [Enviar información (WhatsApp)](/es/plantillas/flujos/enviar-informacion-whatsapp).
## Qué hace
Llama a un prospecto, presenta en una o dos frases la propuesta de valor de tu empresa, hace un par de preguntas de calificación, gestiona objeciones básicas y busca cerrar una demo de 15 minutos con el equipo comercial. Si no hay interés, se despide sin insistir y puede ofrecer mandar un recurso más adelante.
Es un agente de [prompt único](/es/build/agentes/prompt-unico) en español, con un tono profesional y cercano, respuestas de máximo dos o tres frases, y frases de transición suaves para sonar conversacional.
Esta plantilla no incluye un flujo que origine la llamada: asume que ya tienes tu propio disparador de llamadas salientes (por ejemplo, uno como [Disparador de llamada mediante Webhook](/es/plantillas/flujos/llamada-saliente-formulario)) o que la marcas manualmente.
| Flujo | Cuándo se ejecuta | Papel |
| - | - | - |
| [Guardar resultado de llamada (Google Sheets)](/es/plantillas/flujos/guardar-resultado-llamada-sheets) | Después | Extrae con IA el resultado y lo guarda en una hoja |
| [Enviar información (WhatsApp)](/es/plantillas/flujos/enviar-informacion-whatsapp) | Después | Manda un enlace de recursos por WhatsApp |
### Cómo transcurre la llamada
1. **Se presenta.** Saluda con el nombre del agente y de tu empresa, y confirma con quién habla.
2. **Explica el valor.** En una frase, dice por qué llama y qué problema resuelve tu empresa.
3. **Califica el interés.** Hace dos o tres preguntas para entender si el prospecto encaja: qué usa hoy, cuál es su principal problema.
4. **Gestiona objeciones.** Si el prospecto dice que no le interesa, responde con empatía y pregunta por su prioridad actual antes de insistir o retirarse.
5. **Cierra.** Si hay interés, propone agendar una demo de 15 minutos. Si no lo hay, se despide con educación y puede ofrecer mandar información por otro canal.
Si el prospecto interrumpe o se adelanta, el agente se detiene y responde solo a lo último que dijo, en lugar de completar su frase anterior.
## Qué necesitas
* Un [número de teléfono](/es/telefonia/comprar-telefonos) desde el que llamar
* Un disparador de llamadas salientes propio, que pase las variables dinámicas necesarias (ver más abajo)
* Una [conexión](/es/plataforma/conexiones) de Google Sheets y de WhatsApp Business, si vas a usar los flujos post-llamada
## Puesta en marcha
En **Agentes**, pulsa **Crear Agente**, selecciona la plantilla "Ventas outbound" y **Usar plantilla**.
| Variable | Qué poner |
| - | - |
| `<>` | El nombre del/de la agente |
| `<>` | El nombre de tu empresa |
Ambas aparecen en el bloque **Identidad del Agente** y en el saludo inicial. Cámbialas en los dos sitios.
A diferencia de otras plantillas, este agente necesita varias [variables dinámicas](/es/build/agentes/variables-dinamicas) distintas en **cada** llamada, no solo una:
| Variable | Qué contiene |
| - | - |
| `{{user_name}}` | Nombre del prospecto, usado en el saludo |
| `{{value_prop}}` | La propuesta de valor que se menciona al principio |
| `{{keyword_solution}}` | La solución o categoría de producto que se pregunta si ya usan |
| `{{pain_point}}` | El problema que se pregunta si tienen |
| `{{area}}` | El área sobre la que se pregunta la prioridad al gestionar una objeción |
Si tu disparador de llamadas no rellena alguna de estas, el agente la dirá literalmente entre llaves durante la llamada. Configúralas en el paso que origina la llamada, igual que se hace con `mail` en [Gestión de leads](/es/plantillas/agentes/gestion-leads#puesta-en-marcha).
Añade [Guardar resultado de llamada (Google Sheets)](/es/plantillas/flujos/guardar-resultado-llamada-sheets) y [Enviar información (WhatsApp)](/es/plantillas/flujos/enviar-informacion-whatsapp) desde la sección **Flujo** del agente si quieres registrar el resultado de cada llamada o hacer un seguimiento automático.
Cada flujo hay que [publicarlo](/es/build/flujos/crear-flujos#borrador-vs-publicado). Si este paso no se ejecuta, el agente no podrá hacer uso de ellos.
Haz una [llamada de prueba](/es/build/agentes/llamadas-test) pasando todas las variables dinámicas y comprueba que el agente las usa correctamente. Después [publica el agente](/es/build/agentes/control-versiones).
## Antes de publicar
Ten en cuenta los siguientes puntos a la hora de configurar tu plantilla:
* **Originar la llamada:** tienes que montar o reutilizar tu propio disparador de llamadas salientes; esta plantilla no incluye uno, a diferencia de [Gestión de leads](/es/plantillas/agentes/gestion-leads), que sí trae el suyo.
* **Variables dinámicas incompletas:** revisa el [paso correspondiente](#prepara-las-variables-dinamicas) antes de la primera llamada real — es el fallo más probable al configurar esta plantilla por primera vez, y el agente no avisa de que faltan, simplemente las lee literalmente.
* **Dar precios o hablar de temas técnicos:** el prompt pide explícitamente no dar precios concretos sin calificar antes y evitar jerga técnica; si tu producto lo requiere, ajusta esa sección.
* **Transferir a una persona:** añade la [herramienta de transferencia](/es/build/agentes/herramientas-llamada) si quieres poder pasar la llamada a un comercial humano en el momento; de base, el agente solo agenda una demo para más adelante.
* **Registrar el resultado o hacer seguimiento:** monta los flujos post-llamada [Guardar resultado de llamada](/es/plantillas/flujos/guardar-resultado-llamada-sheets) y [Enviar información](/es/plantillas/flujos/enviar-informacion-whatsapp) si los necesitas; de base, el agente no deja ningún rastro de la llamada una vez cuelga.
## Siguientes Pasos
Registra el resultado de cada llamada.
Hace seguimiento automático por WhatsApp.
Cómo pasar los datos de cada prospecto al prompt.
Si quieres modificar el prompt de la plantilla.
# Buscar cita (Cal.com)
Source: https://docs.diga.io/es/plantillas/flujos/buscar-cita-calcom
Flujo durante llamada que localiza las citas futuras de un cliente en Cal.com por su email
**Flujos relacionados:** [Reprogramar cita (Cal.com)](/es/plantillas/flujos/reprogramar-cita-calcom) y [Cancelar cita (Cal.com)](/es/plantillas/flujos/cancelar-cita-calcom).
**Agentes relacionados:** [Gestión de citas (Cal.com)](/es/plantillas/agentes/gestion-citas-calcom).
## Qué hace
El agente le pasa el email del cliente (confirmado antes en voz alta), y el flujo devuelve **las citas futuras** asociadas a ese email en Cal.com: tipo, fecha y hora en hora local, hasta un máximo de 10.
Es el paso obligatorio antes de reprogramar o cancelar: [Reprogramar cita](/es/plantillas/flujos/reprogramar-cita-calcom) y [Cancelar cita](/es/plantillas/flujos/cancelar-cita-calcom) necesitan el identificador (`uid`) de la reserva, y este flujo es el único sitio de donde el agente lo puede sacar.
Es un [flujo durante llamada](/es/build/flujos/flujos-durante-llamada): el agente lo ejecuta a mitad de conversación y espera el resultado para seguir hablando.
## Cómo funciona
| Paso | Qué hace |
| - | - |
| **Obtener fecha actual en UTC** | Calcula el instante actual, para no traer citas ya pasadas. |
| **Buscar reservas en Cal** | Consulta en Cal.com hasta 10 reservas futuras (`status: upcoming`) que coincidan con el nombre y el email del cliente. |
| **Formatear citas a hora local** | Extrae el tipo de cita del título de cada reserva, convierte fecha y hora a hora local, y ordena la lista cronológicamente. |
| **Devolver respuesta** | Entrega la lista al agente, indicándole que el `uid` es interno (nunca se dice en voz alta) y que ignore también `inicio_utc`. Si la lista llega vacía, le dice que pida el email de nuevo. |
## Qué necesitas
* Una [conexión](/es/plataforma/conexiones) de Cal.com
## Puesta en marcha
Desde la sección **Flujos**, abre el catálogo de plantillas y cópiala. El flujo se crea deshabilitado.
En el paso **Buscar reservas en Cal**, indica tu conexión de Cal.com.
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo.
Añádelo desde la sección **Flujos** del agente. El nombre del flujo es el nombre de la herramienta que ve el agente, así que déjalo en `buscar_cita`. Este paso no es necesario si el flujo se ha creado a partir del agente.
## Antes de publicar
* **La búsqueda es por nombre y email, no por teléfono.** Si el cliente llama desde un número distinto al que usó para reservar, el flujo igualmente encuentra la cita mientras el email coincida.
* **Trae hasta 10 citas futuras.** Si el cliente tiene más de 10 reservas pendientes, las más lejanas en el tiempo no aparecerán en la lista.
* **El tipo de cita se extrae del título de la reserva en Cal.com**, no de un campo dedicado. Si cambias el formato del título en Cal.com, revisa que el flujo lo siga interpretando bien.
* **Si el email no coincide con ninguna reserva, la lista llega vacía** y es el prompt del agente quien decide qué hacer — la plantilla del agente pide el correo de nuevo y, si sigue sin aparecer, avisa de que el equipo llamará.
## Siguientes Pasos
Usa el uid que devuelve este flujo.
También usa el uid que devuelve este flujo.
El agente que usa este flujo.
# Cancelar cita (Cal.com)
Source: https://docs.diga.io/es/plantillas/flujos/cancelar-cita-calcom
Flujo durante llamada que anula una reserva existente en Cal.com
**Flujos relacionados:** [Buscar cita (Cal.com)](/es/plantillas/flujos/buscar-cita-calcom).
**Agentes relacionados:** [Gestión de citas (Cal.com)](/es/plantillas/agentes/gestion-citas-calcom).
## Qué hace
El agente le pasa el identificador de la reserva (`booking_uid`, obtenido con [Buscar cita](/es/plantillas/flujos/buscar-cita-calcom)) y, si el cliente lo ha dicho, un motivo, y el flujo **anula la reserva** en Cal.com.
Igual que [Reprogramar cita](/es/plantillas/flujos/reprogramar-cita-calcom), distingue entre éxito y fallo: si Cal.com no puede cancelar la reserva, el agente recibe un mensaje distinto al de éxito en lugar de quedarse sin respuesta.
Es un [flujo durante llamada](/es/build/flujos/flujos-durante-llamada) en modo síncrono.
## Cómo funciona
| Paso | Qué hace |
| - | - |
| **Cancelar reserva en Cal** | Llama a Cal.com para anular la reserva indicada, con el motivo si lo hay. |
| **Comprobar estado de la cancelación** | Router que separa el resultado según si Cal.com devolvió éxito o no. |
| **Devolver respuesta (cancelada / error)** | Responde al agente con el mensaje que corresponda. |
Si el cliente no da ningún motivo, la plantilla del agente manda `Motivo no especificado`.
## Qué necesitas
* Una [conexión](/es/plataforma/conexiones) de Cal.com
* El flujo [Buscar cita (Cal.com)](/es/plantillas/flujos/buscar-cita-calcom), para obtener el `booking_uid`
## Puesta en marcha
Desde la sección **Flujos**, abre el catálogo de plantillas y cópiala. El flujo se crea deshabilitado.
En el paso **Cancelar reserva en Cal**, indica tu conexión de Cal.com.
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo.
Añádelo desde la sección **Flujos** del agente. El nombre del flujo es el nombre de la herramienta que ve el agente, así que déjalo en `cancelar_cita`. Este paso no es necesario si el flujo se ha creado a partir del agente.
## Antes de publicar
* **Cancelar es irreversible.** El flujo no pide confirmación por su cuenta: esa responsabilidad es del prompt del agente, que repite en voz alta el día y la hora antes de llamar a esta herramienta.
* **La comparación de éxito depende de un campo interno de la pieza de Cal.com** (`status: "success"`), igual que en [Reprogramar cita](/es/plantillas/flujos/reprogramar-cita-calcom#antes-de-publicar).
* **El flujo solo cancela.** No ofrece automáticamente otro hueco: si el cliente quiere una cita nueva después de cancelar, el prompt del agente es quien vuelve a arrancar el flujo de reserva.
## Siguientes Pasos
De aquí sale el uid que necesita este flujo.
La alternativa cuando el cliente quiere mover la cita en vez de anularla.
El agente que usa este flujo.
# Comprobar disponibilidad (Google Calendar)
Source: https://docs.diga.io/es/plantillas/flujos/comprobar-disponibilidad
Flujo durante llamada que devuelve los huecos libres de tu Google Calendar
**Flujos relacionados:** [Crear cita (Google Calendar)](/es/plantillas/flujos/crear-cita).
**Agentes relacionados:** [Gestión de citas (Google Calendar)](/es/plantillas/agentes/gestion-citas-google-calendar) y [Gestión de leads (HubSpot)](/es/plantillas/agentes/gestion-leads).
## Qué hace
El agente le pasa la hora de apertura y de cierre de tu centro para un día concreto (`start_date` y `end_date`, en hora local), y el flujo devuelve **los huecos que están libres** en tu Google Calendar dentro de esa franja, ya calculados. El agente no tiene que deducir nada: solo le quedan por ofrecer al cliente.
Cada hueco de la lista `huecos_libres` viene con tres campos, todos en hora local:
```json theme={null}
[{ "start": "2026-07-10T09:00", "end": "2026-07-10T11:00", "duracion_minutos": 120 },
{ "start": "2026-07-10T13:00", "end": "2026-07-10T14:00", "duracion_minutos": 60 }]
```
Si el día está completo o el centro está cerrado, la lista llega vacía.
Es un [flujo durante llamada](/es/build/flujos/flujos-durante-llamada): el agente lo ejecuta a mitad de conversación y espera el resultado para seguir hablando.
## Cómo funciona
| Paso | Qué hace |
| - | - |
| **Formatear fecha Inicio** y **Formatear fecha Final** | Convierten `start_date` y `end_date` de hora local a UTC, que es lo que espera Google Calendar. |
| **Buscar disponibilidad en calendario** | Consulta los intervalos ocupados del calendario dentro de esa franja. |
| **Calcular huecos libres** | Recorta los intervalos ocupados al horario, fusiona los que se solapan y devuelve lo que queda libre, en hora local según el input `zona_horaria`. |
| **Return Response** | Entrega los huecos libres al agente, indicándole que ya vienen en hora local. |
## Qué necesitas
* Una [conexión](/es/plataforma/conexiones) de Google Calendar
## Puesta en marcha
Desde la sección **Flujos**, abre el catálogo de plantillas y cópiala. El flujo se crea deshabilitado. También se puede crear directamente desde la plantilla de agente [Gestión de citas (Google Calendar)](/es/plantillas/agentes/gestion-citas-google-calendar).
En el paso **Buscar disponibilidad en calendario**, introduce tu conexión de Google Calendar y selecciona el calendario donde quieras que se creen las citas más adelante.
`Europe/Madrid` aparece en tres sitios: el campo **Input Time Zone** de **Formatear fecha Inicio** y **Formatear fecha Final** (convierten a UTC antes de consultar el calendario) y el input `zona_horaria` del paso **Calcular huecos libres** (devuelve los huecos a hora local). Si operas en otra zona horaria, cámbialos en los tres. El cambio de hora de verano/invierno se aplica solo.
El mensaje del paso **Return Response** también nombra `Europe/Madrid`: actualízalo para que el agente no reciba una zona horaria que no es la suya.
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo. Sabrás que el flujo ha sido publicado si no aparece el texto de Borrador.
Añádelo desde la sección **Flujos** del agente. El nombre del flujo es el nombre de la herramienta que ve el agente, así que déjalo en `comprobar_disponibilidad`. Este paso no es necesario si el flujo se ha creado a partir del agente.
## Antes de publicar
* El flujo **solo consulta**. El alta de la cita corre a cargo de [`crear_cita`](/es/plantillas/flujos/crear-cita).
* Está fijado a **un solo calendario**. Para varios centros con agendas distintas, duplica el flujo.
* Los huecos libres se calculan **dentro del horario que le pasa el agente**, no del horario real del centro. Si el agente manda mal la hora de apertura o de cierre, la lista sale mal: el horario vive en el prompt del agente, no en el flujo.
* El flujo **no sabe cuánto dura la cita**: devuelve los huecos enteros. Comprobar que la cita cabe en el hueco es cosa del prompt del agente.
* El paso **Return Response** le indica al agente que los huecos ya vienen en hora local y que no aplique ninguna corrección. Si editas ese mensaje, mantén esa instrucción: sin ella el agente puede volver a sumar o restar horas.
## Siguientes Pasos
El agente que usa este flujo.
Si quieres modificar los pasos del flujo.
# Comprobar disponibilidad (Cal.com)
Source: https://docs.diga.io/es/plantillas/flujos/comprobar-disponibilidad-calcom
Flujo durante llamada que devuelve los huecos libres de un tipo de cita en Cal.com
**Flujos relacionados:** [Crear cita (Cal.com)](/es/plantillas/flujos/crear-cita-calcom).
**Agentes relacionados:** [Gestión de citas (Cal.com)](/es/plantillas/agentes/gestion-citas-calcom).
## Qué hace
El agente le pasa el tipo de cita (`event_type_id`) y el rango horario a consultar (`start_time` y `end_time`, en hora local), y el flujo devuelve **los huecos libres** de Cal.com para ese tipo de cita dentro de esa franja, ya en hora local.
Cada hueco de la lista viene con `fecha` y `hora` en hora local, más un campo `inicio_utc` interno que el agente debe ignorar por completo.
Es un [flujo durante llamada](/es/build/flujos/flujos-durante-llamada): el agente lo ejecuta a mitad de conversación y espera el resultado para seguir hablando.
## Cómo funciona
| Paso | Qué hace |
| - | - |
| **Convertir rango a UTC** | Convierte `start_time` y `end_time` de hora local a UTC, respetando el cambio de hora de verano/invierno. |
| **Obtener huecos disponibles en Cal** | Consulta a Cal.com los huecos libres para el `event_type_id` indicado, dentro del rango convertido. |
| **Formatear huecos a hora local** | Vuelve a convertir cada hueco a hora local y los ordena cronológicamente. |
| **Devolver respuesta** | Entrega la lista al agente, indicándole que ya vienen en hora local, que ignore `inicio_utc`, y que solo ofrezca horas de esta lista. |
Si no queda ningún hueco en el rango pedido, la respuesta se lo dice explícitamente al agente para que pida otro día.
## Qué necesitas
* Una [conexión](/es/plataforma/conexiones) de Cal.com
* El tipo de cita (`event_type_id`) que va a consultar, que el agente obtiene del flujo [Obtener tipos de cita (Cal.com)](/es/plantillas/flujos/obtener-eventos-calcom)
## Puesta en marcha
Desde la sección **Flujos**, abre el catálogo de plantillas y cópiala. El flujo se crea deshabilitado. También puedes crearlo desde la plantilla de agente [Gestión de citas (Cal.com)](/es/plantillas/agentes/gestion-citas-calcom).
En el paso **Obtener huecos disponibles en Cal**, indica tu conexión de Cal.com.
`Europe/Madrid` aparece en tres sitios: el input `zona` del paso **Convertir rango a UTC** (dos veces, para el inicio y el fin) y el campo **Time Zone** del paso **Obtener huecos disponibles en Cal**. Si operas en otra zona horaria, cámbialos en los tres. El cambio de hora de verano/invierno se aplica solo.
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo.
Añádelo desde la sección **Flujos** del agente. El nombre del flujo es el nombre de la herramienta que ve el agente, así que déjalo en `comprobar_disponibilidad`. Este paso no es necesario si el flujo se ha creado a partir del agente.
## Antes de publicar
* El flujo **solo consulta**. El alta de la cita corre a cargo de [`crear_cita`](/es/plantillas/flujos/crear-cita-calcom).
* El `event_type_id` **tiene que existir en Cal.com**. Si el agente manda un id que no corresponde a ningún tipo de cita, la consulta a Cal.com falla y el flujo no llega a devolver huecos.
* Los huecos se calculan **según la configuración de disponibilidad de ese tipo de cita en Cal.com** (horario, buffers, días bloqueados), no según nada que defina el flujo. Para cambiar cuándo se puede agendar, edítalo directamente en Cal.com.
* El campo `inicio_utc` de cada hueco es **interno**: solo sirve para ordenar la lista. Si el agente lo lee en voz alta, va a sonar mal — la instrucción para ignorarlo está en el mensaje de **Devolver respuesta**, no lo quites si editas el paso.
## Siguientes Pasos
El agente que usa este flujo.
El flujo que crea la cita en el hueco elegido.
Si quieres modificar los pasos del flujo.
# Crear cita (Google Calendar)
Source: https://docs.diga.io/es/plantillas/flujos/crear-cita
Flujo durante llamada que comprueba el hueco y crea el evento en tu Google Calendar
**Flujos relacionados:** [Comprobar disponibilidad (Google Calendar)](/es/plantillas/flujos/comprobar-disponibilidad).
**Agentes relacionados:** [Gestión de citas (Google Calendar)](/es/plantillas/agentes/gestion-citas-google-calendar) y [Gestión de leads (HubSpot)](/es/plantillas/agentes/gestion-leads).
## Qué hace
El agente le pasa la hora de inicio y de fin de la cita (`start_date` y `end_date`, en hora local) junto con el nombre y el teléfono del cliente, y el flujo **crea el evento** en tu Google Calendar.
Antes de crearlo vuelve a consultar el calendario. Si en ese hueco ya hay algo agendado, no crea nada y le pide al agente que ofrezca otra hora — así una cita que haya entrado por otra vía mientras hablabais no acaba duplicada.
Es un [flujo durante llamada](/es/build/flujos/flujos-durante-llamada) en modo síncrono: el agente lo ejecuta a mitad de conversación y espera la respuesta antes de confirmarle la cita al cliente.
## Cómo funciona
| Paso | Qué hace |
| - | - |
| **Adaptar fecha inicial** y **Adaptar fecha final** | Convierten `start_date` y `end_date` de hora local a UTC, que es lo que espera Google Calendar. |
| **Comprobar disponibilidad** | Consulta los intervalos ocupados del calendario dentro de ese hueco exacto. |
| **Disponibilidad?** | Un paso de código que devuelve `true` solo si no hay ningún intervalo ocupado. |
| **Crear Evento** | Crea el evento, con el título `Cita - ` y el teléfono del cliente en la descripción. |
| **Devolver respuesta** | Le cuenta al agente cómo ha ido. |
El flujo siempre termina en un paso **Devolver respuesta**, con uno de tres desenlaces:
* **Hueco libre y evento creado** — el agente recibe `Cita creada de manera correcta.` y le confirma la cita al cliente.
* **Hueco ocupado** — no se crea nada. Al agente se le indica que se disculpe y pida otra fecha.
* **El evento no se ha podido crear** — el agente recibe `Un error ha ocurrido.` No hay cita, así que no debe confirmarla.
## Qué necesitas
* Una [conexión](/es/plataforma/conexiones) de Google Calendar
* El calendario donde se crean las citas, que debe ser el mismo que consulta [Comprobar disponibilidad (Google Calendar)](/es/plantillas/flujos/comprobar-disponibilidad)
## Puesta en marcha
Desde la sección **Flujos**, abre el catálogo de plantillas y cópiala. El flujo se crea deshabilitado.
La plantilla trae una variable `<>` que se usa en dos pasos: **Comprobar disponibilidad** y **Crear Evento**. Tiene que ser el mismo calendario en los dos, y el mismo que consulta el flujo `comprobar_disponibilidad`. Si apuntan a calendarios distintos, el agente ofrece huecos de una agenda y crea la cita en otra.
Los dos pasos de Google Calendar necesitan tu conexión.
`Europe/Madrid` aparece en el campo **Input Time Zone** de **Adaptar fecha inicial** y **Adaptar fecha final**. Si operas en otra zona horaria, cámbialos en los dos. El cambio de hora de verano/invierno se aplica solo.
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo. Sabrás que el flujo ha sido publicado si no aparece el texto de Borrador.
Añádelo desde la sección **Flujos** del agente. El nombre del flujo es el nombre de la herramienta que ve el agente, así que déjalo en `crear_cita`. Este paso no es necesario si el flujo se ha creado a partir del agente.
## Antes de publicar
* La comprobación previa mira **solo el hueco de la cita**, no tu horario de apertura. Que el agente no agende con el centro cerrado depende de su prompt, no del flujo.
* `name` y `phone` son parámetros **opcionales**. Si el agente no los recoge, el evento se crea igualmente, con el título `Cita - ` y sin teléfono en la descripción.
* El evento se crea **sin invitados**: el teléfono del cliente queda en la descripción y no se le envía ninguna invitación por email.
* El flujo **solo crea**. No anula ni modifica citas ya existentes.
* Está fijado a **un solo calendario**. Para varios centros con agendas distintas, duplica el flujo.
* Si tarda más de 60 segundos o algún paso falla, el agente continúa sin la respuesta y no sabrá si la cita se creó.
* La duración de la cita viene determinada en el prompt del agente.
## Siguientes Pasos
El agente que usa este flujo.
El otro flujo que necesita el agente.
# Crear cita (Cal.com)
Source: https://docs.diga.io/es/plantillas/flujos/crear-cita-calcom
Flujo durante llamada que crea la reserva en Cal.com
**Flujos relacionados:** [Comprobar disponibilidad (Cal.com)](/es/plantillas/flujos/comprobar-disponibilidad-calcom).
**Agentes relacionados:** [Gestión de citas (Cal.com)](/es/plantillas/agentes/gestion-citas-calcom).
## Qué hace
El agente le pasa el tipo de cita (`event_type_id`), la fecha y hora de inicio (`start_date`, en hora local) y el email del cliente, y el flujo **crea la reserva** en Cal.com. El nombre del cliente es opcional.
A diferencia de [Comprobar disponibilidad](/es/plantillas/flujos/comprobar-disponibilidad-calcom), este flujo **no vuelve a comprobar el hueco** antes de crear: llama directamente a la acción de reserva de Cal.com y confía en que sea Cal.com quien rechace un hueco ya ocupado.
Es un [flujo durante llamada](/es/build/flujos/flujos-durante-llamada) en modo síncrono: el agente lo ejecuta a mitad de conversación y espera la respuesta antes de confirmarle la cita al cliente.
## Cómo funciona
| Paso | Qué hace |
| - | - |
| **Formatear fecha de inicio** | Convierte `start_date` de hora local a UTC, respetando el cambio de hora de verano/invierno. |
| **Crear reserva en Cal** | Crea la reserva en Cal.com con el tipo de cita, la hora, el nombre y el email indicados. Sin invitados ni notas adicionales. |
| **Devolver respuesta** | Le dice al agente `Citado correctamente.` |
## Qué necesitas
* Una [conexión](/es/plataforma/conexiones) de Cal.com
* El tipo de cita (`event_type_id`) que se va a reservar, del mismo Cal.com que consulta [Comprobar disponibilidad (Cal.com)](/es/plantillas/flujos/comprobar-disponibilidad-calcom)
## Puesta en marcha
Desde la sección **Flujos**, abre el catálogo de plantillas y cópiala. El flujo se crea deshabilitado.
En el paso **Crear reserva en Cal**, indica tu conexión de Cal.com.
`Europe/Madrid` aparece en el input `zona` de **Formatear fecha de inicio** y en el campo **Attendee Timezone** de **Crear reserva en Cal**. Si operas en otra zona horaria, cámbialos en los dos.
La plantilla trae el parámetro `start_date` del disparador marcado como **opcional**, cuando en realidad hace falta siempre para crear la cita. Márcalo como **requerido** antes de publicar: si no, el agente puede llamar a la herramienta sin fecha y el paso de conversión falla sin un mensaje claro para el cliente.
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo.
Añádelo desde la sección **Flujos** del agente. El nombre del flujo es el nombre de la herramienta que ve el agente, así que déjalo en `crear_cita`. Este paso no es necesario si el flujo se ha creado a partir del agente.
## Antes de publicar
* **No hay una comprobación de hueco justo antes de crear.** A diferencia de `comprobar_disponibilidad`, este flujo no vuelve a consultar Cal.com antes de reservar: si el hueco se ocupó entre medias, es Cal.com quien rechaza la reserva, no el flujo.
* **Si Cal.com rechaza la reserva, el agente se queda sin respuesta.** El paso de creación está configurado para **detener el flujo si falla**, y no hay ningún paso posterior que le explique al agente qué ha pasado — a diferencia de [Reprogramar cita](/es/plantillas/flujos/reprogramar-cita-calcom#antes-de-publicar) y [Cancelar cita](/es/plantillas/flujos/cancelar-cita-calcom#antes-de-publicar), que sí tienen una rama de error con un mensaje para el cliente. Si quieres ese mismo comportamiento aquí, añade un router que distinga el resultado antes de la respuesta final.
* **El evento se crea sin invitados**: el email del cliente queda en la reserva de Cal.com, pero el flujo no añade invitados adicionales ni notas.
* **El flujo solo crea.** No anula ni modifica citas ya existentes; para eso están [Reprogramar cita](/es/plantillas/flujos/reprogramar-cita-calcom) y [Cancelar cita](/es/plantillas/flujos/cancelar-cita-calcom).
* **La duración de la cita la decide el tipo de cita en Cal.com**, no el flujo ni el prompt del agente.
## Siguientes Pasos
El agente que usa este flujo.
El otro flujo que necesita el agente.
# Enviar información (WhatsApp)
Source: https://docs.diga.io/es/plantillas/flujos/enviar-informacion-whatsapp
Flujo post-llamada que manda por WhatsApp un enlace de recursos un minuto después de colgar
**Agentes relacionados:** [Ventas outbound](/es/plantillas/agentes/ventas-outbound).
## Qué hace
Un minuto después de que la llamada termine, el flujo envía por WhatsApp un mensaje con un enlace a información o recursos, al mismo número desde el que llamó o al que se llamó.
Encaja con el cierre del prompt de [Ventas outbound](/es/plantillas/agentes/ventas-outbound), que ofrece mandar "un recurso que podría ser útil más adelante" cuando el prospecto no muestra interés inmediato.
Es un [flujo post-llamada](/es/build/flujos/flujos-post-llamada): se ejecuta en segundo plano, sin añadir tiempo a la llamada.
## Cómo funciona
| Paso | Qué hace |
| - | - |
| **Llamada finalizada** | Trigger. Recibe el contacto y las variables dinámicas de la llamada. |
| **Retraso para** | Espera 1 minuto. |
| **Enviar mensaje** | Manda un WhatsApp al número de contacto de la llamada, con un saludo personalizado y un enlace. |
El destinatario se toma automáticamente del contacto de la llamada — no hace falta pasarlo como variable dinámica. El nombre que aparece en el saludo sí depende de una variable dinámica (`name`).
## Qué necesitas
* Una [conexión](/es/plataforma/conexiones) de WhatsApp Business
* La variable dinámica `name` definida al originar la llamada, con el nombre del prospecto
* Un enlace real al recurso que quieras compartir
## Puesta en marcha
Desde la sección **Flujos**, abre el catálogo de plantillas y cópiala. El flujo se crea deshabilitado.
En el paso **Enviar mensaje**, añade tu conexión de WhatsApp Business. Esta plantilla no trae ninguna integración preconfigurada: tienes que crearla antes de poder usar el paso.
El texto del mensaje trae `<>` como marcador. Cámbialo por el enlace real al recurso, archivo o página que quieras enviar.
El paso **Retraso para** está en 1 minuto. Súbelo o bájalo según prefieras.
El saludo del mensaje usa `{{trigger['dynamic_variables']['name']}}`. Revisa que el flujo o la integración que origina la llamada pase esa variable; si no, el mensaje saldrá con el hueco del nombre vacío.
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo y asegúrate de que quede **habilitado**. Añádelo desde la sección **Flujos** del agente al que quieras asociarlo; aparecerá con la etiqueta **Post-llamada**.
Haz una llamada de prueba con tu propio número y comprueba que el WhatsApp llega un minuto después, con el nombre y el enlace correctos.
## Antes de publicar
* **Envía el mismo mensaje a todas las llamadas**, sin distinguir si hubo interés real o no. Si solo quieres mandarlo cuando el prospecto pidió más información, añade una condición antes del paso de envío.
* **Si falta la variable `name`, el saludo llega incompleto.** No hay ningún valor por defecto.
* **El enlace no se rellena solo.** Hasta que sustituyas `<>`, el mensaje sale con el marcador literal.
* **No comprueba si el número tiene WhatsApp.** Si el contacto no usa WhatsApp, el envío falla y no hay ningún aviso adicional configurado en el flujo.
## Siguientes Pasos
El agente que genera estas llamadas.
El otro flujo post-llamada de la plantilla.
Cómo pasar el nombre del prospecto a la llamada.
# Gestión de lead postllamada (HubSpot)
Source: https://docs.diga.io/es/plantillas/flujos/gestion-leads-hubspot
Flujo post-llamada que clasifica el resultado, actualiza el contacto en HubSpot y envía el email correspondiente
**Agentes relacionados:** [Gestión de leads (HubSpot)](/es/plantillas/agentes/gestion-leads).
## Qué hace
Cuando la llamada al lead termina, el flujo lee la transcripción, decide en cuál de **tres desenlaces** cayó, y en los tres actualiza el contacto en HubSpot y le manda un email:
| Desenlace | Qué pasó | Email que recibe el lead |
| - | - | - |
| **Cita agendada** | Contestó y se cerró día y hora | Confirmación con la fecha acordada |
| **Sin cita** | Contestó pero no se cerró nada | Agradecimiento y puerta abierta |
| **No contesta** | No contestó, o saltó el buzón de voz | Aviso de que intentaste llamar |
Es un [flujo post-llamada](/es/build/flujos/flujos-post-llamada): se ejecuta en segundo plano cuando la llamada ya ha terminado, así que nunca añade retraso a la conversación.
## Cómo funciona
| Paso | Qué hace |
| - | - |
| **Llamada finalizada** | Trigger. Recibe la transcripción, el `end_reason` y las variables dinámicas de la llamada. |
| **Buscar contacto en HubSpot** | Busca el contacto por email, usando la variable dinámica `mail`. |
| **Detectar si contestó una persona** | Un paso de IA que lee la transcripción y devuelve `answered`: `false` si solo habla el agente o si lo que se oye es un buzón de voz. |
| **¿Llamada contestada?** | Router que separa las llamadas atendidas de las que no. |
| **Extraer resultado de la cita** | Otro paso de IA que devuelve `appointment_booked` y `appointment_datetime` en lenguaje natural. |
| **¿Se agendó cita?** | Router que separa las llamadas con cita de las que no. |
| **Actualizar contacto** | Escribe en el contacto de HubSpot. Hay una versión por desenlace. |
| **Enviar email** | Manda el email por Gmail. Hay una versión por desenlace. |
## Qué necesitas
* Una [conexión](/es/plataforma/conexiones) de HubSpot
* Una [conexión](/es/plataforma/conexiones) de Gmail
* El email del lead en la variable dinámica `mail` de la llamada
* El agente [Gestión de leads](/es/plantillas/agentes/gestion-leads), o cualquier otro al que quieras asignarlo
## Puesta en marcha
Desde la sección **Flujos**, abre el catálogo de plantillas y cópiala. El flujo se crea deshabilitado. También puedes crearla a partir del agente [Gestión de leads (HubSpot)](/es/plantillas/agentes/gestion-leads).
Selecciona tu conexión de HubSpot en los cuatro pasos que la usan: la búsqueda de contacto y las tres actualizaciones de contacto.
En el paso **Buscar contacto en HubSpot**, selecciona "Contact Information: Email" en **Primer nombre de propiedad de búsqueda**. Con eso, el paso busca el contacto por el email que llega en la variable dinámica `mail`.
Esa variable **no se define sola**. Tienes que pasarla al hacer la llamada, en el campo **Variables dinámicas** del flujo [Disparador de llamada mediante Webhook](/es/plantillas/flujos/llamada-saliente-formulario#pasa-los-datos-del-lead-al-agente), que en la plantilla llega vacío.
Si tus leads no traen email, usa `phone` en su lugar y el teléfono del contacto. En ese caso los pasos de Gmail se quedan sin destinatario: quítalos o sustitúyelos por otra notificación.
Los tres pasos de **Actualizar contacto** llegan con **Object Properties vacío**: tal cual, encuentran el contacto y no le escriben nada.
Actualiza en cada uno las propiedades que quieras rellenar.
Selecciona tu conexión de Gmail en los tres pasos de email. Después, en cada uno adapta el texto del cuerpo, escrito en genérico, a tu tono. En el de confirmación, mantén el resultado de la pieza: es lo que imprime la fecha acordada tal y como se dijo por teléfono.
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo y asegúrate de que quede **habilitado**. Si no lo creaste a partir del agente [Gestión de leads (HubSpot)](/es/plantillas/agentes/gestion-leads), añádelo ahora desde la sección **Flujos** del agente al que quieras asociarlo; aparecerá con la etiqueta **Post-llamada**.
Haz tres llamadas de prueba: una cerrando cita, otra sin cerrarla y otra sin descolgar. Comprueba que cae en la rama correcta y que llega el email que toca. Puedes seguir el recorrido paso a paso en las [trazas de llamada](/es/despliegue/trazas-llamadas).
## Antes de publicar
* **Sin la variable `mail`, el flujo se ejecuta pero no hace nada útil.** La búsqueda en HubSpot no encuentra contacto y los emails salen sin destinatario. Es el fallo más probable al montar esta plantilla por primera vez: revisa el [paso correspondiente](#asegurate-de-que-llega-el-email).
* **Si el contacto no está en HubSpot, no se crea.** Los pasos de actualización apuntan al primer resultado de la búsqueda; si no hay ninguno, fallan. Están configurados para **continuar si falla**, así que el flujo sigue y el email se envía igualmente, pero en tu CRM no queda constancia. Si quieres darlo de alta, añade un paso de creación de contacto.
* **Los pasos de actualización no escriben nada de fábrica.** Hasta que no rellenes Object Properties, el flujo no cambia ningún dato en HubSpot. Consulta el [paso correspondiente](#elige-que-propiedades-escribir).
* **La clasificación la hace un modelo de lenguaje.** Los dos pasos de extracción usan `gpt-4` sobre la transcripción y pueden equivocarse, sobre todo si la cita quedó a medias o el lead dijo algo ambiguo. Trata el resultado como una buena aproximación, no como un dato verificado.
* **La fecha de la cita es texto libre.** `appointment_datetime` viene en lenguaje natural (por ejemplo, `jueves 6 de marzo a las 10:00`). Sirve para leerla en un email, no para volcarla en una propiedad de tipo fecha sin convertirla antes.
* **La cita real está en el calendario, no aquí.** Quien la crea es el flujo [`crear_cita`](/es/plantillas/flujos/crear-cita) durante la llamada. Este flujo solo lee la transcripción para contar lo que pasó: si el agente dijo una hora pero `crear_cita` falló, el email de confirmación se manda igual.
* **Los emails no perdonan un fallo.** Los tres pasos de Gmail están configurados para **detener el flujo si fallan**, al contrario que los de HubSpot.
* **Solo una rama se ejecuta.** Los dos routers están en modo primera coincidencia, así que cada llamada cae en exactamente un desenlace.
## Siguientes Pasos
El agente que hace la llamada.
Donde se define la variable `mail`.
Cómo funcionan los flujos que se ejecutan al terminar.
Los datos que recibe el trigger Llamada finalizada.
# Guardar resultado de llamada (Google Sheets)
Source: https://docs.diga.io/es/plantillas/flujos/guardar-resultado-llamada-sheets
Flujo post-llamada que extrae con IA el resultado de una llamada de ventas y lo guarda en Google Sheets
**Agentes relacionados:** [Ventas outbound](/es/plantillas/agentes/ventas-outbound).
## Qué hace
Cuando la llamada termina, el flujo lee la transcripción completa, le pide a un modelo de IA que extraiga tres datos — si el prospecto mostró interés, qué objeciones planteó y su nivel de urgencia — y añade una fila con esos tres valores a una hoja de Google Sheets.
Es un [flujo post-llamada](/es/build/flujos/flujos-post-llamada): se ejecuta en segundo plano cuando la llamada ya ha terminado, así que nunca añade retraso a la conversación.
## Cómo funciona
| Paso | Qué hace |
| - | - |
| **Llamada finalizada** | Trigger. Recibe la transcripción completa de la llamada. |
| **Extraer datos estructurados** | Un paso de IA que analiza la transcripción y devuelve `interested` (booleano, obligatorio), `objections_raised` (texto, opcional) y `urgency` (texto, opcional: "urgente", "este trimestre", "explorando" o "sin plazo"). |
| **Añadir fila** | Inserta esos tres valores como una nueva fila en la hoja de Google Sheets indicada. |
## Qué necesitas
* Una [conexión](/es/plataforma/conexiones) de Google Sheets
* Una hoja de cálculo ya creada, con su `spreadsheetId`
* El agente [Ventas outbound](/es/plantillas/agentes/ventas-outbound), o cualquier otro al que quieras asignarlo
## Puesta en marcha
Desde la sección **Flujos**, abre el catálogo de plantillas y cópiala. El flujo se crea deshabilitado.
El paso **Extraer datos estructurados** trae configurado un modelo concreto. Comprueba que sigue disponible en tu cuenta antes de publicar y cámbialo si hace falta.
En el paso **Añadir fila**, selecciona tu conexión de Google Sheets y sustituye el `<>` de ejemplo por el identificador real de tu hoja de cálculo. El flujo escribe siempre en la primera pestaña (`sheetId: 0`).
La plantilla solo guarda `interested`, `objections_raised` y `urgency`, en ese orden, sin nombre, teléfono ni fecha de la llamada. Si necesitas saber a qué prospecto corresponde cada fila, añade esos campos a la hoja y al paso **Añadir fila** antes de publicar. `first_row_headers` viene desactivado: si tu hoja tiene fila de cabeceras, actívalo para que no se sobrescriba.
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo y asegúrate de que quede **habilitado**. Añádelo desde la sección **Flujos** del agente al que quieras asociarlo; aparecerá con la etiqueta **Post-llamada**.
Haz una llamada de prueba y comprueba que aparece una fila nueva en la hoja con los tres valores extraídos.
## Antes de publicar
* **No guarda a quién se llamó.** Sin nombre, teléfono ni email en la fila, no hay forma de saber después qué prospecto generó cada resultado — añade esos campos si los necesitas.
* **La clasificación la hace un modelo de lenguaje.** Puede equivocarse, sobre todo con conversaciones ambiguas o cortadas. Trata el resultado como una aproximación, no como un dato verificado.
* **Escribe siempre en la primera pestaña de la hoja.** Si tu hoja de cálculo tiene varias pestañas, revisa que sea la correcta antes de publicar.
* **Si la hoja tiene fila de cabeceras y no activas `first_row_headers`,** la primera fila de datos puede acabar sobrescribiendo o desalineándose con las cabeceras.
## Siguientes Pasos
El agente que genera estas llamadas.
El otro flujo post-llamada de la plantilla.
Cómo funcionan los flujos que se ejecutan al terminar.
# Disparador de llamada mediante Webhook
Source: https://docs.diga.io/es/plantillas/flujos/llamada-saliente-formulario
Flujo lanzador de llamadas que toma el teléfono del lead y llama un minuto después de recibir el formulario
**Agentes relacionados:** [Gestión de leads (HubSpot)](/es/plantillas/agentes/gestion-leads).
## Qué hace
Tu formulario de contacto envía los datos del lead a una URL de webhook. El flujo coge el teléfono, lo deja en formato internacional, espera un minuto y **lanza la llamada saliente** con el agente que le indiques.
Ese minuto de espera es deliberado: da tiempo a que el lead cierre el formulario y no reciba la llamada mientras todavía está mirando la pantalla.
Es un [flujo lanzador de llamadas](/es/build/flujos/pieza-diga#hacer-llamada): no se asigna al agente como los flujos pre, durante o post-llamada, sino que se ejecuta por su cuenta y es él quien origina la llamada.
## Cómo funciona
| Paso | Qué hace |
| - | - |
| **Recibir formulario de contacto** | Trigger de webhook. Expone una URL a la que tu formulario envía los datos del lead. Sin autenticación. |
| **Normalizar teléfono** | Coge `body.phone` y lo convierte al formato internacional que necesita la telefonía. |
| **Esperar antes de llamar** | Pausa de 1 minuto. |
| **Realizar llamada saliente** | Llama al número normalizado desde tu número de Diga, con el agente indicado. |
### Cómo funciona el webhook
El trigger **Recibir formulario de contacto** es un webhook de tipo **Catch Webhook**: en cuanto publicas el flujo, genera una URL propia y única para ese flujo. Cualquier petición que llegue a esa URL dispara una ejecución nueva, sin importar desde dónde venga.
No exige ninguna estructura concreta: acepta el cuerpo de la petición tal cual se lo envíen y lo expone entero bajo `trigger.body`, con cada campo disponible por su propio nombre — por ejemplo `trigger.body.phone`. Pero el trigger no sabe de antemano qué campos van a llegar, así que hasta que no le enseñas un ejemplo, los pasos siguientes no tienen nada que ofrecerte en el selector.
Por eso, **cada vez que quieras usar un dato nuevo que llega por el webhook, primero tienes que generar unos datos de ejemplo que lo incluyan**:
En **Generar datos de ejemplo**, pulsa **Probar disparador**, selecciona el método **POST**, ve a la pestaña **Cuerpo** con tipo **JSON** y escribe un ejemplo con los mismos campos y los mismos nombres que manda tu formulario:
```json theme={null}
{
"phone": "+34623047607",
"mail": "prueba@ejemplo.com",
"name": "María"
}
```
Al pulsar **Enviar**, el flujo guarda ese resultado y a partir de ese momento los tres campos aparecen en los bloques posteriores, listos para arrastrar.
Los nombres tienen que coincidir exactamente con los de tu formulario: el bloque **Normalizar teléfono** va a buscar `phone` dentro del cuerpo, y si tu formulario lo manda como `telefono` o `phone_number`, no lo encuentra y la ejecución falla ahí mismo.
### Qué hace exactamente la normalización
El paso de código limpia el número y le pone prefijo internacional. En orden:
1. Quita espacios, guiones, puntos y paréntesis.
2. Si empieza por `00`, lo cambia por `+`.
3. Si no empieza por `+`, le añade el prefijo del país: si el número ya empieza por el prefijo lo antepone tal cual, y si no, quita el `0` inicial de red nacional (si lo hay) y luego añade el prefijo.
4. Comprueba que el resultado sea un `+` seguido de entre 8 y 15 dígitos.
```
612 345 678 -> +34612345678
0034612345678 -> +34612345678
+34 612 345 678 -> +34612345678
```
## Qué necesitas
* Un [número de teléfono](/es/telefonia/comprar-telefonos) desde el que llamar
* El agente [Gestión de leads (HubSpot)](/es/plantillas/agentes/gestion-leads), o cualquier otro agente que quieras usar
* Un formulario que pueda enviar datos a una URL de webhook, en el formulario se debe pedir tanto el mail como el número de teléfono
## Puesta en marcha
Desde la sección **Flujos**, abre el catálogo de plantillas y cópiala. El flujo se crea deshabilitado.
Copia la URL del trigger **Recibir formulario de contacto** y configúrala como destino en tu formulario.
El flujo espera el teléfono en `body.phone`. Si tu formulario lo manda con otro nombre — `telefono`, `phone_number`, `data.phone` — cambia el campo **number** del paso **Normalizar teléfono** para que apunte al tuyo.
En el paso de código **Normalizar teléfono**, el campo **defaultCountryCode** viene en `34`. Cámbialo si tus leads son de otro país. Solo se aplica a los números que llegan sin prefijo: los que ya vienen en internacional se respetan.
El paso **Esperar antes de llamar** está en 1 minuto. Súbelo o bájalo según prefieras, teniendo en cuenta que el contacto inmediato suele funcionar mejor cuanto más reciente es el formulario.
En el paso **Realizar llamada saliente**, la pieza trae un desplegable "Número de origen". Selecciona ahí el número desde el que quieres llamar.
En ese mismo paso, el campo **Versión del agente** llega vacío. Selecciona la versión del agente que atenderá la llamada. Si lo dejas sin rellenar, se usa la versión publicada por defecto del agente asociado al número.
El campo **Variables dinámicas** del paso **Realizar llamada saliente** llega **vacío**. Es el sitio donde se pasan al agente los datos que trae el formulario.
Esto importa especialmente si vas a usar el flujo [Gestión de lead postllamada (HubSpot)](/es/plantillas/flujos/gestion-leads-hubspot): ese flujo busca el contacto y envía el email usando la variable `mail`, y si no la defines aquí, llega vacía y no encuentra ni envía nada.
Añade al menos:
| Variable | Valor |
| - | - |
| `mail` | `{{trigger.body.email}}` |
Añade también el nombre o cualquier otro dato del formulario que quieras usar en el prompt como [variable dinámica](/es/build/agentes/variables-dinamicas). Ajusta las rutas a los nombres de campo reales de tu formulario.
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo y asegúrate de que quede **habilitado**. Mientras esté deshabilitado, el webhook no dispara nada.
Envía el formulario con tu propio teléfono y comprueba que la llamada entra un minuto después. Revisa el número marcado en los [logs de llamadas](/es/despliegue/logs-llamadas): es la forma más rápida de detectar que la normalización no cuadra con el formato que manda tu formulario.
## Antes de publicar
* **Una llamada por envío.** Cada petición al webhook dispara una llamada. Si tu formulario reenvía o el lead lo manda dos veces, se llama dos veces: el flujo no comprueba duplicados.
* **No reintenta.** Si no contestan, no hay segundo intento.
* **No comprueba el horario.** El flujo llama a cualquier hora a la que llegue el formulario, incluidos noches y fines de semana. El bloque de horario del prompt del agente sirve para *agendar citas*, no para decidir cuándo se puede llamar. Si lo necesitas, añade una condición antes del paso de llamada.
* **El número tiene que venir en el webhook.** Si `body.phone` llega vacío o con texto, el paso de normalización falla y el flujo se para ahí.
* **No valida que el número exista**, solo que tenga forma correcta. Un número bien formado pero inexistente se intenta llamar igualmente.
* **Las variables dinámicas llegan vacías** de fábrica. Sin ellas, el agente no sabe nada del lead más allá de su teléfono, y el flujo post-llamada se queda sin el email.
## Siguientes Pasos
El agente que atiende esta llamada.
Lo que ocurre cuando la llamada termina.
Referencia de la acción Hacer llamada.
Pasa los datos del formulario al prompt del agente.
# Obtener tipos de cita (Cal.com)
Source: https://docs.diga.io/es/plantillas/flujos/obtener-eventos-calcom
Flujo pre-llamada que trae los tipos de cita disponibles en Cal.com antes de que el agente hable
**Agentes relacionados:** [Gestión de citas (Cal.com)](/es/plantillas/agentes/gestion-citas-calcom).
## Qué hace
Justo antes de que el agente diga su primera palabra, el flujo consulta tu cuenta de Cal.com y trae **todos los tipos de cita configurados** — nombre, descripción y duración —, para que el agente sepa desde el primer segundo qué puede ofrecer sin tener que preguntarlo ni tenerlo hardcodeado en el prompt.
Es un [flujo pre-llamada](/es/build/flujos/flujos-pre-llamada): el agente espera su resultado antes de empezar a hablar.
## Cómo funciona
| Paso | Qué hace |
| - | - |
| **Obtener tipos de evento** | Consulta la lista de tipos de cita (event types) de tu cuenta de Cal.com. |
| **Formatear tipos de evento** | Se queda con `id`, `nombre`, `descripción` y `duración` de cada uno. |
| **Devolver datos de llamada** | Entrega la lista al agente, indicándole que el `id` es interno y que nunca lo mencione en voz alta — solo puede hablar de los títulos y las duraciones. |
El `id` de cada tipo es justo lo que el agente necesita después para llamar a `comprobar_disponibilidad` y `crear_cita`, así que aunque nunca se diga en voz alta, sigue disponible para el agente durante toda la llamada.
## Qué necesitas
* Una [conexión](/es/plataforma/conexiones) de Cal.com
* Al menos un tipo de cita (event type) configurado en tu cuenta de Cal.com
## Puesta en marcha
Desde la sección **Flujos**, abre el catálogo de plantillas y cópiala. El flujo se crea deshabilitado. También puedes crearlo desde la plantilla de agente [Gestión de citas (Cal.com)](/es/plantillas/agentes/gestion-citas-calcom).
En el paso **Obtener tipos de evento**, indica tu conexión de Cal.com.
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo.
Añádelo desde la sección **Flujo** del agente, como [flujo pre-llamada](/es/build/flujos/flujos-pre-llamada). Este paso no es necesario si el flujo se ha creado a partir del agente.
## Antes de publicar
* **Un tipo de cita nuevo en Cal.com aparece solo.** No hay que tocar el prompt ni el flujo: en la siguiente llamada, el agente ya lo ofrece. Si borras uno, deja de ofrecerlo igual de automático.
* **Si el flujo falla o tarda**, el agente sigue adelante sin la lista de tipos de cita — el trigger trae `abort_on_failure` desactivado, así que la llamada no se corta, pero el agente no sabrá qué tipos de cita existen hasta que consigas la información por otra vía (por ejemplo, preguntándoselo directamente al cliente).
* **Los tipos con nombres poco claros en Cal.com llegan igual de poco claros al agente.** El campo `nombre` es literalmente el título del event type: revisa que sea autoexplicativo para que el agente lo pueda leer en voz alta sin sonar raro.
## Siguientes Pasos
El agente que usa este flujo.
El flujo que usa el id de cada tipo de cita.
Cómo funcionan los flujos que se ejecutan antes de hablar.
# Reprogramar cita (Cal.com)
Source: https://docs.diga.io/es/plantillas/flujos/reprogramar-cita-calcom
Flujo durante llamada que mueve una reserva existente a un nuevo hueco en Cal.com
**Flujos relacionados:** [Buscar cita (Cal.com)](/es/plantillas/flujos/buscar-cita-calcom) y [Comprobar disponibilidad (Cal.com)](/es/plantillas/flujos/comprobar-disponibilidad-calcom).
**Agentes relacionados:** [Gestión de citas (Cal.com)](/es/plantillas/agentes/gestion-citas-calcom).
## Qué hace
El agente le pasa el identificador de la reserva (`booking_uid`, obtenido con [Buscar cita](/es/plantillas/flujos/buscar-cita-calcom)) y la nueva fecha y hora (`start_date`, en hora local), y el flujo **mueve la reserva** en Cal.com al nuevo hueco.
A diferencia de [Crear cita](/es/plantillas/flujos/crear-cita-calcom#antes-de-publicar), este flujo sí distingue entre éxito y fallo: si Cal.com rechaza el cambio (por ejemplo, porque el hueco se acaba de ocupar), el agente recibe un mensaje pensado para que se disculpe y ofrezca alternativas, en lugar de quedarse sin respuesta.
Es un [flujo durante llamada](/es/build/flujos/flujos-durante-llamada) en modo síncrono.
## Cómo funciona
| Paso | Qué hace |
| - | - |
| **Convertir fecha a UTC** | Convierte `start_date` de hora local a UTC. |
| **Reprogramar reserva en Cal** | Llama a Cal.com para mover la reserva indicada al nuevo horario. |
| **Comprobar estado de la reprogramación** | Router que separa el resultado según si Cal.com devolvió éxito o no. |
| **Devolver respuesta (reprogramada / error)** | Responde al agente con el mensaje que corresponda. |
El motivo del cambio (`reschedulingReason`) no se recoge del cliente: la plantilla lo manda siempre vacío a Cal.com, aunque la acción lo admite.
## Qué necesitas
* Una [conexión](/es/plataforma/conexiones) de Cal.com
* El flujo [Buscar cita (Cal.com)](/es/plantillas/flujos/buscar-cita-calcom), para obtener el `booking_uid`
* El flujo [Comprobar disponibilidad (Cal.com)](/es/plantillas/flujos/comprobar-disponibilidad-calcom), para comprobar que el nuevo hueco está libre antes de llamar a esta herramienta
## Puesta en marcha
Desde la sección **Flujos**, abre el catálogo de plantillas y cópiala. El flujo se crea deshabilitado.
En el paso **Reprogramar reserva en Cal**, indica tu conexión de Cal.com.
`Europe/Madrid` aparece en el input `zona` del paso **Convertir fecha a UTC**. Si operas en otra zona horaria, cámbialo ahí.
Si quieres que el motivo de la reprogramación quede registrado en Cal.com, sustituye el valor vacío de **Rescheduling Reason** en el paso **Reprogramar reserva en Cal** por una variable que recoja del cliente, igual que hace [Cancelar cita](/es/plantillas/flujos/cancelar-cita-calcom) con `cancellation_reason`.
[Publica](/es/build/flujos/crear-flujos#borrador-vs-publicado) el flujo.
Añádelo desde la sección **Flujos** del agente. El nombre del flujo es el nombre de la herramienta que ve el agente, así que déjalo en `reprogramar_cita`. Este paso no es necesario si el flujo se ha creado a partir del agente.
## Antes de publicar
* **No comprueba la disponibilidad por su cuenta.** El agente tiene que haber llamado antes a `comprobar_disponibilidad` para el nuevo hueco; este flujo solo intenta el cambio y deja que Cal.com lo acepte o lo rechace.
* **El motivo de la reprogramación no se guarda** salvo que lo configures tú mismo (ver el paso correspondiente arriba).
* **La comparación de éxito depende de un campo interno de la pieza de Cal.com** (`status: "success"`). Si Cal.com cambiara ese valor en una futura versión de la integración, el router dejaría de distinguir bien los dos casos.
* **El tipo de cita no se puede cambiar aquí.** Reprogramar solo mueve la hora; si el cliente quiere un tipo de cita distinto, hay que cancelar y crear una nueva.
## Siguientes Pasos
De aquí sale el uid que necesita este flujo.
Consulta el nuevo hueco antes de reprogramar.
El agente que usa este flujo.
# Introducción a las Plantillas
Source: https://docs.diga.io/es/plantillas/introduccion
Elige una plantilla y ponla en marcha en unos minutos
## Qué encontrarás aquí
Cada plantilla de Diga tiene aquí su propia página: qué hace, qué necesitas para usarla y los pasos para dejarla funcionando. Están escritas para que puedas poner en marcha tu agente cuanto antes.
El catálogo se divide en dos familias:
Agentes completos, con su prompt, su voz y sus herramientas. Creas el agente y lo personalizas.
Automatizaciones pre-construidas. Copias el flujo, configuras las conexiones y lo habilitas.
Las plantillas están conectadas entre sí: un agente enlaza a los flujos que necesita, y un flujo enlaza a los agentes que lo usan y, si lo tiene, al flujo con el que va emparejado. Encontrarás esos enlaces en un aviso **Flujos relacionados** o **Agentes relacionados** al principio de la página.
## Antes de empezar
Necesitas un [proyecto](/es/plataforma/proyectos) donde crear la plantilla, las [conexiones](/es/plataforma/conexiones) a los servicios que utilice, y un [número de teléfono](/es/telefonia/comprar-telefonos) si es un agente que va a recibir llamadas.
## Catálogo de agentes
Recepcionista telefónica que consulta tu agenda y deja la cita creada.
Llama a los leads que rellenan tu formulario y les agenda una cita.
Agenda, reprograma y cancela citas usando Cal.com.
Llama en frío a prospectos y agenda una demo con ventas.
## Catálogo de flujos
Devuelve los huecos libres de tu Google Calendar durante la llamada.
Comprueba el hueco y crea el evento en tu Google Calendar.
Normaliza el teléfono del lead y lanza la llamada un minuto después.
Clasifica el resultado, actualiza HubSpot y envía el email que toca.
Trae los tipos de cita disponibles antes de que el agente hable.
Devuelve los huecos libres de un tipo de cita en Cal.com.
Crea la reserva en Cal.com.
Localiza las citas futuras de un cliente por su email.
Mueve una reserva existente a un nuevo hueco.
Anula una reserva existente.
Extrae con IA el resultado de una llamada de ventas y lo guarda en Sheets.
Manda un enlace de recursos por WhatsApp tras la llamada.
## Siguientes Pasos
Si ninguna plantilla encaja con tu caso de uso.
Autoriza los servicios que necesitan tus plantillas.
# API Keys
Source: https://docs.diga.io/es/plataforma/api-keys
Crea y gestiona claves API para conectarte a la API de Diga y controlar los permisos de acceso.
Las claves API te permiten conectarte a la API de Diga y utilizar sus funciones desde tus propias aplicaciones. Puedes crear varias claves con diferentes niveles de acceso para controlar qué recursos puede utilizar cada una.
Accede a esta sección desde **Ajustes > Proyecto > API Keys**.
Solo los **administradores** del proyecto pueden crear, ver y gestionar claves API. Consulta la página de [Equipo](/es/plataforma/equipo) para más información sobre roles y permisos.
## Vista general
La vista principal muestra una tabla con todas las claves API del proyecto. Para cada clave puedes ver:
* **Nombre** de la clave
* **ID de clave**
* **Key** (enmascarada por seguridad)
* **Fecha de creación**
* **Permisos de clave** (restringida o no restringida)
Usa el buscador en la parte superior para encontrar claves por nombre. La tabla incluye paginación cuando hay muchas claves.
## Crear una API Key
En la esquina superior derecha, haz clic en **Crear API Key**.
Escribe un nombre descriptivo para identificar la clave (por ejemplo, "Consulta\_CRM" o "App\_Reservas").
Decide si quieres restringir los permisos de la clave:
* **Sin restringir**: La clave tiene acceso completo a todos los recursos de la API.
* **Restringir clave**: Activa el toggle para configurar permisos granulares por recurso.
Las claves API sin restricciones representan una amenaza. Para mayor seguridad, considera restringir el acceso únicamente a los recursos necesarios.
Haz clic en **Guardar**. Se generará la clave y aparecerá un modal con la **API Key completa**.
La clave no se mostrará de nuevo. Cópiala y guárdala en un lugar seguro antes de cerrar el modal.
## Restringir permisos
Al activar el toggle **Restringir clave**, puedes configurar el nivel de acceso para cada recurso de la API. Cada recurso tiene tres niveles de permiso:
| Nivel | Descripción |
| - | - |
| **Sin acceso** | La clave no puede acceder a este recurso |
| **Leer** | La clave puede consultar datos pero no modificarlos |
| **Escribir** | La clave puede consultar y modificar datos |
### Recursos disponibles
Los recursos sobre los que puedes configurar permisos son:
* **Llamadas** — Gestión de llamadas telefónicas
* **Mensajes** — Envío y recepción de mensajes
* **Transcripciones** — Acceso a transcripciones de llamadas
* **Grabaciones** — Acceso a grabaciones de audio
* **Agentes** — Creación y configuración de agentes
* **Rutas conversacionales** — Gestión de caminos conversacionales
* **Bases de conocimiento** — Gestión de bases de conocimiento
* **Herramientas** — Herramientas de llamada
* **Voces** — Configuración de voces
* **Integraciones** — Gestión de integraciones externas
* **Webhooks** — Configuración de webhooks
* **Contactos** — Gestión de contactos
* **Estadísticas** — Acceso a datos analíticos
* **Verificaciones** — Verificaciones del sistema
* **Teléfonos** — Gestión de números de teléfono
* **Miembros** — Gestión del equipo del proyecto
* **Facturación** — Información de facturación y suscripción
* **API Keys** — Gestión de otras claves API
* **Notificaciones** — Configuración de notificaciones
## Eliminar una API Key
Eliminar una clave API es permanente. Cualquier aplicación o servicio que utilice esta clave dejará de funcionar inmediatamente.
1. En la tabla de claves, haz clic en el botón de acciones de la clave que quieres eliminar.
2. Selecciona **Eliminar**.
3. Confirma la acción en el modal de confirmación haciendo clic en **Eliminar**.
## Buenas prácticas
Evita usar claves sin restricciones. Asigna a cada clave solo los permisos que necesita para funcionar. Esto limita el impacto en caso de que una clave se vea comprometida.
Nombra las claves según su uso (por ejemplo, "CRM\_Producción", "App\_Móvil\_Staging"). Facilita identificar qué clave corresponde a cada aplicación.
Crea claves nuevas y elimina las antiguas de forma regular. Esto reduce el riesgo de acceso no autorizado con claves que puedan haberse filtrado.
Usa claves diferentes para desarrollo, staging y producción. Si una clave de desarrollo se filtra, tu entorno de producción no se verá afectado.
## Preguntas frecuentes
No hay un límite fijo en la cantidad de claves que puedes crear por proyecto.
Sí. Puedes editar el nombre y los permisos de una clave en cualquier momento desde la tabla de claves. El valor secreto de la clave nunca cambia y no se vuelve a mostrar, por lo que actualizar los permisos no requiere regenerar la clave.
No es posible recuperar una clave una vez cerrado el modal de creación. Deberás crear una nueva clave y actualizar la configuración en tus aplicaciones.
Solo los usuarios con rol de **Administrador** en el proyecto pueden acceder a la sección de API Keys.
# Conexiones
Source: https://docs.diga.io/es/plataforma/conexiones
Gestiona y mantén integradas todas las conexiones externas de tu proyecto.
# Conexiones
Desde la sección de Conexiones puedes **visualizar, reconectar y renombrar** todas las conexiones externas vinculadas a tu proyecto. Las conexiones se generan automáticamente cuando configuras una integración en un flujo.
Accede a esta sección desde **Ajustes > Proyecto > Conexiones**.
Todos los miembros del proyecto pueden ver las conexiones, pero solo los **administradores** pueden reconectarlas o renombrarlas. Consulta la página de [Equipo](/es/plataforma/equipo) para más información sobre roles y permisos.
## Vista general
La vista principal muestra una tabla con todas las conexiones del proyecto. Para cada conexión puedes ver:
* **Proveedor** — icono y tipo de servicio conectado (por ejemplo, Google Calendar, Trello, Microsoft Outlook).
* **Nombre** — nombre asignado a la conexión.
* **Estado** — indica si la conexión está **Activa** o **Inactiva**.
* **Flujos** — número de flujos que utilizan esta conexión. Al hacer clic en el número, se redirige a la página de flujos filtrada por esa conexión.
* **Conectado en** — fecha y hora en que se estableció la conexión.
* **Acciones** — botones para reconectar o renombrar la conexión.
### Filtrar conexiones
Puedes filtrar las conexiones de dos formas:
* **Por estado:** usa el desplegable de **Estado** para mostrar solo las conexiones activas, inactivas o todas.
* **Por nombre:** usa el buscador para encontrar una conexión específica por su nombre.
## Reconectar una conexión
Si una conexión deja de funcionar (por ejemplo, porque la API Key expiró o se revocaron los permisos), puedes reconectarla sin necesidad de eliminarla y volver a crearla.
En la columna de **Acciones** de la conexión que necesitas reconectar, haz clic en el icono de reconectar.
Se abrirá un modal donde puedes ver el **nombre de la conexión** y actualizar la **API Key** u otras credenciales necesarias.
Haz clic en **Guardar** para aplicar las nuevas credenciales. La conexión volverá al estado **Activa** si las credenciales son válidas.
Si una conexión está en estado **Inactiva**, los flujos que la utilizan no podrán ejecutar las acciones vinculadas a esa integración hasta que se reconecte.
## Renombrar una conexión
Puedes cambiar el nombre de una conexión para identificarla más fácilmente, sin afectar su funcionamiento.
En la columna de **Acciones**, haz clic en el icono de renombrar.
Se abrirá un modal con el nombre actual. Escribe el nuevo nombre descriptivo que deseas asignar.
Haz clic en **Guardar** para confirmar el cambio. Si prefieres no hacer cambios, haz clic en **Volver atrás**.
## Estados de conexión
| Estado | Descripción |
| - | - |
| **Activa** | La conexión funciona correctamente y los flujos pueden utilizarla |
| **Inactiva** | La conexión ha dejado de funcionar y necesita ser reconectada |
Una conexión puede pasar a estado **Inactiva** cuando las credenciales expiran, se revocan los permisos desde el servicio externo o el proveedor cambia su configuración de acceso.
## Buenas prácticas
Renombra las conexiones para reflejar su propósito (por ejemplo, "Google Calendar - Reservas" o "Trello - Soporte"). Facilita identificar qué conexión corresponde a cada uso.
Monitorea el estado de tus conexiones para detectar problemas rápidamente. Una conexión inactiva puede afectar múltiples flujos.
Si recibes un aviso de que una API Key está por expirar, reconecta de forma proactiva para evitar interrupciones en tus flujos.
## Preguntas frecuentes
No. Las conexiones se generan automáticamente cuando configuras una integración dentro de un flujo. Desde esta página puedes gestionarlas (reconectar y renombrar), pero no crearlas.
Puedes reconectar una conexión activa sin problemas. Esto es útil, por ejemplo, para actualizar una API Key antes de que expire.
Actualmente no es posible eliminar conexiones desde esta página. Si necesitas desconectar un servicio, puedes hacerlo desde la configuración de la integración en el flujo correspondiente.
Una conexión puede volverse inactiva si las credenciales expiran, se revocan los permisos desde el servicio externo o el proveedor cambia su configuración de acceso. Reconéctala para restaurar el funcionamiento.
# Cuenta de usuario
Source: https://docs.diga.io/es/plataforma/cuentas
Gestiona tu cuenta de Diga: perfil personal, ajustes de seguridad y los proyectos a los que perteneces, todo desde un mismo lugar.
# Perfil
Tu perfil en Diga representa tu **identidad individual** dentro de la plataforma. Desde aquí gestionas tu información personal y tus membresías a proyectos.
Tu perfil es independiente de los proyectos. Puedes pertenecer a **múltiples proyectos** simultáneamente, cada uno con un rol diferente.
## Información personal
Al registrarte en Diga, se crea automáticamente un perfil con tu información:
* Nombre y apellido
* Dirección de email
* Proyecto predeterminado
### Actualizar tu información
Haz clic en tu perfil, en la parte inferior de la sidebar, y selecciona **Ajustes > Perfil**.
Modifica tu nombre, apellido u otra información personal. Desde aquí también puedes:
* **Idioma**: cambiar el idioma de la interfaz del panel.
* **Contraseña**: establecer o cambiar tu contraseña. Si te registraste con un proveedor externo (OAuth), verás la opción **Establecer contraseña**; de lo contrario verás **Cambiar contraseña**. Las contraseñas deben tener al menos **8 caracteres** e incluir un **carácter especial**.
Haz clic en **Guardar** para aplicar los cambios.
## Membresías a proyectos
Tu perfil puede estar asociado a **múltiples proyectos** con diferentes roles en cada uno.
### Ver tus proyectos
1. Ve al **selector de proyectos** en la sidebar.
2. Verás una lista de todos tus proyectos activos.
3. Cada proyecto mostrará tu rol (**Administrador** o **Miembro**).
### Cambiar de proyecto
Al cambiar de proyecto, todos los recursos mostrados (agentes, llamadas, contactos) se actualizarán para reflejar el proyecto seleccionado.
### Aceptar invitaciones
1. Recibirás un email con el enlace de invitación.
2. Haz clic en el enlace para aceptar la invitación.
3. Se te agregará automáticamente al proyecto con el rol asignado.
4. El proyecto aparecerá en tu lista de proyectos.
### Abandonar un proyecto
Si eres el **último administrador** del proyecto, no podrás abandonarlo. Primero debes promover a otro miembro a administrador.
Selecciona el proyecto que deseas abandonar.
Ve a **Ajustes > Proyecto > Equipo**.
Haz clic en **Abandonar proyecto** y confirma tu decisión.
## Seguridad
### Autenticación
Diga protege tu cuenta mediante los siguientes mecanismos:
* **Autenticación basada en tokens:** las sesiones se gestionan con tokens seguros, sin almacenar contraseñas en texto plano.
* **Gestión de sesiones:** las sesiones activas se validan de forma continua.
* **Proveedores externos:** posibilidad de autenticarse a través de proveedores de identidad externos.
### Privacidad
* Tu email solo es visible para **administradores** de los proyectos a los que perteneces.
* Los datos personales **no se comparten** con terceros.
## Preguntas frecuentes
Sí. Tu perfil puede pertenecer a tantos proyectos como necesites, y cada uno puede tener un rol diferente.
Tu perfil permanece activo. Puedes crear nuevos proyectos o aceptar nuevas invitaciones en cualquier momento.
Sí. Puedes ser administrador en un proyecto y miembro en otro. Los roles son independientes por proyecto.
# Equipo
Source: https://docs.diga.io/es/plataforma/equipo
Invita usuarios a tu proyecto, gestiona sus roles y controla los permisos de acceso.
# Equipo
Desde la sección de Equipo puedes **invitar usuarios** a tu proyecto y **gestionar sus permisos**. Cada miembro tiene un rol asignado que determina qué acciones puede realizar dentro del proyecto.
Accede a esta sección desde **Ajustes > Proyecto > Equipo**.
## Invitar usuarios
Solo los **administradores** pueden invitar nuevos usuarios al proyecto.
En la esquina superior derecha de la tabla de miembros, haz clic en **Invitar usuarios**.
Escribe la dirección de correo del usuario y selecciona el rol que deseas asignarle (**Administrador**, **Miembro** o **Lector**).
El usuario recibirá un email con un enlace para unirse al proyecto.
Una vez aceptada la invitación, el usuario aparecerá en la tabla de miembros con el rol asignado.
## Gestionar miembros
Los administradores pueden realizar las siguientes acciones sobre los miembros del proyecto:
* **Cambiar el rol** de un miembro (entre Administrador, Miembro y Lector).
* **Eliminar** a un miembro del proyecto.
Para hacerlo, usa los botones de **Acciones** en la fila correspondiente de la tabla.
No puedes degradar ni eliminar al **último administrador** del proyecto. Debe haber al menos un administrador en todo momento.
## Roles y permisos
Diga utiliza un modelo de **control de acceso basado en roles (RBAC)**. Los roles se asignan **por proyecto**, lo que significa que un mismo usuario puede tener roles diferentes en proyectos distintos.
### Administrador
Acceso completo a todos los recursos y configuraciones del proyecto.
* Gestión de agentes (crear, modificar, eliminar).
* Gestión de miembros del equipo (invitar, cambiar roles, eliminar).
* Gestión de números de teléfono (comprar, configurar, liberar).
* Gestión de facturación y suscripción.
* Gestión de claves API e integraciones.
* Acceso completo a analíticas y registros.
### Miembro
Acceso de **solo lectura** a la mayoría de recursos, con la posibilidad de operar agentes existentes.
* Ver agentes y sus configuraciones.
* Realizar llamadas con los agentes del proyecto.
* Ver llamadas, transcripciones y grabaciones.
* Ver y crear contactos.
* Acceder a reportes y estadísticas.
Los miembros **no pueden** crear ni modificar agentes, gestionar el equipo, acceder a la facturación ni configurar integraciones o claves API.
### Lector
Acceso **mínimo de solo lectura**, limitado a la consulta de analíticas y registros de llamadas.
* Ver el dashboard de inicio (analíticas generales).
* Ver el registro de llamadas con transcripciones.
Los lectores **no pueden** ver agentes, contactos, números de teléfono, bases de conocimiento ni ninguna otra sección del proyecto. Es el rol más restrictivo disponible.
### Permisos detallados
| Permiso | Administrador | Miembro | Lector |
| - | - | - | - |
| Ver información del proyecto | ✓ | ✓ | ✗ |
| Actualizar detalles del proyecto | ✓ | ✗ | ✗ |
| Eliminar proyecto | ✓ | ✗ | ✗ |
| Permiso | Administrador | Miembro | Lector |
| - | - | - | - |
| Ver agentes | ✓ | ✓ | ✗ |
| Crear agentes | ✓ | ✗ | ✗ |
| Modificar agentes | ✓ | ✗ | ✗ |
| Eliminar agentes | ✓ | ✗ | ✗ |
| Permiso | Administrador | Miembro | Lector |
| - | - | - | - |
| Ver dashboard de inicio | ✓ | ✓ | ✓ |
| Acceder a reportes y estadísticas | ✓ | ✓ | ✓ |
| Permiso | Administrador | Miembro | Lector |
| - | - | - | - |
| Ver llamadas | ✓ | ✓ | ✓ |
| Ver transcripciones y grabaciones | ✓ | ✓ | ✓ |
| Iniciar llamadas | ✓ | ✓ | ✗ |
| Modificar metadatos de llamadas | ✓ | ✗ | ✗ |
| Eliminar registros de llamadas | ✓ | ✗ | ✗ |
| Permiso | Administrador | Miembro | Lector |
| - | - | - | - |
| Ver números de teléfono | ✓ | ✓ | ✗ |
| Comprar números nuevos | ✓ | ✗ | ✗ |
| Configurar números | ✓ | ✗ | ✗ |
| Liberar números | ✓ | ✗ | ✗ |
| Permiso | Administrador | Miembro | Lector |
| - | - | - | - |
| Ver contactos | ✓ | ✓ | ✗ |
| Crear contactos | ✓ | ✓ | ✗ |
| Eliminar contactos | ✓ | ✗ | ✗ |
| Permiso | Administrador | Miembro | Lector |
| - | - | - | - |
| Ver miembros del equipo | ✓ | ✗ | ✗ |
| Invitar nuevos miembros | ✓ | ✗ | ✗ |
| Cambiar roles | ✓ | ✗ | ✗ |
| Eliminar miembros | ✓ | ✗ | ✗ |
| Permiso | Administrador | Miembro | Lector |
| - | - | - | - |
| Ver información de facturación | ✓ | ✗ | ✗ |
| Gestionar suscripción | ✓ | ✗ | ✗ |
| Ver facturas | ✓ | ✗ | ✗ |
| Permiso | Administrador | Miembro | Lector |
| - | - | - | - |
| Ver claves API | ✓ | ✗ | ✗ |
| Crear / modificar / revocar claves | ✓ | ✗ | ✗ |
| Ver integraciones | ✓ | ✗ | ✗ |
| Crear / modificar / eliminar integraciones | ✓ | ✗ | ✗ |
### ¿Qué rol asignar?
Para quienes necesitan **control total**: propietarios del negocio, gerentes de proyecto, administradores técnicos o personal de IT.
Para quienes necesitan **operar sin modificar**: agentes de ventas, personal de soporte u operadores de call center.
Para quienes solo necesitan **consultar resultados**: supervisores, directivos o stakeholders que revisan métricas y registros de llamadas.
## Buenas prácticas
Asigna a los usuarios el nivel de acceso mínimo necesario. Comienza con el rol de **Lector** si solo necesitan consultar datos, usa **Miembro** si necesitan operar y eleva a **Administrador** solo cuando sea imprescindible.
Evita depender de un solo administrador. Si esa persona no está disponible, nadie podrá gestionar el proyecto.
Audita periódicamente quién tiene acceso y elimina a los miembros que ya no lo necesiten.
## Preguntas frecuentes
Por proyecto. Puedes ser administrador en un proyecto y miembro en otro.
Actualmente Diga ofrece tres roles fijos: Administrador, Miembro y Lector. Los roles personalizados podrían estar disponibles en futuras versiones.
Debes promover a otro miembro a administrador antes de poder abandonarlo.
Sí, los usuarios reciben una notificación cuando su rol cambia en un proyecto.
# Planes y precios
Source: https://docs.diga.io/es/plataforma/facturacion
Compara los planes disponibles en Diga, cambia de plan y gestiona tu período de facturación.
# Planes y precios
Desde **Ajustes > Suscripción > Planes y precios** puedes comparar los planes disponibles, cambiar tu plan actual y ajustar tu período de facturación.
Consulta los precios actualizados de cada plan en nuestra página web.
## Planes disponibles
Diga ofrece cinco planes para adaptarse a diferentes necesidades:
Ideal para **probar la plataforma** sin compromiso. Incluye minutos limitados para tus primeras pruebas.
Para proyectos en fase de **lanzamiento** que necesitan más minutos y almacenamiento.
El plan **más popular**. Para equipos en producción con mayor volumen de llamadas.
Para empresas en **expansión** con alto volumen de llamadas y más llamadas simultáneas.
Para grandes organizaciones con necesidades **a medida** y soporte prioritario. [Habla con ventas](https://www.diga.io/contact).
### Qué varía de un plan a otro
Cada plan cambia en estas características:
* **Minutos incluidos** al mes
* **Precio por minuto extra**, una vez agotados los incluidos
* **Llamadas simultáneas** permitidas
* **[Uso de Melo](/es/plataforma/melo)**, tu cuota semanal del asistente de IA
* **Almacenamiento RAG**, el espacio para las [bases de conocimiento](/es/build/bases-conocimiento) de tus agentes
* **Flujos** que puedes tener publicados
* **Soporte** incluido
Los minutos incluidos se asignan **mensualmente**, tanto en facturación mensual como anual.
Consulta las cifras exactas de cada plan en la [página de precios](https://www.diga.io/pricing), que es donde siempre están actualizadas. Para ver cuánto llevas consumido de los límites de tu plan, ve a [Ajustes > Uso](/es/plataforma/uso).
## Período de facturación
Puedes elegir entre dos períodos de facturación:
* **Plan mensual**: se factura cada mes en la fecha de suscripción.
* **Plan anual**: se factura una vez al año con un descuento sobre el precio mensual.
Aunque pagues anualmente, los minutos se distribuyen **mensualmente**. Por ejemplo, un plan anual con 120.000 minutos al año recibirá 10.000 minutos cada mes.
### Cambiar el período de facturación
Puedes alternar entre facturación mensual y anual desde **Ajustes > Suscripción > Gestionar suscripción**.
**De mensual a anual**:
* Se aplica al final del período mensual actual si te mantienes en el mismo plan. En caso de cambio de plan, se aplica inmediatamente.
* Comienzas a ahorrar en la siguiente factura.
**De anual a mensual**:
* Se aplica al final del período anual actual.
* Los minutos siguen siendo mensuales durante todo el período.
## Cambiar de plan
### Upgrade (mejora de plan)
Cuando mejoras a un plan superior:
* El cambio se aplica **inmediatamente**.
* Se te factura la diferencia prorrateada.
* Los minutos sin usar se transfieren al nuevo plan (con el límite de rollover del nuevo plan).
Ve a **Ajustes > Suscripción > Planes y precios**.
Haz clic en **Seleccionar** en el plan que deseas contratar.
Se abrirá un modal con el resumen del cambio: nuevo plan, precio, período y ventajas. Selecciona el período de facturación (**plan anual** o **plan mensual**).
Haz clic en **Continuar** para aplicar el cambio.
### Downgrade (reducción de plan)
Cuando cambias a un plan inferior:
* El cambio se aplica al **final del período de facturación actual**.
* No hay prorrateo: mantienes tu plan actual hasta que termine el período pagado.
* Los minutos de rollover que excedan el límite del nuevo plan se pierden.
Ve a **Ajustes > Suscripción > Planes y precios**.
Haz clic en **Seleccionar** en el plan al que deseas cambiar.
Se abrirá un modal mostrando los límites del nuevo plan y lo que perderás respecto al actual.
Haz clic en **Reducir plan** para confirmar. El cambio se hará efectivo al finalizar tu período actual.
Al hacer downgrade, perderás cualquier minuto de rollover que exceda el límite del nuevo plan.
### Volver al plan gratuito
Si deseas cancelar tu plan de pago, puedes volver al plan gratuito:
1. En la página de Planes y precios, haz clic en **Volver al Gratuito**.
2. Confirma la cancelación en el modal.
3. Tu plan actual permanece activo hasta el final del período pagado y después se revierte al plan gratuito.
## Cargos adicionales
Además del plan base, se aplican los siguientes cargos:
**Números de teléfono**
* Los números de teléfono tienen un coste mensual por número.
* Se facturan mensualmente independientemente de tu período de facturación.
**Minutos extra (uso adicional)**
* Solo se cobran si tienes activada la [facturación basada en uso](/es/plataforma/uso#facturación-basada-en-uso) y superas los minutos incluidos de tu plan.
* Se facturan mensualmente, junto al resto de cargos del período.
## Preguntas frecuentes
Los upgrades se aplican inmediatamente. Los downgrades se aplican al final del período de facturación actual.
Sí. Puedes cambiar de plan en cualquier momento desde Ajustes > Suscripción > Planes y precios.
En un upgrade, los minutos restantes se transfieren. En un downgrade, los minutos de rollover que excedan el límite del nuevo plan se pierden al final del período.
Puedes activar la **facturación basada en uso** desde [Ajustes > Uso](/es/plataforma/uso). Los minutos extra se facturarán mensualmente.
# Melo
Source: https://docs.diga.io/es/plataforma/melo
Melo es el asistente de IA del dashboard de Diga: qué puede hacer por ti, cómo sacarle partido y qué límites conviene tener en cuenta
## ¿Qué es Melo?
Melo es el asistente de IA dentro del dashboard de Diga. Te ayuda a construir, probar y operar tus agentes de voz — respondiendo preguntas, sugiriendo cambios y guiándote por la plataforma.
A diferencia de un chat convencional, Melo funciona con herramientas MCP conectadas a tu proyecto. Eso significa que no solo responde: también puede actuar sobre tus recursos de Diga, como crear un agente o editar un prompt, sin que tengas que salir de la conversación.
## Qué puede hacer
Resuelve dudas sobre la plataforma y te orienta mientras construyes y gestionas tus agentes.
Puede modificar agentes y otros recursos. Cada cambio muestra una tarjeta de aprobación para que lo confirmes antes de aplicarlo.
Melo sabe qué filas ves en la lista que tienes abierta y puede actuar directamente sobre ellas.
Lista las conexiones que usan tus flujos, lo que te ayuda a encontrar por qué falla una pieza.
Cuando le pides cambios en un prompt, Melo los aplica de forma incremental mientras los escribe, así que ves el resultado tomando forma en tiempo real.
## Cómo sacarle partido
* **Aporta contexto.** Menciona el agente, proyecto o funcionalidad sobre el que trabajas. Cuanto mejor sea el contexto, mejor será la respuesta.
* **Sé específico.** Las preguntas vagas tienden a producir respuestas vagas o especulativas. Cuanto más concreta sea tu pregunta, más fiable será la respuesta.
* **Revisa el contenido generado.** Si Melo escribe un prompt, una definición de herramienta o un valor de configuración, léelo antes de guardar. Una respuesta que *parece* correcta puede estar sutilmente equivocada.
* **Verifica los consejos críticos.** Cualquier cosa que afecte a un agente en producción, la facturación, el enrutamiento telefónico o un flujo publicado conviene contrastarla con la página correspondiente de esta documentación o con tu equipo.
## Ten en cuenta sus límites
Como cualquier asistente de IA de frontera, Melo puede ocasionalmente generar respuestas **incorrectas o engañosas**. Es una limitación conocida de los modelos generativos — a veces llamada **"alucinación"** — y conviene tenerla presente siempre que actúes sobre lo que Melo te diga.
Algunos casos en los que la respuesta de Melo puede no ser fiable:
* **Información desactualizada.** Es posible que Melo no haya sido entrenado con los últimos cambios de Diga, integraciones de terceros o servicios externos, y puede confundirse al preguntarle por novedades muy recientes.
* **Detalles plausibles pero inexactos.** Melo puede generar prompts, valores de configuración o cifras que parecen autorizadas pero no se sustentan en tu proyecto real.
* **Contexto limitado del proyecto.** Aunque Melo tenga acceso al estado de tu proyecto, puede pasar por alto contexto que vive fuera del dashboard — las convenciones de tu equipo, el comportamiento de un sistema externo o un flujo personalizado.
* **Preguntas ambiguas.** Las preguntas vagas tienden a producir respuestas vagas o especulativas.
Trata a Melo como un **colaborador con conocimiento**, no como una única fuente de verdad. La decisión final — y la responsabilidad de lo que se ejecuta en producción — es tuya.
## Envíanos feedback
Si una respuesta concreta no fue útil o fue errónea, cuéntanoslo — tu feedback nos ayuda a mejorar Melo con el tiempo.
* Usa el botón de **pulgar abajo** en cualquier mensaje del chat para marcar el problema.
* O escríbenos a [support@diga.io](mailto:support@diga.io) con detalles y sugerencias.
# Proyectos
Source: https://docs.diga.io/es/plataforma/proyectos
Los proyectos son la unidad organizativa central de Diga, cada uno con agentes, llamadas, números y facturación aislados. Aprende a crearlos y gestionarlos.
# Introducción a Proyectos
Los proyectos son la **unidad organizativa principal** en Diga. Cada proyecto opera de forma independiente con su propio conjunto de recursos, miembros y configuración de facturación.
Todos los recursos de la plataforma — agentes, llamadas, contactos, números de teléfono e integraciones — están asociados a un proyecto específico, garantizando un **aislamiento completo de datos** entre proyectos.
Puedes crear tantos proyectos como necesites. No hay límite en el número de proyectos que puedes gestionar.
En este vídeo verás cómo gestionar proyectos: qué queda aislado en cada uno, cómo colaborar con tu equipo y cómo duplicarlos.
## Crear un proyecto
Proporciona un **nombre** descriptivo y una **descripción** opcional para tu proyecto.
Se te asigna automáticamente como **Administrador** del proyecto.
Se inicializa una suscripción gratuita y tu proyecto está listo para empezar a crear agentes y gestionar llamadas.
Cada proyecto contiene su propio conjunto de recursos aislados:
* **Agentes:** agentes de voz con IA configurados con prompts y flujos conversacionales.
* **Llamadas:** registro de todas las llamadas con transcripciones, grabaciones y analíticas.
* **Números de teléfono:** números adquiridos y configuración de enrutamiento.
* **Integraciones:** conexiones a sistemas externos (CRM, bases de datos, APIs).
* **Claves API:** acceso programático a los recursos del proyecto.
## Eliminar un proyecto
Los administradores pueden eliminar un proyecto desde **Ajustes > Proyecto > Eliminar proyecto**.
La eliminación de un proyecto es **permanente**. Se elimina el acceso para todos los miembros y los recursos dejan de estar disponibles.
Antes de eliminar, ten en cuenta:
* Debes ser **Administrador** del proyecto.
* **Todos los recursos** asociados (agentes, llamadas, contactos, números) dejarán de estar accesibles.
* No puedes eliminar tu último proyecto. Si es el único que tienes, crea o únete a otro proyecto primero.
## Preguntas frecuentes
Los recursos no se mueven entre proyectos. Sin embargo, puedes duplicar un agente en otro proyecto para crear un nuevo borrador con la configuración copiada. No se copian llamadas, contactos, grabaciones, números de teléfono, facturación, claves API del proyecto ni secretos guardados en integraciones.
Consulta [Duplicar Agentes Entre Proyectos](/es/build/agentes/duplicar-agentes) para más detalles.
Sí. Los administradores pueden actualizar el nombre y la descripción del proyecto en cualquier momento desde **Ajustes > Proyecto**.
Los datos se conservan internamente para auditoría, pero ningún usuario podrá acceder a ellos.
# Suscripción
Source: https://docs.diga.io/es/plataforma/suscripcion
Gestiona tu plan actual, métodos de pago e historial de pagos desde los ajustes de tu proyecto.
# Suscripción
Desde **Ajustes > Suscripción** puedes consultar y gestionar tu plan actual, tus métodos de pago y tu historial de facturación.
## Plan actual
En la parte superior de la página verás un resumen de tu suscripción activa:
* **Plan contratado** y precio mensual.
* **Minutos incluidos** en tu plan.
* **Minutos acumulados** (rollover) disponibles.
* **Uso de Melo (Copilot)**: cuántas peticiones a Melo has consumido esta semana, con un contador **Se restablece en ** que indica cuándo se renueva tu cuota semanal.
* **Próxima fecha de facturación**.
Los minutos se asignan **mensualmente**, independientemente de si tu período de facturación es mensual o anual.
### Minutos restantes y acumulados
Los minutos que no consumes en un mes se transfieren al siguiente (**rollover**), hasta un máximo de **2x** los minutos incluidos de tu plan.
Para ver el detalle de tu consumo — cuánto llevas gastado y cuánto te queda — ve a [Ajustes > Uso](/es/plataforma/uso#minutos-totales-disponibles).
## Método de pago
En esta sección puedes ver y gestionar los métodos de pago asociados a tu proyecto.
### Añadir un método de pago
En la sección de método de pago, haz clic en **Añadir método de pago**.
Serás redirigido a Stripe para introducir los datos de forma segura.
Tu tarjeta quedará guardada para futuras facturas.
### Cambiar el método de pago predeterminado
Si tienes varias tarjetas registradas, puedes cambiar cuál se usa por defecto:
1. Haz clic en **Cambiar método de pago predeterminado**.
2. Selecciona la tarjeta que deseas usar.
3. Confirma el cambio haciendo clic en **Continuar**.
Si solo hay una tarjeta, se establece automáticamente como predeterminada.
### Eliminar un método de pago
Haz clic en el icono de eliminar junto al método de pago.
Se abrirá un modal de confirmación. Haz clic en **Eliminar** para confirmar.
No puedes eliminar tu único método de pago si tienes un plan activo de pago. Añade otro método antes de eliminar el existente.
## Gestionar suscripción
Haz clic en **Gestionar suscripción** para abrir el panel de configuración de tu plan. Desde aquí puedes:
* **Modificar tu plan**: te lleva a la página de [planes y precios](/es/plataforma/facturacion) para cambiar de plan.
* **Cambiar el período de facturación**: alternar entre **plan mensual** y **plan anual**.
* Ver los **minutos restantes** y **minutos acumulados** del período actual.
La **facturación basada en uso** se activa desde [Ajustes > Uso](/es/plataforma/uso). En esa página también puedes consultar los minutos extra consumidos y el resto de límites de tu plan.
Para guardar los cambios, haz clic en **Guardar**. Si deseas descartarlos, haz clic en **Volver atrás**.
Si sales del modal sin guardar, se te preguntará si deseas conservar o descartar los cambios realizados.
### Cancelar suscripción
Haz clic en **Gestionar suscripción** y luego en **Cancelar suscripción**.
Se abrirá un modal de confirmación. Haz clic en **Cancelar plan** para confirmar.
Verás un modal indicando que el plan ha sido cancelado con éxito.
Al cancelar, tu plan se revertirá al **plan gratuito** al final del período de facturación actual. Cualquier minuto de rollover que exceda el límite del plan gratuito se perderá. El cambio de plan no se hace efectivo hasta el próximo período de facturación.
## Historial de pagos
En la parte inferior de la página encontrarás una tabla con todas tus facturas:
| | |
| - | - |
| **Fecha** | Fecha de emisión de la factura |
| **Descripción** | Concepto del cargo |
| **Cantidad** | Importe facturado |
| **Estado** | Estado del pago: Pendiente, Pagado, Rechazado |
| **Acciones** | Enlace para descargar la factura |
### Descargar una factura
En la columna **Acciones** de cada fila tienes el enlace para descargar esa factura en PDF, lista para enviársela a tu departamento de administración. Las facturas las emite **Stripe**, el proveedor de pagos de Diga.
Si el enlace de descarga no te aparece, o necesitas una factura que no está en la tabla, escríbenos a [contact@diga.io](mailto:contact@diga.io) y te la hacemos llegar.
### Estados de pago
* **Pendiente**: el pago aún no se ha completado.
* **Pagado**: el pago se ha completado correctamente.
* **Rechazado**: el pago ha fallado. Revisa tu método de pago.
Estas etiquetas se corresponden con los estados de factura de Stripe subyacentes: **Pagado** equivale a `paid`; **Pendiente** equivale a `open` o `draft`; **Rechazado** equivale a `uncollectible` o `void`.
Si un pago es rechazado repetidamente, tu suscripción puede ser cancelada tras varias semanas y tus agentes dejarán de aceptar llamadas hasta que se resuelva el problema.
## Preguntas frecuentes
En la parte superior de **Ajustes > Suscripción** verás tus minutos restantes y acumulados del período actual. En [Ajustes > Uso](/es/plataforma/uso) tienes el detalle completo de consumo, con el porcentaje utilizado de cada límite.
Sí. Puedes añadir varias tarjetas y seleccionar cuál usar como predeterminada.
Tu plan actual permanece activo hasta el final del período pagado. Después se revierte al plan gratuito.
# Uso y límites
Source: https://docs.diga.io/es/plataforma/uso
Consulta el consumo de tu plan en tiempo real: minutos, llamadas simultáneas, Melo, flujos publicados y almacenamiento.
# Uso y límites
Desde **Ajustes > Uso** puedes ver cuánto llevas consumido de cada límite de tu plan. Cada apartado muestra una barra de progreso con el porcentaje utilizado y las cifras exactas.
Los límites concretos de cada apartado dependen de tu plan. Consulta la [página de precios](https://www.diga.io/pricing) para ver los tuyos.
## Cuándo se reinicia tu plan
En la parte superior de la página verás un contador que indica cuánto falta para que tu plan se restablezca, por ejemplo **Tu plan se restablecerá en 25 días**. El contador se muestra de forma aproximada, así que justo después de un reinicio leerás algo como "en un mes".
Al reiniciarse el ciclo se renuevan los minutos incluidos y el resto de límites mensuales.
El uso de Melo tiene su **propio contador semanal**, independiente del ciclo de tu plan.
## Minutos totales disponibles
Esta barra combina **los minutos incluidos en tu plan** y **los minutos acumulados** del mes anterior.
* Los minutos no consumidos en un mes se transfieren al siguiente (**rollover**).
* El rollover está limitado a **2x** los minutos incluidos de tu plan.
* Los minutos acumulados se consumen antes de generar uso adicional.
Cuando llegas al **100%** de tus minutos, tus agentes dejan de recibir llamadas. Para seguir recibiéndolas tienes dos opciones: activar la **facturación basada en uso** o [mejorar tu plan](/es/plataforma/facturacion#cambiar-de-plan).
## Facturación basada en uso
La facturación basada en uso te permite **seguir realizando y recibiendo llamadas después de agotar los minutos incluidos** en tu plan. Los minutos consumidos por encima de tu plan se facturan al precio por minuto extra de tu tarifa.
### Activar la facturación basada en uso
En el apartado de minutos, activa **Habilitar facturación basada en uso**.
Se abrirá una ventana explicando que el uso adicional se cobrará según las tarifas de tu plan actual. Haz clic en **Activar**.
Verás un aviso confirmando que la facturación basada en uso está activada.
Para desactivarla, vuelve a pulsar el interruptor. Recibirás un aviso recordándote que tus agentes dejarán de funcionar al alcanzar los límites del plan.
* Al agotar tus minutos incluidos y acumulados, las llamadas continúan.
* Los minutos extra se facturan mensualmente.
* Al agotar tus minutos, las nuevas llamadas se bloquean.
* No se generan cargos adicionales.
* Debes esperar al reinicio del plan o mejorar tu suscripción.
### Minutos extra
Justo debajo del interruptor verás la fila **Minutos extra**, con el precio por minuto de tu plan y los minutos adicionales consumidos en el período actual.
Los minutos extra son el consumo que supera los minutos incluidos en tu plan y se facturan mensualmente. Consulta el precio por minuto de cada plan en la [página de precios](https://www.diga.io/pricing).
## Llamadas simultáneas
Este apartado muestra **cuántas llamadas han intentado ejecutarse a la vez**. Arriba a la derecha aparece el tope de tu plan (**Plan limit**) y debajo encontrarás tres medidas distintas:
| Medida | Período | Qué te dice |
| - | - | - |
| **Demanda de llamadas simultáneas ahora mismo** | Tiempo real (etiqueta **Live**) | Cuántas llamadas están ocupando una línea en este momento, por ejemplo `4/5 llamadas simultáneas en uso` |
| **Pico medio de demanda** | Últimos 30 días | La media del pico de demanda de cada día, contando solo los días que tuvieron llamadas |
| **Momento de mayor actividad** | Últimos 30 días | La demanda más alta registrada en los últimos 30 días |
Demanda no es lo mismo que llamadas atendidas. Cuenta cada llamada desde que entra hasta que termina, incluido el tiempo que haya esperado a que se liberase una línea. Por eso las dos medidas de 30 días pueden superar el límite de tu plan, mientras que el contador en tiempo real nunca lo hace.
Tener tres medidas te permite distinguir entre un pico puntual y un problema recurrente. Si tu **pico medio** es 1 y tu **momento de mayor actividad** fue 4, aquel fue un día raro. Si el pico medio ya roza tu límite, estás funcionando cerca del tope todos los días que recibes llamadas, y conviene plantearse un plan mayor antes de que empiecen las esperas.
### Llamadas por encima del límite
Mientras no superes tu límite verás el estado **sin espera** (`no waiting`): todas las llamadas entran en el momento.
Cuando la demanda supera el tope de tu plan, el exceso se marca como **overlimit**. Por ejemplo, `6 llamadas · 1 overlimit` en un plan con tope de 5 significa que la demanda llegó a 6 habiendo solo 5 líneas disponibles.
Overlimit no significa que esas llamadas se perdieran. Quien llama cuando todas las líneas están ocupadas espera en cola y entra en cuanto se libera una, y esa espera es justo lo que aparece por encima del límite. Las llamadas que de verdad no llegaron a entrar son las que quedan registradas en el [registro de llamadas](/es/despliegue/monitoreo-logs) con el motivo **Límite de concurrencia alcanzado** o **Tiempo de espera agotado**, así que ese es el sitio donde comprobar cuántas perdiste realmente.
El límite de llamadas simultáneas viene determinado por tu plan y no se puede subir por separado. Si ves overlimit de forma recurrente, necesitas un plan con más llamadas simultáneas.
## Uso de Melo
[Melo](/es/plataforma/melo) es el asistente de IA del dashboard. Esta barra muestra el consumo de tu **cuota semanal**, que se basa en el número de peticiones procesadas al generar respuestas, crear agentes o editar flujos.
Cuando agotas la cuota, **Melo deja de funcionar** hasta que se renueve al inicio de la siguiente semana.
El uso de Melo **no consume minutos de llamada**: son límites independientes.
## Flujos publicados
Muestra cuántos [flujos](/es/build/flujos/introduccion) tienes publicados frente al máximo que permite tu plan.
Cuando alcanzas el límite no puedes publicar más flujos. Los cambios que hayas hecho se quedan **sin publicar** hasta que mejores tu plan.
## Bases de conocimiento
Muestra el almacenamiento ocupado por tus [bases de conocimiento](/es/build/bases-conocimiento) frente al total disponible en tu plan.
Si alcanzas el límite, no podrás añadir nuevos documentos hasta que liberes espacio o mejores tu suscripción.
## Avisos de consumo
Además de las barras, la plataforma te avisa cuando te acercas a un límite. Cada situación puede avisarte en dos sitios: **dentro de esta página**, junto a la barra correspondiente, y como **banner en el resto del panel**.
| Situación | Cómo te avisa | Qué hacer |
| - | - | - |
| Te queda poco margen de minutos | *Has usado el 80% de tus minutos incluidos* en esta página, y *te estás quedando sin minutos de llamada* en el resto del panel | Revisa tu ritmo de consumo y valora activar la facturación basada en uso |
| Has agotado los minutos | *Has alcanzado el límite de minutos de tu plan* en esta página, y *te has quedado sin recursos* en el resto del panel | Mejora tu plan o activa la facturación basada en uso para seguir recibiendo llamadas |
| Te acercas al límite de llamadas simultáneas | Banner de aviso en el panel | Valora un plan con más llamadas simultáneas |
| Has alcanzado el máximo de flujos publicados | *Tienes cambios sin publicar* al intentar publicar | Mejora tu plan para poder seguir publicando |
## Preguntas frecuentes
En **Ajustes > Uso**, en la barra de **Minutos totales disponibles**. Ahí se suman los minutos incluidos de tu plan y los acumulados del mes anterior.
Si tienes la facturación basada en uso desactivada, tus agentes dejan de recibir llamadas hasta el reinicio del plan. Si la tienes activada, las llamadas continúan y los minutos extra se facturan mensualmente.
No. Melo tiene su propia cuota semanal, independiente de los minutos de llamada.
Depende de la facturación basada en uso. Si la tienes **activada**, las llamadas siguen entrando y los minutos de más se facturan como minutos extra en la factura de ese mes. Si la tienes **desactivada**, las llamadas se bloquean al llegar al 100% y se reanudan cuando se reinicia el plan.
Mantén desactivada la facturación basada en uso. Así nunca se generan minutos extra: las llamadas se bloquean al agotar tu plan.
No. El número de llamadas simultáneas viene determinado por tu plan. Consulta la [página de precios](https://www.diga.io/pricing) para ver el límite de cada uno. Si necesitas un tope mayor del que ofrecen los planes publicados, [habla con ventas](https://www.diga.io/contact) para valorar un plan a medida.
# Comprar Números de Teléfono
Source: https://docs.diga.io/es/telefonia/comprar-telefonos
Compra y gestión de números de teléfono para tus agentes de voz
## Números de Teléfono
Los números de teléfono permiten que tus agentes de voz reciban y realicen llamadas. En esta sección te explicamos cómo comprar numeros directamente desde Diga, de manera que no tengas que manejar una infrastructura telefónica.
Actualmente solo ofrecemos numeros de teléfono españoles, y solo se premite realizar llamadas a números nacionales. Si deseas realizar peticiones para otros países, comprueba la seccion de [Configurar número personalizado](/es/telefonia/sip-trunks).
En este vídeo verás cómo asignar números de teléfono reales a tus agentes, incluida la verificación de identidad y la gestión de los números.
## Comprar Números de Teléfono
Ve a *Números de teléfono*\* y haz clic en "Comprar número". Selecciona la provincia y la cantidad de números que necesitas.
Serás redirigido a Stripe para procesar el pago de forma segura. Los números quedarán reservados para tu proyecto.
Si es tu primera compra, deberás completar el proceso de verificación de identidad antes de que los números se activen. Tienes 24 horas para completar este paso.
Una vez activos, asigna agentes a tus números para que puedan recibir y realizar llamadas.
Los números reservados durante la compra se mantendrán en espera hasta que se complete la verificación de identidad.
## Verificación de Identidad
### ¿Por qué es necesaria?
La verificación de identidad es un **requisito regulatorio** para prevenir fraudes y cumplir con las normativas de telecomunicaciones. Solo es necesaria para la primera compra de números de cada empresa.
### Cuándo se requiere
La verificación es obligatoria en estos casos:
* **Primera compra de números**: Empresas nuevas que compran su primer número
* **Sin verificación previa**: Si tu empresa nunca completó la verificación
Las empresas ya verificadas pueden comprar números adicionales sin verificación adicional.
### Proceso de verificación
La identidad se verifica mediante dos documentos PDF: un **documento de verificación firmado digitalmente** y una **factura relacionada con la provincia** que demuestre que tu empresa tiene una oficina en la provincia del número. La factura puede ser de luz, agua, gas o alquiler emitida en los últimos 6 meses, o una escritura con el domicilio social correcto. El proceso es el siguiente:
Después de introducir tu información de pago, tus números quedarán reservados temporalmente. No se te cobrará hasta que se verifique tu identidad.
Aparecerá un paso de verificación con un documento para descargar.
Firma el documento con el certificado digital de tu empresa o de autónomo.
Sube el documento firmado y la factura relacionada con la provincia. Ambos archivos deben ser PDF.
Tu número será revisado en menos de 24 horas. Recibirás toda la información por correo electrónico.
Una vez aprobada, tus números reservados se activarán automáticamente.
### Estados de verificación
Tu verificación puede estar en uno de estos estados:
**Pendiente**
* Documentos enviados, esperando revisión
* No puedes comprar números adicionales durante este período
* Los números comprados permanecen reservados
**Verificada**
* Aprobación exitosa
* Números reservados activados automáticamente
* Puedes comprar números adicionales sin restricciones
**Rechazada**
* Documento firmado o factura provincial no aprobados
* Pago cancelado automáticamente (no se te cobra)
* Números reservados liberados
* Puedes intentar verificar nuevamente con los documentos PDF corregidos
## Ciclo de vida de los números
Los números de teléfono pasan por diferentes estados durante su vida útil en tu proyecto.
### Estados del Número
El número está temporalmente asignado a tu proyecto durante el proceso de compra o verificación.
* Aún no está activo para llamadas
* Permanece en este estado durante la verificación
* Se activa automáticamente al aprobar la verificación
El número está completamente activo y operativo.
* Puedes asignar agentes para llamadas entrantes y salientes
* Se factura mensualmente (€1,95/mes + IVA)
* Aparece en tu lista de números activos
Has liberado el número, pero está en período de cuarentena de 30 días.
* No puedes usarlo para llamadas
* Otros clientes no pueden comprarlo durante este período
* Aún visible en tu panel (marcado como "En cuarentena")
* Los agentes se desasignan automáticamente
Después de la cuarentena, el número vuelve a estar disponible para comprarse.
### Período de Cuarentena
Cuando liberas un número, entra en un **período de cuarentena de 30 días** antes de estar disponible para otros clientes.
**¿Por qué existe la cuarentena?**
* Evita que números recién liberados sean comprados inmediatamente por otras empresas
* Permite tiempo para que los contactos actualicen sus registros
* Reduce confusión en clientes que puedan tener el número guardado
Durante la cuarentena, el número ya no se puede usar para llamadas y no se factura. No puedes reactivar un número liberado. Si necesitas recuperarlo, [contacta con soporte](https://www.diga.io/contact).
## Facturación de números
### Coste Mensual
Cada número de teléfono de Diga tiene un costo fijo:
* **€1.95 + IVA por número al mes**
* Facturación mensual independiente de tu plan de suscripción
* Se cobra junto con tu factura mensual de minutos
## Solución de Problemas
### No puedo comprar números adicionales
**Causa**: Tu empresa tiene una verificación pendiente.
**Solución**:
* Completa el proceso de verificación de identidad
* Una vez aprobada, podrás comprar números adicionales
### Mi pago fue autorizado pero los números no están activos
**Causa**: Tienes una verificación de identidad pendiente.
**Explicación**:
* El pago está retenido pero no capturado
* Los números están reservados esperando la verificación
* Se activarán automáticamente al aprobar la verificación
### Mi verificación fue rechazada
**Solución**:
1. Revisa el motivo del rechazo en el correo electrónico que recibiste
2. Vuelve a firmar el documento de verificación con un certificado digital válido de empresa o de autónomo y comprueba que la factura provincial sea válida
3. Intenta el proceso de verificación nuevamente
4. El pago anterior fue cancelado, no se te cobró
### Liberé un número por error
Los números liberados no se pueden recuperar. Entran en cuarentena de 30 días y luego quedan disponibles para otros clientes.
Si liberaste un número por error:
* No es posible reactivarlo
* Puedes comprar un número diferente inmediatamente
* El número liberado no estará disponible para otros hasta después de 30 días
# Números Personalizados
Source: https://docs.diga.io/es/telefonia/sip-trunks
Importa tus propios números de teléfono a Diga mediante SIP trunks personalizados y mantén el control total de tu telefonía con agentes de voz IA.
## SIP Trunks Personalizados
Los SIP trunks personalizados te permiten importar tus propios números de teléfono a Diga, manteniendo el control total sobre tu infraestructura de telefonía mientras aprovechas las capacidades de los agentes de voz inteligentes.
## Información General
### ¿Qué es un SIP Trunk?
Un SIP trunk es una conexión de telefonía IP que permite realizar y recibir llamadas usando el protocolo SIP (Session Initiation Protocol). Con SIP trunks personalizados, puedes:
* **Importar números existentes**: Trae tus números actuales a Diga
* **Mantener tu proveedor**: Continúa trabajando con tu operador actual
* **Sin facturación adicional**: Diga no cobra por números personalizados
* **Control total**: Gestiona tu configuración SIP
## Requisitos Previos
Antes de importar un número personalizado, asegúrate de tener:
Tu número debe estar en formato internacional E.164 (ej: +34912345678)
Necesitas un proveedor SIP activo que soporte:
* Llamadas entrantes (inbound)
* Llamadas salientes (outbound)
Para realizar llamadas salientes y transferencias, obtén de tu proveedor:
* Usuario del trunk SIP (username)
* Contraseña del trunk SIP (password)
* URI de terminación (se introduce en el campo **Dirección**)
Son opcionales. Si solo necesitas recibir llamadas entrantes, puedes dejarlos vacíos.
Si no tienes un proveedor SIP o no estás familiarizado con la configuración técnica, considera [comprar telélefonos en la plataforma](./comprar-telefonos) para una experiencia simplificada.
## Importar un Número Personalizado
El formulario de importación ("Conecta tu número mediante SIP trunk") está organizado en tres pestañas:
* **General**: ajustes del número y de enrutamiento compartidos por las llamadas entrantes y salientes.
* **Configuración de entrada**: ajustes que se aplican a las llamadas entrantes.
* **Configuración de salida**: credenciales y la dirección que se usan para las llamadas salientes.
La configuración de salida (las credenciales del trunk SIP y la dirección) es **opcional**. Si la dejas vacía, el número será **solo de entrada**. Debes rellenarla para realizar llamadas salientes y para usar las transferencias.
### General
#### Número de Teléfono
El número que vas a importar en formato internacional E.164 (ej: `+34675897654`). Este campo también acepta un identificador de usuario SIP (ej: `user@domain.com`).
#### Cifrado de medios
Controla el cifrado SRTP para los flujos de medios. Elige una opción:
* **Desactivado**: los medios no se cifran.
* **Permitido** (por defecto): los medios se cifran cuando el otro extremo lo soporta.
* **Requerido**: los medios deben cifrarse.
#### Direcciones IP permitidas
Una lista de direcciones IP o rangos CIDR autorizados para enviar llamadas a este trunk (ej: `192.168.1.0/24`). Déjala vacía para permitir todas las direcciones.
### Configuración de salida
#### Usuario del trunk SIP (Opcional)
Tu identificador de usuario proporcionado por el proveedor SIP, usado para la autenticación digest.
**Ejemplo**: `usuario123` o `mi-empresa`
#### Contraseña del trunk SIP (Opcional)
La contraseña para autenticar las llamadas salientes con tu proveedor.
Guarda esta contraseña de forma segura. Diga la almacena de forma cifrada pero debes mantenerla confidencial.
#### Dirección
El hostname o IP del servidor SIP de tu proveedor a donde se envían los SIP INVITE para las llamadas salientes. Es la URI de terminación de tu proveedor.
**No** incluyas el prefijo `sip:` o `sips:`. Introduce solo el hostname o IP, opcionalmente con un puerto.
**Formato típico**: `[hostname-o-ip]:[puerto]`
**Ejemplos**:
* `my-termination.example.com:5060`
* `trunk.example.net:5061`
### Configurar en tu proveedor
Activa el SIP Trunking en tu número de teléfono e introduce `sip.diga.io` en el apartado URI de terminación. Puedes ver guías específicas en las siguientes páginas
Si no estás seguro de estos valores, contacta con tu proveedor SIP. Esta información suele estar disponible en el panel de control de tu servicio SIP.
## Gestión de Números Personalizados
### Ver Números Personalizados
Los números personalizados aparecen en tu lista de números junto con los números de Diga, pero se identifican claramente en la columna de proveedor como "Custom".
### Eliminar un Número Personalizado
Puedes eliminar los números de teléfono personalizados de la misma forma que los números comprados a través de la plataforma. Para ello, haz click sobre el botón de visualizar en la tabla de números de teléfono.
En ese menú te aparecerá la opción de "Dar de baja este número". A diferencia de los números comprados a través de nuestra plataforma, los números de teléfono personalizados son liberados automáticamente al hacer click en aceptar. Los agentes vinculados quedarán despublicados de forma automática
## Facturación
### Sin Cargos en Diga
Los números personalizados **no generan cargos en tu factura de Diga**:
* Sin tarifa mensual por número
* Sin cargos de configuración
* Sin cargos por llamadas (pagas directamente a tu proveedor SIP)
### Costos con tu Proveedor SIP
Tu proveedor SIP puede cobrarte por:
* Alquiler mensual del número
* Llamadas entrantes
* Llamadas salientes
* Configuración del trunk SIP
Revisa los términos de facturación directamente con tu proveedor SIP, ya que Diga no gestiona estos pagos.
### Uso de Minutos
Las llamadas realizadas con números personalizados **sí consumen minutos de tu plan de Diga**:
* Los minutos se cuentan igual que con números Netelip
* Se aplican a tu asignación mensual de minutos
* Si excedes tu plan, se cobran minutos adicionales (si está habilitado)
Solo el número en sí es gratuito en Diga. El tiempo de llamada sigue consumiendo tus minutos incluidos en tu plan de suscripción.
## Solución de Problemas
### Las llamadas entrantes no funcionan
**Posibles causas**:
1. Tu proveedor SIP no está reenviando llamadas a Diga
2. Las Direcciones IP permitidas están bloqueando a tu proveedor
3. No hay agente asignado para llamadas entrantes
**Soluciones**:
* Contacta con tu proveedor para verificar el reenvío a `sip.diga.io`
* Asegúrate de que las IPs de tu proveedor estén incluidas en **Direcciones IP permitidas** (o deja la lista vacía para permitir todas)
* Asigna un agente para llamadas entrantes
### Las llamadas salientes fallan
**Posibles causas**:
1. La configuración de salida (credenciales y Dirección) está vacía o es incorrecta
2. La Dirección todavía incluye un prefijo `sip:`/`sips:`
3. Tu proveedor SIP no permite llamadas salientes
4. Restricciones de tu proveedor (destinos permitidos, límites, etc.)
5. No hay agente asignado para llamadas salientes
**Soluciones**:
* Rellena la pestaña **Configuración de salida** (usuario y contraseña del trunk SIP, y Dirección)
* Asegúrate de que la **Dirección** no tenga prefijo `sip:`/`sips:` ni espacios
* Verifica que tu trunk SIP soporte llamadas salientes
* Revisa las políticas de llamadas salientes de tu proveedor
* Asigna un agente para llamadas salientes
### Error al importar el número
**Posibles causas**:
1. Formato de número incorrecto (no E.164)
2. El número ya está importado en otro proyecto
3. Credenciales SIP inválidas
**Soluciones**:
* Asegúrate de usar formato E.164 con + al inicio
* Verifica que el número no esté en uso en otro proyecto
* Confirma que las credenciales sean correctas
### Calidad de llamada deficiente
**Posibles causas**:
1. Problemas con tu proveedor SIP
2. Latencia de red
3. Configuración de códecs incompatible
**Soluciones**:
* Contacta con tu proveedor SIP para verificar la calidad
* Verifica la conectividad de red
* Consulta con tu proveedor sobre códecs soportados
Diga no tiene control sobre la calidad de las llamadas de números personalizados. Si experimentas problemas persistentes, contacta con tu proveedor SIP.
# Netelip - Importar número
Source: https://docs.diga.io/es/telefonia/sip-trunks/netelip
Guía paso a paso para conectar tu cuenta de Netelip mediante SIP trunking
## Pasos
Empezaremos comprando el número de teléfono dentro de Netelip. Una vez lo tengamos configurado, podemos importarlo de forma muy simple en Diga.
Para ello:
1. Accede a tu cuenta de Netelip.
2. Selecciona servicios en la barra lateral o accede a través de la rueda de ajustes que verás moviendose en la parte superior derecha.
3. Selecciona *Numeración telefónica* en el menú.
4. Dentro de numeración telefónica, selecciona *Administrar*.
5. Haz click en adquirir dentro de las opciones que verás en la parte superior de la tabla
En el siguiente video, puedes ver paso por paso cómo comprar un número en Netelip:
Ya has creado comprado el número, ahora necesitas realizar el desvío de ese número hacia Diga mediante SIP Trunking.
Para ello:
1. En la lista de [Mis Números](https://cloud.netelip.com/es/numeration/numberlist), haz click en el botón de configurar.
2. En la lista de opciones, selecciona *Servidor SIP* y activa la opción de *Añadir al número e164 el signo ”+”*
3. En el campo de texto que se habilitará al realizar el paso anterior, introduce sip.diga.io
Asegúrate de activar la opción de "Añadir al número e164 el signo ”+”" para que las llamadas se enruten correctamente.
Ahora que el número está configurado con tu Elastic SIP trunking, necesitas importar el número a Diga para que sepamos cómo enrutar las llamadas.
Las credenciales son opcionales y solo se necesitan para las llamadas salientes. Para habilitarlas, abre la pestaña **Configuración de salida** y proporciona el usuario y contraseña que Netelip te facilita en tu [panel privado](https://cloud.netelip.com/es/sipline/configurator/qr). Podrás encontrar la URI de terminación en este panel al lado de la etiqueta de *Servidor*.
Introduce la URI de terminación en el campo **Dirección** **sin** el prefijo `sip:` (por ejemplo, `sip.netelip.com:5060`, no `sip:sip.netelip.com:5060`).
También puedes importar números programáticamente mediante la [API de Importar Número](/api-reference/phones/import-phone-numbers).
Una vez importado el número, puedes realizar y recibir llamadas con este número igual que con un número comprado en Diga. Aparecerá en tu dashboard y podrás hacer llamadas directamente desde él.
## Problemas Comunes
**Verifica la configuración del desvío en Netelip**
Asegúrate de que has configurado correctamente el desvío hacia `sip.diga.io` en el panel de Netelip. Revisa que la opción de "Añadir al número e164 el signo ”+”" esté activada.
**Verifica que el número está importado correctamente en Diga**
Asegúrate de que el número que has importado en Diga coincide exactamente con el número configurado en Netelip, incluyendo el formato internacional.
**Verifica tu URI de terminación SIP**
Si hay un espacio, elimínalo.
**Verifica que has puesto el mismo número de teléfono en Diga y en Netelip**
A la hora de importar el número en Diga, asegúrate de que el número de teléfono que has puesto es exactamente el mismo que has configurado en Netelip.
**Verifica tu usuario y credenciales**
Asegúrate de haber introducido el usuario y credenciales correctos que aparecen en el diálogo de configuración.
# Twilio - Importar número
Source: https://docs.diga.io/es/telefonia/sip-trunks/twilio
Guía paso a paso para conectar tu cuenta de Twilio mediante SIP trunking
## Pasos
Empezaremos creando el SIP Trunk dentro de Twilio. Una vez lo tengamos configurado, podemos importarlo de forma muy simple en Diga.
Debes activar la opción de `Call Transfer` (SIP REFER) y hacer click en la opción de `Enable PSTN Transfer` para permitir las transferencias en las llamadas
La URI de terminación SIP es importante, la usarás en pasos posteriores. Es recomendable usar una URI de terminación localizada cerca de tu región. Puedes ver tus URIs localizadas en la consola de Twilio. Esta URL será utilizada para realizar [llamadas salientes](/api-reference/call/make-call). Es decir, llamadas iniciadas por un agente de Diga
Para que tu Elastic SIP trunk acepte las solicitudes de llamadas salientes, necesitas utilizar la autenticación mediante usuario y contraseña. Lo podrás poner más adelante en Diga
Aquí especificarás la dirección del servidor SIP de Diga como URI de originación SIP: `sip:sip.diga.io`
Ya has creado el Elastic SIP trunk, ahora necesitas comprar números nuevos o mover números existentes a este trunk.
Ahora que el número está configurado con tu Elastic SIP trunking, necesitas importar el número a Diga para que sepamos cómo enrutar las llamadas.
Aquí proporcionarás la URI de terminación SIP que configuraste en el Paso 1. Introdúcela en el campo **Dirección** (en la pestaña de **Configuración de salida**) **sin** el prefijo `sip:` (por ejemplo, `my-termination.example.com:5060`). Si configuraste autenticación por credenciales, también deberás proporcionar el usuario y contraseña.
También puedes importar números programáticamente mediante la [API de Importar Número](/api-reference/phones/import-phone-numbers).
Una vez importado el número, puedes realizar y recibir llamadas con este número igual que con un número comprado en Diga. Aparecerá en tu dashboard y podrás hacer llamadas directamente desde él.
## Problemas Comunes
**Verifica tu URI de terminación SIP**
Si hay un espacio, elimínalo. Asegúrate de haber introducido la dirección en el campo **Dirección** **sin** el prefijo `sip:` ni `sips:`. También deberías usar una URI de terminación localizada cerca de tu región. Consulta la [documentación de Twilio](https://www.twilio.com/docs/global-infrastructure/localized-uris/termination) para seleccionar una.
**Verifica tu usuario y credenciales**
Asegúrate de haber introducido el usuario y credenciales correctos que aparecen en el diálogo de configuración. Ten en cuenta que el nombre de usuario no es el "friendly name" que aparece en la lista de credenciales. El friendly name es diferente al nombre de usuario, verifica que no hayas puesto un nombre diferente.
1. Busca "geo" para encontrar la configuración "Voice Geographic Permissions"
2. Elige "Elastic Sip Trunking" en el selector y selecciona los países a los que deseas llamar
## Enmascaramiento de número
Si tienes un número de teléfono personal o un número de empresa de confianza que quieras mostrar a quien recibe la llamada, puedes importar números verificados en Twilio para usarlos como identificador de llamada (caller ID).
### Añadir un Caller ID
1. Ve a la página de [Verified Caller IDs](https://www.twilio.com/console/phone-numbers/verified)
2. Haz clic en **Add a new Caller ID**
3. Introduce el número de teléfono que quieres verificar, selecciona el método de verificación y haz clic en **Verify Number**
4. El número introducido recibirá un código OTP de verificación. Introduce este código en la siguiente ventana.
5. Al hacer clic en **Submit**, si el código OTP es correcto, recibirás una notificación de **Successful** y el número quedará añadido a tu cuenta como caller ID verificado.
### Configurar reglas de cabeceras SIP para mostrar el Caller ID
1. En la consola de Twilio, ve a Elastic SIP Trunking > Trunks > \[tu trunk] > Termination
2. Baja hasta Header Manipulation y abre **View all SIP header manipulation policies**
3. Haz clic en **Create a policy** arriba a la derecha y asigna un nombre a tu política
4. Haz clic en **+ Add request rule** y asigna un nombre a la regla
5. En la sección Actions, establece los siguientes valores:
* **SIP header field**: **From number**
* **Action**: **Replace with**
* **Value**: tu caller ID en formato E.164 (por ejemplo, +18881230987)
6. Haz clic en **Add rule** y después en **Save policy**
7. Vuelve a la pestaña Termination de tu trunk y selecciona la nueva política de manipulación de cabeceras en el desplegable
8. A partir de ahora, cualquier número importado desde este trunk de Twilio a tu cuenta de Diga usará tu caller ID verificado. Realiza una llamada saliente de prueba para validar los cambios.
Necesitas tener al menos un número comprado en Twilio dentro de tu SIP trunk para que se aplique el caller ID.
# Copy agent template
Source: https://docs.diga.io/api-reference/agent-templates/copy-agent-template
/api-reference/openapi.json post /v1/agent/template/{template_id}/copy
Create a new agent from a template, substituting <> placeholders with provided values.
# Get agent template
Source: https://docs.diga.io/api-reference/agent-templates/get-agent-template
/api-reference/openapi.json get /v1/agent/template/{template_id}
Get an agent template by its ID.
# List agent templates
Source: https://docs.diga.io/api-reference/agent-templates/list-agent-templates
/api-reference/openapi.json get /v1/agent/template
List available agent templates with pagination. Templates are global and visible to all users.
# Create a new agent
Source: https://docs.diga.io/api-reference/agents/create-a-new-agent
/api-reference/openapi.json post /v1/agent/
Create a new agent. By default, creates a new version (v1) and a draft. If is_draft is true, creates only a draft.
# Delete agent
Source: https://docs.diga.io/api-reference/agents/delete-agent
/api-reference/openapi.json delete /v1/agent/{agent_id}
Delete an agent by ID. Cannot delete agents with published versions.
# Delete agent version
Source: https://docs.diga.io/api-reference/agents/delete-agent-version
/api-reference/openapi.json delete /v1/agent/{agent_id}/version/{version_id}
Delete a specific version of an agent. Cannot delete published or draft versions that are currently in use.
# Duplicate agent into another project
Source: https://docs.diga.io/api-reference/agents/duplicate-agent-into-another-project
/api-reference/openapi.json post /v1/agent/{agent_id}/duplicate
Create a new draft agent in a target project by copying operational configuration from an existing agent or version.
# Get agent by ID
Source: https://docs.diga.io/api-reference/agents/get-agent-by-id
/api-reference/openapi.json get /v1/agent/{agent_id}
Retrieve a specific agent by ID. By default, retrieves the draft version. Optionally specify a version_id or is_published to retrieve a specific version.
# Get Agents Versions Dropdown
Source: https://docs.diga.io/api-reference/agents/get-agents-versions-dropdown
/api-reference/openapi.json get /v1/agent/versions-dropdown/dashboard
Retrieve all agents with their versions for dropdowns.
# Launch new agent version
Source: https://docs.diga.io/api-reference/agents/launch-new-agent-version
/api-reference/openapi.json post /v1/agent/{agent_id}/version
Launch a new version of an existing agent based on the current draft. Creates a numbered version (e.g., v2, v3) that can be published.
# List agent versions
Source: https://docs.diga.io/api-reference/agents/list-agent-versions
/api-reference/openapi.json get /v1/agent/{agent_id}/version
Retrieve a paginated list of all versions for a specific agent, including draft and published versions.
# List all agents
Source: https://docs.diga.io/api-reference/agents/list-all-agents
/api-reference/openapi.json get /v1/agent/
Retrieve a paginated list of agents for the company. By default, retrieves only draft versions. Supports cursor-based and page-based pagination.
# Publish agent version
Source: https://docs.diga.io/api-reference/agents/publish-agent-version
/api-reference/openapi.json patch /v1/agent/{agent_id}/published_version
Publish a specific version of an agent and associate it with phone numbers. Phone numbers can be inbound, outbound, or both. If version_id is None, unpublishes the current published version.
# Update agent draft
Source: https://docs.diga.io/api-reference/agents/update-agent-draft
/api-reference/openapi.json patch /v1/agent/{agent_id}
Update the draft version of an existing agent with new configuration, prompts, or settings.
# Create Api Key
Source: https://docs.diga.io/api-reference/api-keys/create-api-key
/api-reference/openapi.json post /v1/api_key/
Create a new
# Delete Api Key
Source: https://docs.diga.io/api-reference/api-keys/delete-api-key
/api-reference/openapi.json delete /v1/api_key/{id}
Delete {id}
# Get Api Key
Source: https://docs.diga.io/api-reference/api-keys/get-api-key
/api-reference/openapi.json get /v1/api_key/{id}
Retrieve information about {id}
# List Api Keys
Source: https://docs.diga.io/api-reference/api-keys/list-api-keys
/api-reference/openapi.json get /v1/api_key/
Retrieve information about
# Update Api Key
Source: https://docs.diga.io/api-reference/api-keys/update-api-key
/api-reference/openapi.json patch /v1/api_key/{id}
Update an existing {id}
# Update Customer
Source: https://docs.diga.io/api-reference/billing--customers/update-customer
/api-reference/openapi.json patch /v1/billing/customer/
Update an existing
# Get Payment Methods
Source: https://docs.diga.io/api-reference/billing--payment-methods/get-payment-methods
/api-reference/openapi.json get /v1/billing/payment_method/
Get all payment methods associated with the company's current Stripe customer.
# Get Subscription
Source: https://docs.diga.io/api-reference/billing--subscriptions/get-subscription
/api-reference/openapi.json get /v1/billing/subscription/
Retrieve information about
# Get Upcoming Invoice
Source: https://docs.diga.io/api-reference/billing--subscriptions/get-upcoming-invoice
/api-reference/openapi.json get /v1/billing/subscription/upcoming-invoice
Preview the next invoice for the current subscription from Stripe: recurring plan cost, metered usage overage, and the authoritative total.
# Create Path
Source: https://docs.diga.io/api-reference/conversational-paths/create-path
/api-reference/openapi.json post /v1/path/
Create a new
# Delete Path
Source: https://docs.diga.io/api-reference/conversational-paths/delete-path
/api-reference/openapi.json delete /v1/path/{id}
Delete {id}
# Get Path
Source: https://docs.diga.io/api-reference/conversational-paths/get-path
/api-reference/openapi.json get /v1/path/{id}
Retrieve information about {id}
# List Paths
Source: https://docs.diga.io/api-reference/conversational-paths/list-paths
/api-reference/openapi.json get /v1/path/
Retrieve information about
# Update Path
Source: https://docs.diga.io/api-reference/conversational-paths/update-path
/api-reference/openapi.json patch /v1/path/{id}
Update an existing {id}
# Copy integration template
Source: https://docs.diga.io/api-reference/integration-templates/copy-integration-template
/api-reference/openapi.json post /v1/integration/template/{template_id}/copy
Create an integration with tools from a template.
# Get integration template
Source: https://docs.diga.io/api-reference/integration-templates/get-integration-template
/api-reference/openapi.json get /v1/integration/template/{template_id}
Get an integration template by its ID.
# List integration templates
Source: https://docs.diga.io/api-reference/integration-templates/list-integration-templates
/api-reference/openapi.json get /v1/integration/template
List available integration templates with pagination.
# Create HTTP tool
Source: https://docs.diga.io/api-reference/integration/create-http-tool
/api-reference/openapi.json post /v1/integration/{integration_id}/tool
Create a new custom HTTP tool for an HTTP integration. Only works with HTTP integrations. MCP tools are synced automatically from the MCP server.
# Create integration
Source: https://docs.diga.io/api-reference/integration/create-integration
/api-reference/openapi.json post /v1/integration
Create a new HTTP or MCP integration. For MCP integrations, tools are automatically synced from the MCP server. Authentication is validated during creation.
# Delete HTTP tool
Source: https://docs.diga.io/api-reference/integration/delete-http-tool
/api-reference/openapi.json delete /v1/integration/{integration_id}/tool/{tool_id}
Delete an HTTP tool from an integration. Only works with HTTP integrations. MCP tools are managed by the MCP server and cannot be deleted.
# Delete integration
Source: https://docs.diga.io/api-reference/integration/delete-integration
/api-reference/openapi.json delete /v1/integration/{integration_id}
Permanently delete an integration and all associated tools. For MCP integrations, clears the tool cache. For HTTP integrations, cascade deletes all HTTP tools.
# Get integration details
Source: https://docs.diga.io/api-reference/integration/get-integration-details
/api-reference/openapi.json get /v1/integration/{integration_id}
Retrieve detailed information about a specific integration by ID, including configuration and type.
# Get integration tool
Source: https://docs.diga.io/api-reference/integration/get-integration-tool
/api-reference/openapi.json get /v1/integration/{integration_id}/tool/{tool_id}
Retrieve details of a specific tool. For HTTP integrations: use tool UUID. For MCP integrations: use tool ID (maps to name internally).
# List integration tools
Source: https://docs.diga.io/api-reference/integration/list-integration-tools
/api-reference/openapi.json get /v1/integration/{integration_id}/tool
List all tools from an integration. For MCP: fetches from MCP server with name-based cursors. For HTTP: returns tools from database with UUID cursors. Automatically syncs MCP tools.
# List integrations
Source: https://docs.diga.io/api-reference/integration/list-integrations
/api-reference/openapi.json get /v1/integration
Retrieve a paginated list of all integrations (HTTP and MCP) configured for the company.
# Update HTTP tool
Source: https://docs.diga.io/api-reference/integration/update-http-tool
/api-reference/openapi.json patch /v1/integration/{integration_id}/tool/{tool_id}
Update an existing HTTP tool's configuration. Only works with HTTP integrations. MCP tools cannot be updated directly.
# Update integration
Source: https://docs.diga.io/api-reference/integration/update-integration
/api-reference/openapi.json patch /v1/integration/{integration_id}
Update integration configuration. For MCP integrations, tools are automatically re-synced if base_url or auth_key changes. Authentication is revalidated.
# Update tool approval settings
Source: https://docs.diga.io/api-reference/integration/update-tool-approval-settings
/api-reference/openapi.json patch /v1/integration/{integration_id}/tool-approval
Batch update approval_required settings for multiple tools. Works with both HTTP and MCP tools. Tools requiring approval need explicit user confirmation before execution.
# Delete Knowledge Item
Source: https://docs.diga.io/api-reference/knowledge-items/delete-knowledge-item
/api-reference/openapi.json delete /v1/knowledge/item/{id}
Delete a knowledge item
# Get Knowledge Item
Source: https://docs.diga.io/api-reference/knowledge-items/get-knowledge-item
/api-reference/openapi.json get /v1/knowledge/item/{id}
Retrieve a specific knowledge item by ID
# Refresh Knowledge Item
Source: https://docs.diga.io/api-reference/knowledge-items/refresh-knowledge-item
/api-reference/openapi.json post /v1/knowledge/item/{id}/refresh
Re-crawl a URL knowledge item so its indexed content matches the live page.
Returns the item with status `indexing`; poll the item until it is `uploaded`
(or `error`). `updated_date` is set once the refresh succeeds.
# Update Knowledge Base
Source: https://docs.diga.io/api-reference/knowledge-items/update-knowledge-base
/api-reference/openapi.json patch /v1/knowledge/item/{id}
Update a knowledge item
# Get Notification Preferences
Source: https://docs.diga.io/api-reference/notifications/get-notification-preferences
/api-reference/openapi.json get /v1/notification/preferences
# Get Unread Notification Count
Source: https://docs.diga.io/api-reference/notifications/get-unread-notification-count
/api-reference/openapi.json get /v1/notification/unread-count
# List Notifications
Source: https://docs.diga.io/api-reference/notifications/list-notifications
/api-reference/openapi.json get /v1/notification
# Mark Notifications Read
Source: https://docs.diga.io/api-reference/notifications/mark-notifications-read
/api-reference/openapi.json post /v1/notification/read
# Mark Notifications Unread
Source: https://docs.diga.io/api-reference/notifications/mark-notifications-unread
/api-reference/openapi.json post /v1/notification/unread
# Update Notification Preferences
Source: https://docs.diga.io/api-reference/notifications/update-notification-preferences
/api-reference/openapi.json patch /v1/notification/preferences
# Get Phone
Source: https://docs.diga.io/api-reference/phones/get-phone
/api-reference/openapi.json get /v1/phone/{phone_id}
Retrieve one of your phones by its id
# Import Phone Number
Source: https://docs.diga.io/api-reference/phones/import-phone-number
/api-reference/openapi.json post /v1/phone/import
Import a phone number from an external SIP provider.
This endpoint allows you to use your own phone numbers with custom SIP trunks
# List Phones
Source: https://docs.diga.io/api-reference/phones/list-phones
/api-reference/openapi.json get /v1/phone/
Retrieve a list of phones, optionally filtered by agent ID.
# Release Phone Number
Source: https://docs.diga.io/api-reference/phones/release-phone-number
/api-reference/openapi.json delete /v1/phone/{id}
Release a phone number.
- For Netelip (purchased) numbers: Orders the release of the number which will take effect once the subscription cycle ends
- For custom (imported) numbers: Deletes it automatically
Note: Phones in RESERVED (in checkout) or PENDING_VERIFICATION
(paid, awaiting verification) status cannot be released.
# Update Phone
Source: https://docs.diga.io/api-reference/phones/update-phone
/api-reference/openapi.json patch /v1/phone/{phone_id}
Update a phone's configuration (nickname and/or agent assignments).
Agent assignment behavior:
- Provide `inbound_version_id` to set which agent handles incoming calls
- Provide `outbound_version_id` to set which agent handles outgoing calls
- Assigning a version publishes it; if the agent already has a different
published version in another phone, the request will fail since an agent
can only have one published version at a time.
# Update Sip Config
Source: https://docs.diga.io/api-reference/phones/update-sip-config
/api-reference/openapi.json patch /v1/phone/{phone_id}/sip-config
Update SIP trunk configuration for an imported phone number.
Updates LiveKit trunks first, then persists to database.
Only custom/imported phones can have their SIP config updated.
# Complete Client Connection Oauth
Source: https://docs.diga.io/api-reference/public-client-connections/complete-client-connection-oauth
/api-reference/openapi.json get /v1/public/client-connection-requests/oauth/callback
# Complete Cloud Client Connection Oauth
Source: https://docs.diga.io/api-reference/public-client-connections/complete-cloud-client-connection-oauth
/api-reference/openapi.json post /v1/public/client-connection-requests/{request_id}/oauth/complete
# Exchange Client Connection Token
Source: https://docs.diga.io/api-reference/public-client-connections/exchange-client-connection-token
/api-reference/openapi.json post /v1/public/client-connection-requests/exchange
# Get Current Client Connection Request
Source: https://docs.diga.io/api-reference/public-client-connections/get-current-client-connection-request
/api-reference/openapi.json get /v1/public/client-connection-requests/{request_id}/current
# Start Client Connection Oauth
Source: https://docs.diga.io/api-reference/public-client-connections/start-client-connection-oauth
/api-reference/openapi.json post /v1/public/client-connection-requests/{request_id}/oauth/start
# Submit Client Connection Credentials
Source: https://docs.diga.io/api-reference/public-client-connections/submit-client-connection-credentials
/api-reference/openapi.json post /v1/public/client-connection-requests/{request_id}/credentials
# Last successful login
Source: https://docs.diga.io/api-reference/security/last-successful-login
/api-reference/openapi.json get /v1/profile/security/last-login
# List active sessions
Source: https://docs.diga.io/api-reference/security/list-active-sessions
/api-reference/openapi.json get /v1/profile/security/sessions
# Paginated login history (success + failure)
Source: https://docs.diga.io/api-reference/security/paginated-login-history-success-+-failure
/api-reference/openapi.json get /v1/profile/security/login-history
# Revoke a single session
Source: https://docs.diga.io/api-reference/security/revoke-a-single-session
/api-reference/openapi.json delete /v1/profile/security/sessions/{session_id}
Revoke a single session owned by the caller.
The session's refresh token dies immediately (it can never renew), but its
already-issued access token stays valid until it expires (GoTrue
JWT_EXPIRY, ~1h) — revocation is not instant. PRO-838 tracks per-request
session validation for immediate revocation.
# Sign out all other sessions
Source: https://docs.diga.io/api-reference/security/sign-out-all-other-sessions
/api-reference/openapi.json post /v1/profile/security/sessions/sign-out-others
Revoke every session except the caller's current one.
Deletes the other sessions (cascading to their refresh tokens) so they
cannot renew, but their current access tokens stay valid until they expire
(GoTrue JWT_EXPIRY, ~1h) — the other devices are not kicked instantly.
PRO-838 tracks per-request session validation for immediate revocation.
# Create Verification
Source: https://docs.diga.io/api-reference/verification/create-verification
/api-reference/openapi.json post /v1/verification/
Create a new verification by uploading a signed document and invoice.
Both PDFs are stored and an admin will review the verification.
Once reviewed, the verification status will be updated to VERIFIED or REJECTED.
# List Verifications
Source: https://docs.diga.io/api-reference/verification/list-verifications
/api-reference/openapi.json get /v1/verification/
List all verifications for the authenticated company.
# Add Favourite Voice
Source: https://docs.diga.io/api-reference/voices/add-favourite-voice
/api-reference/openapi.json post /v1/voice/favourite/{voice_id}
Add a voice to the company's favourites
# Get Voice
Source: https://docs.diga.io/api-reference/voices/get-voice
/api-reference/openapi.json get /v1/voice/{voice_id}
Get a voice by its ID
# List Favourite Voices
Source: https://docs.diga.io/api-reference/voices/list-favourite-voices
/api-reference/openapi.json get /v1/voice/favourite
List the company's favourite voices
# List Voices
Source: https://docs.diga.io/api-reference/voices/list-voices
/api-reference/openapi.json get /v1/voice/
List voices available in Diga. Defaults to Gemini and supports filtering by provider, name, and gender.
# Remove Favourite Voice
Source: https://docs.diga.io/api-reference/voices/remove-favourite-voice
/api-reference/openapi.json delete /v1/voice/favourite/{voice_id}
Remove a voice from the company's favourites
# Create Webhook
Source: https://docs.diga.io/api-reference/webhooks/create-webhook
/api-reference/openapi.json post /v1/webhook/
Register a URL to receive event deliveries for the subscribed events. Deliveries are signed with a per-webhook secret (`Diga-Signature` header). The secret is returned only in this response — store it securely.
# Delete Webhook
Source: https://docs.diga.io/api-reference/webhooks/delete-webhook
/api-reference/openapi.json delete /v1/webhook/{id}
Delete a webhook. Event deliveries to its URL stop immediately.
# Get Webhook
Source: https://docs.diga.io/api-reference/webhooks/get-webhook
/api-reference/openapi.json get /v1/webhook/{id}
Retrieve a webhook by its ID. The response never includes the signing secret.
# Get Webhooks
Source: https://docs.diga.io/api-reference/webhooks/get-webhooks
/api-reference/openapi.json get /v1/webhook/
Retrieve a paginated list of your company's webhooks, optionally filtered by subscribed event. Responses never include the signing secret.
# Rotate Webhook Secret
Source: https://docs.diga.io/api-reference/webhooks/rotate-webhook-secret
/api-reference/openapi.json post /v1/webhook/{id}/rotate
Generate a new signing secret for a webhook. The new secret is returned only in this response; the old secret stops signing immediately — there is no grace period.
# Update Webhook
Source: https://docs.diga.io/api-reference/webhooks/update-webhook
/api-reference/openapi.json patch /v1/webhook/{id}
Update a webhook's URL and/or subscribed events. The signing secret cannot be changed here — use the rotate endpoint.
# Copy Client Connection Link
Source: https://docs.diga.io/api-reference/workflows--client-connections/copy-client-connection-link
/api-reference/openapi.json post /v1/workflow/client-connection-requests/{request_id}/link
# Create Client Connection Request
Source: https://docs.diga.io/api-reference/workflows--client-connections/create-client-connection-request
/api-reference/openapi.json post /v1/workflow/client-connection-requests
# Delete Client Connection Request
Source: https://docs.diga.io/api-reference/workflows--client-connections/delete-client-connection-request
/api-reference/openapi.json delete /v1/workflow/client-connection-requests/{request_id}
# Get Client Connection Request
Source: https://docs.diga.io/api-reference/workflows--client-connections/get-client-connection-request
/api-reference/openapi.json get /v1/workflow/client-connection-requests/{request_id}
# List Client Connection Requests
Source: https://docs.diga.io/api-reference/workflows--client-connections/list-client-connection-requests
/api-reference/openapi.json get /v1/workflow/client-connection-requests
# Regenerate Client Connection Link
Source: https://docs.diga.io/api-reference/workflows--client-connections/regenerate-client-connection-link
/api-reference/openapi.json post /v1/workflow/client-connection-requests/{request_id}/regenerate
# Revoke Client Connection Request
Source: https://docs.diga.io/api-reference/workflows--client-connections/revoke-client-connection-request
/api-reference/openapi.json post /v1/workflow/client-connection-requests/{request_id}/revoke
# Get piece details
Source: https://docs.diga.io/api-reference/workflows--pieces/get-piece-details
/api-reference/openapi.json get /v1/workflow/piece/{piece_name}
Get full metadata for a piece including triggers, actions, and their input schemas.
# List available pieces
Source: https://docs.diga.io/api-reference/workflows--pieces/list-available-pieces
/api-reference/openapi.json get /v1/workflow/piece
List available workflows pieces with their triggers and actions.
# Copy Template
Source: https://docs.diga.io/api-reference/workflows--templates/copy-template
/api-reference/openapi.json post /v1/workflow/template/{template_id}/copy
Copy a workflow template to the user's project.
This creates a new flow in the user's project with the template content.
The flow will be created in a disabled state for the user to configure.
# Get Flow Template
Source: https://docs.diga.io/api-reference/workflows--templates/get-flow-template
/api-reference/openapi.json get /v1/workflow/template/{template_id}
Get a single workflow template by ID.
# List Flow Templates
Source: https://docs.diga.io/api-reference/workflows--templates/list-flow-templates
/api-reference/openapi.json get /v1/workflow/template
List available workflow templates.
Templates are pre-configured workflow examples that users can browse
to find starting points for their own workflows. Templates are global
(not per-company).
# Create a flow
Source: https://docs.diga.io/api-reference/workflows/create-a-flow
/api-reference/openapi.json post /v1/workflow/
Create a new empty flow in draft state. Configure it (trigger, actions) and publish before enabling.
# Create Workflow Connection
Source: https://docs.diga.io/api-reference/workflows/create-workflow-connection
/api-reference/openapi.json post /v1/workflow/connections
Create a piece connection in the caller's workflow project.
Thin proxy to the workflow engine's app-connection upsert. The engine's
schema validates the per-type ``value`` shape; a bad piece or value is
surfaced as a 4xx via ``_handle_ap_error``.
For OAuth2 types the caller must already hold an authorization ``code``
(obtained via the panel's browser redirect flow); this endpoint only
forwards the ``value`` it is given.
# Delete a flow
Source: https://docs.diga.io/api-reference/workflows/delete-a-flow
/api-reference/openapi.json delete /v1/workflow/{flow_id}
Permanently deletes a flow. Also removes any Diga webhook registrations and agent version assignments.
# Get Flow By Id
Source: https://docs.diga.io/api-reference/workflows/get-flow-by-id
/api-reference/openapi.json get /v1/workflow/{flow_id}
Get a single flow by ID.
# List All Flows
Source: https://docs.diga.io/api-reference/workflows/list-all-flows
/api-reference/openapi.json get /v1/workflow/
List ALL flows from the user's workflow project.
This endpoint fetches flows directly from the workflow API (not cached) and
supports filtering by status and trigger type.
# List Workflow Connections
Source: https://docs.diga.io/api-reference/workflows/list-workflow-connections
/api-reference/openapi.json get /v1/workflow/connections
List the project's workflow piece connections (credentials).
Lets a caller verify whether a connection exists and its live status
instead of inferring it from a step's `valid` flag.
# Bulk delete calls
Source: https://docs.diga.io/api-reference/calls/bulk-delete-calls
/api-reference/openapi.json post /v1/call/bulk-delete
Delete multiple terminal calls scoped to the requesting company. Messages linked to each deleted call are cascade-deleted; call_log entries survive with call_id set to NULL for audit preservation. Active calls are ignored.
# Bulk download transcripts
Source: https://docs.diga.io/api-reference/calls/bulk-download-transcripts
/api-reference/openapi.json post /v1/call/message/bulk
Download the transcripts of multiple calls as a ZIP file with one `{call_id}.json` per call, each holding the same message list as the call messages endpoint. Calls without messages are skipped.
# Get call by ID
Source: https://docs.diga.io/api-reference/calls/get-call-by-id
/api-reference/openapi.json get /v1/call/{id}
Retrieve detailed information about a specific call including transcription summary, duration, cost, and recording URL if available.
# Get call messages/transcription
Source: https://docs.diga.io/api-reference/calls/get-call-messagestranscription
/api-reference/openapi.json get /v1/call/{id}/message
Retrieve the paginated transcription messages for a specific call, showing the conversation between the agent and the caller.
# List all calls
Source: https://docs.diga.io/api-reference/calls/list-all-calls
/api-reference/openapi.json get /v1/call/
Retrieve a paginated list of calls for the company. Supports filtering by status, date range, and other criteria. Includes recording URLs when available.
# List call ids
Source: https://docs.diga.io/api-reference/calls/list-call-ids
/api-reference/openapi.json get /v1/call/ids
Return the ids of every call matching the same filters as the call list, newest first, capped at 1000. Meant for select-all bulk actions.
# Make outbound call
Source: https://docs.diga.io/api-reference/calls/make-outbound-call
/api-reference/openapi.json post /v1/call/
Initiate an outbound call using the outbound agent associated with the specified phone number. Only Spanish phone numbers are supported.
# Stream the company's live concurrent-call count (SSE)
Source: https://docs.diga.io/api-reference/calls/stream-the-companys-live-concurrent-call-count-sse
/api-reference/openapi.json get /v1/call/concurrency/stream
Server-sent events stream emitting `data: {"active_calls": N}` every few seconds (also acting as a keepalive). The count is the company's current simultaneous calls, read from the slot ledger; pair it with `max_concurrent_calls` from the subscription endpoint.
# Get logs for a call
Source: https://docs.diga.io/api-reference/logs/get-logs-for-a-call
/api-reference/openapi.json get /v1/log/call/{call_id}
Retrieve external logs for a specific call. Returns customer-visible logs only.
# Create Project
Source: https://docs.diga.io/api-reference/projects/create-project
/api-reference/openapi.json post /v1/project/
Create a new project and automatically assign the authenticated user as admin.
# Delete Project
Source: https://docs.diga.io/api-reference/projects/delete-project
/api-reference/openapi.json delete /v1/project/{id}
Permanently delete a project and all associated data.
# Get Project
Source: https://docs.diga.io/api-reference/projects/get-project
/api-reference/openapi.json get /v1/project/{id}
Retrieve detailed information about a specific project by its ID.
# List Projects
Source: https://docs.diga.io/api-reference/projects/list-projects
/api-reference/openapi.json get /v1/project/
Retrieve a paginated list of all projects where the authenticated user is a member.
# Bulk download recordings
Source: https://docs.diga.io/api-reference/recordings/bulk-download-recordings
/api-reference/openapi.json post /v1/recording/bulk
Download multiple call recordings as a ZIP file.
# Get Recording
Source: https://docs.diga.io/api-reference/recordings/get-recording
/api-reference/openapi.json get /v1/recording/{call_id}
Retrieve a call recording by its id.
# Get trace for a call
Source: https://docs.diga.io/api-reference/traces/get-trace-for-a-call
/api-reference/openapi.json get /v1/trace/call/{call_id}
Retrieve the distributed trace data for a specific call from Tempo.
# Add an action to a flow
Source: https://docs.diga.io/api-reference/workflows--actions/add-an-action-to-a-flow
/api-reference/openapi.json post /v1/workflow/{flow_id}/action
Add a new action step to the flow's draft version. Changes don't affect the running flow until published.
# Delete an action
Source: https://docs.diga.io/api-reference/workflows--actions/delete-an-action
/api-reference/openapi.json delete /v1/workflow/{flow_id}/action/{action_name}
Remove an action step from the flow's draft version. Changes don't affect the running flow until published.
# Move an action
Source: https://docs.diga.io/api-reference/workflows--actions/move-an-action
/api-reference/openapi.json post /v1/workflow/{flow_id}/action/move
Move an action step to a different position in the flow's draft version. Changes don't affect the running flow until published.
# Update an action
Source: https://docs.diga.io/api-reference/workflows--actions/update-an-action
/api-reference/openapi.json patch /v1/workflow/{flow_id}/action
Update an existing action step in the flow's draft version. Changes don't affect the running flow until published.
# Add a branch
Source: https://docs.diga.io/api-reference/workflows--branches/add-a-branch
/api-reference/openapi.json post /v1/workflow/{flow_id}/branch
Add a branch to a Router step in the flow's draft version. Changes don't affect the running flow until published.
# Delete a branch
Source: https://docs.diga.io/api-reference/workflows--branches/delete-a-branch
/api-reference/openapi.json delete /v1/workflow/{flow_id}/branch
Delete a branch from a Router step in the flow's draft version. Changes don't affect the running flow until published.
# Duplicate a branch
Source: https://docs.diga.io/api-reference/workflows--branches/duplicate-a-branch
/api-reference/openapi.json post /v1/workflow/{flow_id}/branch/duplicate
Duplicate a branch in a Router step in the flow's draft version. Changes don't affect the running flow until published.
# Move a branch
Source: https://docs.diga.io/api-reference/workflows--branches/move-a-branch
/api-reference/openapi.json post /v1/workflow/{flow_id}/branch/move
Move a branch to a different position in a Router step in the flow's draft version. Changes don't affect the running flow until published.
# Get execution detail
Source: https://docs.diga.io/api-reference/workflows--executions/get-execution-detail
/api-reference/openapi.json get /v1/workflow/executions/{run_id}
Get a single flow run with step-level outputs.
# List flow executions
Source: https://docs.diga.io/api-reference/workflows--executions/list-flow-executions
/api-reference/openapi.json get /v1/workflow/{flow_id}/executions
List flow run executions for a specific flow, with optional filters by status and date range.
# Test full flow
Source: https://docs.diga.io/api-reference/workflows--executions/test-full-flow
/api-reference/openapi.json post /v1/workflow/{flow_id}/test
Execute the entire flow end-to-end using stored sample data. Polls until completion (up to 120 seconds). Returns the full run result with all step outputs.
# Get step sample data
Source: https://docs.diga.io/api-reference/workflows--testing/get-step-sample-data
/api-reference/openapi.json get /v1/workflow/{flow_id}/steps/{step_name}/sample-data
Retrieve stored sample data for a step. Sample data is automatically saved when a step is tested. Use the `type` query parameter to get either INPUT or OUTPUT data.
# Save step sample data
Source: https://docs.diga.io/api-reference/workflows--testing/save-step-sample-data
/api-reference/openapi.json post /v1/workflow/{flow_id}/steps/{step_name}/sample-data
Save custom sample data for a step or trigger. This is useful for triggers that use SIMULATION strategy (like functionCall) where you can't auto-generate test data — instead, provide it manually. The saved data will be used as mock input when testing downstream steps.
# Test an action step
Source: https://docs.diga.io/api-reference/workflows--testing/test-an-action-step
/api-reference/openapi.json post /v1/workflow/{flow_id}/steps/{step_name}/test
Execute a single action step in isolation. Uses stored sample data from prior steps as mock inputs. The response includes the step's input, output, and any console output. This is a synchronous call — the server polls until the step completes (up to 90 seconds).
# Test the trigger
Source: https://docs.diga.io/api-reference/workflows--testing/test-the-trigger
/api-reference/openapi.json post /v1/workflow/{flow_id}/trigger/test
Execute the flow's trigger in test mode to generate sample events. The trigger must be configured (not EMPTY). Returns a list of sample events that the trigger produces.
# Change flow status
Source: https://docs.diga.io/api-reference/workflows/change-flow-status
/api-reference/openapi.json patch /v1/workflow/{flow_id}/status
Enable or disable a flow. **The flow must have a published version** for this to take effect. If the flow has never been published, this returns 200 with the flow unchanged — the status will NOT change. Use `POST .../publish` first.
# Import a flow definition
Source: https://docs.diga.io/api-reference/workflows/import-a-flow-definition
/api-reference/openapi.json post /v1/workflow/{flow_id}/import
Replace the flow's draft content with a complete flow definition. Overwrites the current draft trigger and all actions. Changes don't affect the running flow until published.
# Lock and publish a flow
Source: https://docs.diga.io/api-reference/workflows/lock-and-publish-a-flow
/api-reference/openapi.json post /v1/workflow/{flow_id}/publish
Locks the current draft and creates a published version. After publishing, further edits create a new draft without affecting the published version. A flow must be published before it can be enabled via the status endpoint.
# Rename a flow
Source: https://docs.diga.io/api-reference/workflows/rename-a-flow
/api-reference/openapi.json patch /v1/workflow/{flow_id}/rename
Rename the draft version of a flow. The published version name is not affected until re-published.
# Update flow trigger
Source: https://docs.diga.io/api-reference/workflows/update-flow-trigger
/api-reference/openapi.json patch /v1/workflow/{flow_id}/trigger
Update the trigger configuration of the flow's draft version. Changes don't affect the running flow until published.
# Use flow as draft
Source: https://docs.diga.io/api-reference/workflows/use-flow-as-draft
/api-reference/openapi.json post /v1/workflow/{flow_id}/draft
Copies the published version back to draft for editing. Only works if the flow has been published at least once. The published version continues running while you edit the draft.
# Actualizaciones
Source: https://docs.diga.io/es/changelog
Registro de actualizaciones y mejoras de la plataforma Diga
## Inicia sesión en el servidor MCP de Diga con tu cuenta
* Nueva **Conecta asistentes de IA sin API key**: el servidor MCP de Diga ahora permite iniciar sesión con tu cuenta de Diga. Añade `https://mcp.diga.io/mcp` en Claude, Claude Code, Cursor, Codex o cualquier cliente MCP compatible con OAuth, inicia sesión cuando se abra el navegador y elige el proyecto en el que quieres trabajar. Tu acceso sigue tu rol en ese proyecto y puedes cambiar de proyecto en cualquier momento. Las API keys siguen funcionando para scripts y clientes sin soporte de OAuth. Consulta [Servidor MCP de Diga](/es/mcp/servidor-mcp).
## Privacidad por agente y clientes MCP con verificación en dos pasos
* Nueva **Controla la grabación, la transcripción y la captura de contactos por agente**: una nueva sección de Privacidad en la pestaña Personalizar de cada agente te permite activar o desactivar de forma independiente la grabación de llamadas, la transcripción y la captura de contactos. La página de detalles de la llamada se adapta: los controles de audio solo aparecen cuando la grabación está activa, y los campos de transcripción y contacto reflejan qué capturas están desactivadas.
* Corrección **Los clientes MCP se conectan a cuentas con verificación en dos pasos**: Claude y otros clientes MCP pueden completar ahora el flujo de autorización OAuth en cuentas con la verificación en dos pasos activada. La pantalla de autorización te pide el código de dos pasos si la sesión actual no lo ha verificado todavía.
## Notificaciones en la app, actualización de bases de conocimiento y tutoriales en la barra lateral
* Nueva **Ve tus notificaciones en el panel**: una campana en la cabecera muestra cuántas tienes sin leer y abre un cajón de notificaciones; la página **Notificaciones** te permite filtrarlas y marcarlas como leídas; **Ajustes** te deja elegir qué eventos te llegan por email. Un panel **Novedades** en la barra lateral muestra anuncios del producto — los lanzamientos críticos aparecen como un modal y los importantes como una tarjeta que puedes cerrar en la esquina superior.
* Nueva **Actualiza una fuente web para reindexar su contenido**: la acción **Actualizar** en cualquier fuente de URL vuelve a rastrear la página y actualiza el contenido indexado; al terminar, una fecha de **Última actualización** en la fuente muestra cuándo se reindexó por última vez.
* Corrección **Editar un elemento de la base de conocimiento mantiene el panel de detalle abierto**: guardar un cambio muestra la información actualizada en su lugar en vez de contraerse con un error.
* Nueva **Pasa el cursor por una sección de la barra lateral para ver su tutorial**: una tarjeta con la miniatura del vídeo aparece pasado un momento; al hacer clic, el vídeo se reproduce en un modal sin salir del panel.
* Corrección **Los workflows lanzados automáticamente en un camino pueden usar datos previos a la llamada como parámetros**: un workflow que se ejecuta justo después de un paso de camino puede tomar sus argumentos de variables definidas antes de la llamada, incluido lo que un workflow pre-llamada devolvió al agente. Los registros de llamada también muestran lo que devolvió cada workflow pre-llamada.
* Corrección **Melo lee el código dentro de los pasos Code**: ahora puede ver y trabajar con el contenido completo de los pasos Code al inspeccionar o editar un workflow.
* Corrección **Los consejos de incorporación aparecen solo una vez por cuenta**: al descartarlos quedan marcados como vistos y no vuelven a aparecer al navegar entre proyectos ni al abrir el panel antes de que tu perfil haya terminado de cargarse.
* Corrección **Los números de teléfono se activan con su suscripción al aprobar la verificación**: aprobar la verificación de una empresa activa los números asignados y confirma la suscripción en la misma operación.
## Filtros agrupados, búsqueda en listas y solicitudes de conexión de clientes
### Filtrado y búsqueda
* Mejora **Barra de filtros unificada**: los filtros de todas las listas están ahora agrupados en un único botón Filtros que muestra cuántos hay activos; cada filtro aplicado aparece como una etiqueta que puedes eliminar con un clic.
* Nueva **Búsqueda en todas las listas**: un campo de búsqueda en la barra de filtros filtra las listas de llamadas, agentes, números de teléfono, integraciones, bases de conocimiento y workflows mientras escribes.
* Nueva **Filtrar llamadas por motivo de fin**: el menú de filtros de llamadas incluye ahora una opción de motivo de fin, con los mismos iconos y etiquetas que aparecen en la tabla de llamadas.
* Corrección **Las API keys de un proyecto eliminado dejan de funcionar al instante**: al eliminar un proyecto, su autorización en caché se borra de inmediato.
* Corrección **Los números comprados antes de la verificación se activan correctamente**: los números de teléfono comprados antes de que se apruebe la verificación de empresa se activan al completarse la verificación, aunque la suscripción anterior del proyecto ya no exista en Stripe.
### Conexiones de clientes, facturación y lienzo
* Nueva **Envía a tus clientes un enlace para que configuren sus propias conexiones**: desde **Ajustes › Conexiones**, puedes generar un enlace seguro y compartirlo con un cliente para que complete la conexión por su cuenta. El cliente abre una página dedicada e introduce sus credenciales o pasa por OAuth directamente — ni el acceso al workspace ni las credenciales se comparten con tu agencia. Los enlaces se pueden copiar, regenerar o revocar en cualquier momento, y la página está disponible en inglés y en español.
* Corrección **La pantalla de consentimiento OAuth aparece al conectar una nueva aplicación**: autorizar una aplicación por primera vez muestra ahora la tarjeta de consentimiento para que puedas revisar y aprobar la solicitud antes de ser redirigido.
* Corrección **Las llamadas que superan tus minutos incluidos no se cobran si la facturación por uso está desactivada**: si la facturación por uso está desactivada, las llamadas que superen tus minutos incluidos no generan cargos adicionales.
* Mejora **Elimina un workflow de plantilla sin tener que configurarlo antes**: un workflow de plantilla añadido a un agente que aún requiere configuración muestra ahora un botón Eliminar junto al aviso de configuración, para que puedas quitarlo del agente de inmediato.
* Mejora **Ve todo tu camino conversacional de un vistazo**: el lienzo de caminos ahora permite alejar mucho más la vista, de modo que un flujo grande cabe entero en pantalla. Los controles de alejar, acercar y ajustar a pantalla están disponibles en la barra de herramientas del lienzo.
## Las notificaciones te llegan tal y como las configuraste
* Corrección **Las notificaciones por email y webhook se entregan**: las notificaciones salen a tu dirección de email y a los endpoints de webhook que tengas configurados, exactamente como los configuraste.
## Inicio de sesión en dos pasos y agentes publicados en varios números
* Nueva **Protege tu cuenta con un segundo paso al iniciar sesión**: activa la verificación en dos pasos en **Ajustes › Seguridad**, con una app de autenticación, un código por SMS o ambos. Con ella activada, iniciar sesión te pide un código antes de abrir el panel, y puedes reconfigurar un método, cambiar su número de teléfono o eliminarlo cuando quieras.
* Mejora **Tu idioma viaja con tu cuenta**: el idioma que eliges en **Ajustes** se guarda en tu cuenta y se usa allá donde inicies sesión, en lugar de recordarse solo en el dispositivo donde lo elegiste.
* Corrección **Escribe en cualquier punto de un campo y el resto se queda como estaba**: elegir una variable de zona horaria en el menú de variables la inserta en el cursor y deja el texto de alrededor intacto, y escribir en medio del campo de texto de un paso de flujo mantiene el cursor donde lo pusiste.
* Corrección **Las mejoras de plan y los números de teléfono se cobran como toca**: pasar a un plan de pago superior factura al momento la diferencia del resto del periodo, y un número comprado con un descuento total se configura con su suscripción recurrente.
### Agentes
* Nueva **Publica un agente en varios números, y despublícalo cuando quieras**: el diálogo de publicación admite una lista de números de entrada y de salida en lugar de uno de cada, y te avisa cuando el número que eliges está enrutado a otro agente. Un agente publicado muestra una etiqueta **Publicado** y sus números junto al selector de versión, con **Editar números de teléfono** y **Despublicar** en su menú de acciones.
* Mejora **Una versión nueva llega con su número ya puesto**: al crear una versión, el nombre viene relleno con el número que va a llevar, así ves en qué punto de la secuencia estás justo cuando la nombras.
* Mejora **Abre un flujo desde el agente que lo usa**: la tarjeta de un flujo en la sección **Flujos** de un agente te lleva al editor, con la confirmación de siempre antes de salir. Además, el panel del agente solo se desplaza cuando hay algo que desplazar, la pestaña **Herramientas** tiene su propio título y el nombre de una integración se muestra una sola vez.
* Mejora **Un motivo claro cuando un agente no se puede eliminar**: al eliminar un agente publicado se te pide despublicarlo primero, en un aviso y no en un diálogo.
* Corrección **Las plantillas de agente se muestran en tu idioma**: la galería de plantillas y el detalle de cada una siguen el idioma de tu panel, y cambiar de idioma mientras las miras las recarga.
* Corrección **Cada prueba de agente empieza con el log limpio**: volver a lanzar una prueba borra las entradas de la anterior, así los tiempos son los de la ejecución que estás viendo, y el panel de pruebas ocupa todo el alto.
* Corrección **Trae al frente una etiqueta de condición superpuesta**: seleccionar un paso, su línea o la propia etiqueta la eleva por encima de las de alrededor, así una rama tapada por otra se puede leer y editar.
* Corrección **Un paso añadido desde la barra de herramientas aparece donde estás mirando**: las herramientas y los flujos que añades desde la barra del editor de caminos se colocan en el centro del lienzo visible, hasta donde lo hayas desplazado.
### Flujos
* Corrección **Al publicar, te quedas en la versión que has publicado**: el editor y el desplegable de versiones la muestran al momento, y editar una versión publicada te muestra el borrador que crea — sin salir de la página y volver.
* Corrección **El panel de Melo no te mueve el lienzo**: abrir o ampliar el chat, empezar una conversación nueva o cambiar de proyecto deja el lienzo del flujo exactamente donde estaba, y el panel se cierra a la primera.
* Corrección **Un flujo renombrado conserva su nombre nuevo**: si lo renombras en el editor y vuelves a abrirlo, aparece con el nombre que le diste.
* Corrección **El editor de flujos se lee en tu idioma**: los controles del lienzo, los tooltips, los ajustes de los pasos y los mensajes del editor están traducidos en inglés y en español.
* Corrección **Añadir un flujo funciona en pantallas bajas**: en el diálogo **Añadir flujo**, **Crear desde cero** se queda a la vista mientras las plantillas se desplazan, y la vista previa de una plantilla ya no muestra un aviso de publicación encima.
* Mejora **Limpiar filtros en la lista de flujos**: aparece un botón **Limpiar filtros** junto a los filtros de estado y conexión en cuanto hay uno activo, igual que en las listas de agentes, bases de conocimiento e integraciones.
## Filtros que se quedan donde los dejaste y una vista completa de cada llamada
* Mejora **Tus filtros sobreviven a una recarga**: los filtros, el orden y la página que eliges en **Logs de llamada**, **Números de teléfono**, **Agentes**, **Integraciones** y **Bases de conocimiento** se guardan en la dirección de la página, así que recargar, compartir el enlace o volver desde una llamada te devuelve a la misma vista. Aparece un botón **Limpiar filtros** siempre que hay un filtro activo, y pedirle a Melo que filtre una lista funciona igual.
* Nueva **Todo sobre una llamada en un mismo sitio**: una llamada muestra ahora el agente que la atendió y la versión exacta que estaba publicada, con un enlace directo a esa versión, y un menú de acciones para copiar el ID de la llamada, descargar la grabación o eliminarla.
* Corrección **Copiar una versión a tu borrador se lo lleva todo**: las herramientas de llamada, las integraciones, las bases de conocimiento, las variables dinámicas y los ajustes de buzón de voz y menú telefónico viajan con el prompt y los caminos, y crear una versión nueva deja intactos los flujos del borrador.
* Corrección **El agente retoma al momento cuando la persona le habla encima**: si quien llama vuelve a hablar mientras se prepara una respuesta, el agente la deja a un lado y contesta a lo que se acaba de decir, sin pausa de por medio.
### Caminos conversacionales
* Nueva **Ve por qué una llamada se quedó en un paso o avanzó**: el log de llamada registra cada decisión de rama con el nodo desde el que se tomó, si la llamada se quedó o a qué nodo fue, y el motivo detrás — así ves de un vistazo si fue la redacción de tu condición, una pregunta que el agente todavía no había hecho o una respuesta mal interpretada.
* Nueva **Un error de camino se llama por su nombre**: cuando no se puede tomar una decisión de rama, el log de llamada muestra un error de camino en lugar de una espera normal, así que un paso que no avanzó nunca se confunde con uno que eligió esperar.
* Corrección **En un camino, solo el camino decide qué se ejecuta**: las herramientas e integraciones vinculadas al agente ya no están disponibles desde cualquier nodo — las acciones de una llamada con camino salen de los pasos del propio camino, y esas llamadas arrancan más rápido.
### Primeros pasos
* Nueva **Pídele a Melo que te enseñe el panel**: pídele al copiloto el tour del producto y arranca el recorrido guiado desde donde estés.
* Mejora **Un tour más fluido**: el tour se sitúa justo sobre el elemento que describe, se lee bien en pantallas pequeñas, mantiene su introducción hasta que lo terminas o desactivas los consejos, y mientras avanza te mantiene la atención en el paso en curso. Su redacción, sus botones y el estilo de las tarjetas son más claros en inglés y en español.
* Corrección **El tour se recuerda por cuenta**: si ya has visto los consejos se guarda por separado en cada cuenta con la que inicias sesión.
## Caminos conversacionales más firmes y una forma de buscar entre tus llamadas
* Nueva **Encuentra una llamada por lo que se dijo o por quién llamó**: **Logs de llamada** tiene un buscador de conversaciones y un filtro por el número de teléfono del contacto, así vas directo a la llamada que buscas.
* Corrección **Las instrucciones globales de un camino se quedan donde las pusiste**: el texto que escribes en **Instrucciones globales** se guarda por su cuenta, sobrevive a copiar una versión al borrador y siempre pertenece al camino que estás editando.
* Corrección **Tus cambios se siguen guardando mientras te mueves por el editor**: el editor de agentes se recupera solo cuando dos guardados se solapan, y solo escribe en el borrador, así que cambiar de camino y de versión deja tu trabajo intacto y las versiones publicadas sin tocar.
### Caminos conversacionales
* Corrección **La llamada avanza en cuanto la respuesta de la persona decide una rama**: las condiciones se leen a la luz de lo que el agente ha preguntado de verdad, y quedarse en un paso cuya condición ya se cumple se trata como el error que es.
* Corrección **Las decisiones de rama disponen del tiempo que necesitan**: cada decisión cuenta con más margen y con un segundo intento independiente, así que la conversación sigue avanzando aunque una respuesta tarde en llegar.
* Corrección **El agente dice su línea antes de ejecutar el paso**: en un nodo que habla y después continúa, el agente dice su guion una sola vez y luego se ejecuta la acción.
* Corrección **Una llamada solo se cuelga o se transfiere cuando la persona ha terminado de hablar**: cuando una frase le llega al agente a trozos, colgar o transferir espera a que esté completa.
* Corrección **Los datos se conservan a través de un paso que solo habla**: los valores recogidos antes en un camino siguen disponibles para un paso posterior aunque entre medias haya un paso hablado.
## Una página de Seguridad para tu cuenta y una visión más clara de tu uso
* Nueva **Cómo se está iniciando sesión en tu cuenta**: la nueva página **Seguridad**, en ajustes, muestra tu sesión activa con su dispositivo, ubicación, IP y última actividad, un historial de intentos de inicio de sesión —con éxito y fallidos— y una forma de cerrar todas las demás sesiones de una vez.
* Mejora **Las llamadas simultáneas se miden como tu pico diario medio**: la tarjeta de llamadas simultáneas de **Uso** muestra la media del máximo de llamadas a la vez de cada día, contando solo los días con llamadas de los últimos 30, así la cifra crece hacia el límite de tu plan a medida que lo hace tu carga habitual y te avisa antes de alcanzarlo. Se muestra con un decimal, y el tooltip explica exactamente qué cuenta.
### Caminos conversacionales
* Corrección **Las ramas se deciden con cuidado y la llamada avanza en cuanto se cumplen**: el modelo que evalúa tus condiciones lee las de varios pasos tal como las escribiste —un "si no X" solo se cumple cuando el agente ha pedido X de verdad— y dispone del tiempo que necesita para responder, así que la llamada avanza en el momento en que la persona acepta.
* Corrección **Las condiciones globales se pueden tomar desde cualquier nodo**: una condición que aplica en cualquier punto de un camino está disponible desde los nodos que no tienen ramas propias.
* Corrección **Se respeta tu redacción en los pasos que ejecutan una acción**: cuando el prompt de un nodo le dice al agente que anuncie lo que va a consultar, lo dice y después se ejecuta el paso.
### Facturación y planes
* Mejora **Tu tarjeta por defecto se usa en todas partes**: el método de pago que marcas por defecto se aplica a todas las suscripciones que pagas, la primera tarjeta que añades pasa a ser la predeterminada por su cuenta, y se elige otra por ti si eliminas la que estaba en uso. El checkout recoge tus datos de facturación y te ofrece las tarjetas que ya tienes guardadas.
* Mejora **Diez flujos en el plan Free**: el plan Free incluye 10 flujos, y la tabla comparativa de planes coincide con los precios publicados en todas sus filas —minutos, precio del minuto extra, llamadas simultáneas, Melo, almacenamiento, flujos, soporte y precio—, en inglés y en español.
* Mejora **Envía tu factura junto con la solicitud de verificación**: la verificación de empresa admite una factura además del documento firmado, así todo lo necesario para la revisión llega en un solo envío.
* Corrección **Los minutos sin usar se acumulan al renovarse tu plan**: el arrastre se toma de tu suscripción cada vez que empieza un periodo nuevo.
* Corrección **Todas las compras de número pasan por verificación**: los números quedan en revisión y se asignan cuando se aprueba tu empresa, también cuando un descuento deja el total del checkout en cero.
* Corrección **Los números de teléfono aparecen con su nombre en tu historial de facturas**: la compra de un número aparece como "Phone number" en inglés y "Número de teléfono" en español.
### Panel y acceso
* Mejora **Melo propone cambios pequeños sin reescribir el prompt entero**: pídele un cambio de redacción en el prompt o el saludo de un agente y Melo propone solo el fragmento que cambia, así la sugerencia llega antes. El diff en línea sigue mostrando el antes y el después completos, y las reescrituras amplias funcionan igual que antes.
* Corrección **La reproducción responde a los controles multimedia de tu sistema**: pausar o reanudar la grabación de una llamada desde fuera del panel se refleja en el reproductor de la página de la llamada.
* Corrección **El proyecto al que te unes o que creas está disponible al momento**: aceptar una invitación o crear un proyecto te da acceso de inmediato.
## Un arranque guiado para las cuentas nuevas y logs de llamada más claros
* Mejora **El estado y el motivo de finalización de un vistazo**: **Logs de llamada** muestra uno de cuatro estados en cada llamada —en cola, marcando, activa y finalizada— y el motivo de finalización aparece cuando la llamada ha terminado, tanto en la lista como en la página de la llamada. Las etiquetas se acortan para caber en la columna, y el texto completo se mantiene en el tooltip.
* Corrección **Los filtros de fecha cubren todas las llamadas**: filtrar **Logs de llamada** por fecha devuelve todas las llamadas creadas en ese rango, se contestaran o no.
### Registro y primeros pasos
* Nueva **Verifica tu email al registrarte**: las cuentas nuevas confirman su dirección con un código de seis dígitos que se envía por email, con opción de reenviarlo y una cuenta atrás hasta que puedes pedir otro. El email de bienvenida llega una vez confirmada tu dirección.
* Nueva **Un arranque guiado para las cuentas nuevas**: después de registrarte, un flujo de dos pasos te pregunta para qué vas a usar Diga y cómo nos conociste, te deja elegir el idioma de la interfaz y si quieres recibir novedades del producto, y luego te acompaña hasta elegir plan.
* Nueva **Consejos que te enseñan el panel**: un tour guiado te muestra qué hace cada parte de la interfaz y resalta el elemento del que te habla a medida que avanzas, con la barra lateral abierta o plegada. Puedes saltártelo, con una confirmación antes, o desactivar los consejos del todo, y cada sección recuerda si ya has visto los suyos.
* Nueva **Las plantillas de agente se abren desde un enlace compartido**: un enlace a una plantilla de agente te lleva directamente a su vista previa si has iniciado sesión. Si todavía no tienes cuenta, pasas por el registro y los primeros pasos y acabas en la plantilla que buscabas.
### Flujos
* Nueva **Crea y lista tus conexiones de piezas desde la API**: nuevos endpoints te permiten crear una conexión de cualquier tipo y listar las que ya tiene tu proyecto, así un flujo construido a través de la API puede apuntar un paso a una conexión sin pasar por una plantilla ni por el constructor. Cada conexión se identifica con un único id, el que usas para referenciarla desde un flujo.
* Nueva **Copia una plantilla sin volver a introducir tus claves**: al copiar una plantilla de flujo, puedes reutilizar una conexión que ya tengas configurada —tu token de Slack, tu clave de Cal.com— en lugar de escribirla otra vez en cada plantilla.
* Corrección **Los flujos posteriores a la llamada se ejecutan cuando cuelga el agente**: los flujos que se disparan al terminar una llamada también se ejecutan en las llamadas que cuelga el propio agente.
### Comportamiento en llamada
* Corrección **El agente espera a la persona, no a la línea**: los sonidos del establecimiento de la llamada ya no se toman por las primeras palabras de quien llama, así que el agente abre la conversación como tú la configuraste.
* Corrección **El resultado de un paso se anuncia una sola vez**: cuando una llamada ejecuta varias herramientas seguidas, el agente le dice el resultado a la persona una sola vez y pasa al siguiente paso.
* Corrección **Los pasos encadenados usan los datos correctos**: un paso que se ejecuta después de otro puede tomar valores de cualquier momento anterior de la llamada, y elige el que pide su descripción en lugar de quedarse solo con lo que produjo el paso anterior.
## Gestión completa de tu suscripción y nueva página de Uso
* Nueva **Tu consumo frente a los límites de tu plan**: la nueva página **Uso**, en ajustes, muestra minutos de llamada, llamadas simultáneas, Melo, flujos y almacenamiento de la base de conocimiento frente a lo que incluye tu plan, con avisos a medida que te acercas a tu límite de minutos y una cuenta atrás hasta que se renuevan. Desde ahí puedes activar la facturación por uso, las mismas cifras aparecen como etiquetas en **Flujos** y en **Logs de llamada**, y Melo reconoce la página y puede llevarte a ella.
### Suscripción y facturación
* Nueva **Gestiona tu suscripción desde ajustes**: la página de suscripción reúne tu plan, el periodo de facturación y la próxima factura, te muestra qué incluirá esa factura y te deja cambiar entre facturación mensual y anual con una confirmación de lo que cambia. La tarjeta del plan enlaza directamente con **Planes**, y si la página no carga puedes reintentarlo ahí mismo.
* Nueva **Gestiona tus métodos de pago**: añade una tarjeta, elige cuál se usa por defecto y elimina las que ya no necesites, todo desde la página de suscripción. Link aparece junto a las tarjetas y puede ser el método por defecto igual que ellas.
* Nueva **Cancela tu suscripción por tu cuenta**: la zona de peligro de la página de suscripción te guía para cancelar tu plan, con un paso de confirmación antes de aplicar nada.
* Corrección **La renovación coincide con lo que programaste**: la fecha de renovación de la tarjeta del plan tiene en cuenta los cambios de plan y de periodo de facturación que ya hayas programado.
### Caminos conversacionales
* Nueva **Los caminos los dirige Diga, no el modelo**: cada decisión de rama de un camino conversacional, y cada herramienta, webhook y paso de flujo que ejecuta, se evalúa y se ejecuta ahora en nuestro lado, así que la llamada sigue el camino que dibujaste. Las acciones se ejecutan en silencio mientras la persona espera, los anuncios se dicen antes del paso que anuncian, y un paso configurado para preguntar primero espera la respuesta antes de ejecutarse.
* Corrección **El agente sigue el nodo al que llega tras una herramienta o un flujo**: cuando termina una herramienta, un webhook o un flujo —incluso si vuelve con un error—, el agente dice lo que le indica ese nodo y continúa por su cuenta, sin esperar a que hables primero.
* Corrección **Cada paso se queda en su sitio**: el agente solo usa las herramientas y pide los datos del paso en el que está, en lugar de adelantarse a recoger las respuestas de un paso posterior, y nunca dice el guion de un paso posterior antes de que se cumpla la condición de esa rama. Las instrucciones internas se quedan dentro y nunca llegan a la persona que llama.
### Números de teléfono
* Nueva **Cuánto tiempo se te reserva un número**: un número pendiente de pago muestra una cuenta atrás en vivo hasta que caduca su reserva, así sabes de cuánto tiempo dispones para terminar la compra. Cada checkout cubre una selección, y **Continuar** solo aparece cuando queda algo por comprar.
* Mejora **Provincia en los números disponibles**: los números que puedes comprar muestran la provincia a la que pertenecen, en línea con las regiones por las que puedes filtrar.
* Mejora **Comprar más números reutiliza tu verificación**: una vez verificada tu empresa, el certificado de titularidad de cada número que se te asigna o que liberas se presenta ante el operador por ti, así que añadir números más adelante no requiere papeleo nuevo.
### Panel
* Mejora **El motivo de finalización de cada llamada, desde la lista**: **Logs de llamada** muestra un motivo de finalización por llamada, con un tooltip que explica qué significa, traducido en inglés y en español. Cuando la tabla se estrecha, las columnas se pliegan en un orden sensato para que la fecha siga visible el mayor tiempo posible, y el menú de opciones tiene sitio para sus etiquetas.
* Corrección **Los ajustes de llamada muestran todos sus campos**: la sección Ajustes de llamada de un agente se expande para que quepa todo, y la detección de buzón de voz y de menú telefónico se oculta en los agentes que usan caminos conversacionales, donde todavía no aplica.
* Mejora **Pequeñas mejoras de interfaz**: las páginas de ajustes mantienen la barra de scroll visible mientras te desplazas, y los errores se muestran como alertas allí donde ocurren.
### Cuenta y acceso
* Corrección **Los cambios de acceso se aplican al momento**: quitar a alguien de un proyecto, cambiar su rol o salir de un proyecto surte efecto inmediatamente.
* Mejora **Servicio más estable bajo carga**: la API y Melo aplican límites de peticiones por cuenta, así que un pico de tráfico de un cliente ya no ralentiza el servicio para los demás.
* Corrección **Tu email se reconoce con cualquier combinación de mayúsculas**: los registros y las invitaciones encuentran tu cuenta aunque la dirección no se escriba tal cual se registró.
## Llamadas salientes que saben manejar buzones de voz y menús telefónicos
* Nueva **Tu agente sabe quién ha descolgado en una llamada saliente**: cuando se contesta la llamada, el agente distingue entre una persona, un buzón de voz, un menú telefónico y una línea no disponible, y actúa en consecuencia en lugar de hablar solo. Se configura por agente en **Personalizar → Ajustes de llamada**: en un buzón de voz, deja el mensaje que tú escribas (con variables dinámicas incluidas) o cuelga; en un menú telefónico, deja que el agente navegue hacia el objetivo que le describas o que marque la secuencia de teclas que le indiques, y que tome la línea al llegar a una persona. Si quien contesta no dice nada, el agente saluda con normalidad.
* Nueva **Webhooks firmados**: cada webhook que envía Diga incluye ahora una cabecera `Diga-Signature` con un timestamp y una firma HMAC, para que tu endpoint pueda verificar que la petición viene de nosotros y rechazar reenvíos. Tu secreto de firma se muestra una sola vez al crear el webhook, y un nuevo endpoint de rotación te genera otro cuando lo necesites.
* Nueva **Las llamadas esperan en cola en lugar de rechazarse**: las llamadas entrantes que superan el límite de llamadas simultáneas de tu plan pasan a una cola de espera con música y se conectan con un agente en cuanto se libera una línea, por orden de llegada. Quien cuelga mientras espera sale de la cola por su cuenta.
### Números de teléfono
* Nueva **Termina una compra de número que dejaste a medias**: un número que sigue en checkout conserva un enlace a su página de pago, así que puedes completar la compra sin empezar de cero.
* Mejora **Estado más claro mientras se aprueba un número**: los números pendientes de verificación se muestran como un estado propio, distinto de los que siguen en checkout, y aparecen como inactivos en la tabla de números hasta que se pueden usar.
* Corrección **Los números liberados dejan de estorbar**: un número que liberas, o uno que pertenece a un proyecto que eliminas, desaparece de tus listas definitivamente, y ese mismo número se puede volver a importar más adelante.
### Comportamiento en llamada
* Corrección **El agente mantiene la conversación después de una herramienta o un paso de flujo**: cuando termina una herramienta, un webhook o un nodo de flujo, el agente continúa y dice el siguiente paso sin esperar a que hables primero.
* Corrección **Los agentes se mantienen en el idioma que configuraste**: el agente habla durante toda la llamada en el idioma con el que lo configuraste, y las instrucciones internas nunca llegan a lo que escucha la persona que llama.
### Panel
* Mejora **Barra lateral rediseñada**: la navegación se reordena y se reagrupa, las tarjetas de cuenta y el modal de plan tienen un aspecto renovado, y el scroll y la animación al plegarla son más suaves.
* Mejora **El nombre de tu plan es el mismo en todas partes**: tu plan aparece con el mismo nombre completo en la barra lateral, en Planes, en ajustes y en todos los diálogos de mejora, bajada y cancelación, en inglés y en español.
* Mejora **Sabes exactamente por qué se puede publicar un flujo o por qué no**: el banner de publicación te dice si el flujo es nuevo, si tiene cambios sin publicar, si no es válido o si has alcanzado el límite de flujos de tu plan, con un enlace para saber más, y el interruptor de activación refleja ese mismo límite.
### Facturación
* Corrección **Importes de las facturas en tu historial**: las facturas anteriores muestran el importe que se te cobró.
* Corrección **Los minutos del plan Free siguen las reglas documentadas**: en el plan Free, cada periodo empieza con los minutos incluidos de ese periodo.
## Aprobaciones para Melo y publicación de flujos más clara
* Corrección **La voz de tu agente durante toda la llamada**: cada turno hablado usa la voz que configuraste para el agente, y los agentes que ejecutan una herramienta o un flujo dentro de un camino conversacional se mantienen en silencio hasta que tienen algo que decirle a la persona que llama.
* Mejora **Números de teléfono comprados mientras se verifica tu empresa**: el primer mes se autoriza al hacer el pedido y se cobra cuando se aprueba la compra. Si se rechaza o la autorización caduca, no se cobra nada y los números se liberan.
* Mejora **Los destinos de los webhooks se validan**: las URLs de webhook se comprueban al crear o actualizar un webhook, de modo que solo se aceptan endpoints externos válidos.
### Copilot IA (Melo)
* Nueva **Aprueba los cambios antes de que Melo los haga**: cuando Melo quiere cambiar algo en tu cuenta, primero te lo pide con una tarjeta en el chat que muestra qué va a hacer y una vista del antes y el después. Apruébalo o recházalo y Melo continúa donde lo dejó. Las tarjetas pendientes siguen ahí después de recargar la página.
* Nueva **Melo puede manejar la página en la que estás**: puede filtrar y ordenar tus listas, cambiar de pestaña y responder preguntas sobre lo que hay en pantalla, así que puedes pedirle "muéstrame los agentes activos" y luego "¿cuáles son esos?" sin salir de la conversación.
* Mejora **Mejores respuestas sobre las conexiones de tus flujos**: Melo ya puede consultar el estado de tus conexiones de piezas, así que cuando un paso de un flujo no es válido puede decirte si falta una conexión o si está en error, en lugar de adivinar.
### Flujos
* Mejora **Sabes exactamente por qué se puede publicar un flujo o por qué no**: el banner de publicación te dice si el flujo es nuevo, si tiene cambios sin publicar o si has alcanzado el límite de flujos de tu plan, con un enlace para saber más. Descartar devuelve el constructor a la versión publicada de forma fiable.
* Corrección **El estado de los flujos siempre está sincronizado**: publicar, activar o desactivar un flujo se refleja en el constructor, en la lista de flujos y en el uso de tu plan, incluso después de salir y volver.
* Corrección **Asigna cualquier flujo a un agente**: el selector de flujos carga toda tu lista, tengas los flujos que tengas.
### Panel
* Mejora **Tu plan y tu uso de un vistazo**: la tarjeta de suscripción en Planes muestra tu plan, los minutos consumidos, el próximo pago y el periodo de facturación en un solo sitio, con barras de uso que cambian de color a medida que te acercas a tu límite.
* Mejora **Detalles de llamada aunque no haya transcripción**: la página de la llamada muestra el agente, el contacto y el motivo de finalización como etiquetas, y un estado vacío claro cuando la llamada no tiene transcripción, logs ni trazas.
* Corrección **Los logs de llamada en tu idioma**: el evento "Llamada desencolada" y su tiempo de espera ahora se muestran traducidos en inglés y en español.
* Corrección **Retoques de interfaz en todo el panel**: las etiquetas de números de teléfono caben dentro de la tarjeta del agente y agrupan el resto en un chip `+N` que lista los números ocultos, la barra lateral de ajustes usa los colores correctos y mantiene los iconos alineados cuando está plegada, y las tarjetas de ejecución de flujo encajan con el resto de la interfaz.
## Flujos pre-llamada en salientes e interpolación de variables más completa
* **Flujos pre-llamada para llamadas salientes**: los flujos pre-llamada ahora se ejecutan antes de marcar el número en las llamadas salientes, de modo que el agente puede preparar el contexto igual que en las llamadas entrantes.
* **Variables dinámicas en los nodos de camino**: las variables dinámicas ahora se interpolan dentro de los prompts de los nodos de los caminos conversacionales y en las condiciones de las ramas, lo que te permite personalizar los prompts y el enrutamiento por llamada.
* **Variables inyectadas en los logs de llamada a función**: las variables inyectadas en una llamada a función durante la llamada ahora se muestran en los logs de llamada a función, lo que facilita depurar qué pasó el agente a cada herramienta.
## Piezas de workflow nuevas y mejoradas
* **Acciones de leads en Odoo CRM**: nuevas acciones para crear y gestionar leads en Odoo CRM directamente desde tus flujos.
* **Helper de fechas en español**: la pieza de helper de fechas ahora admite español para interpretar y formatear fechas.
* **Estilos de formularios**: estilos mejorados para los formularios en el constructor de flujos.
## Conoce a Melo, tu asistente de IA dentro del panel
* **Asistente Copilot IA**: un nuevo asistente de IA dentro del panel (Melo) te ayuda a construir y gestionar tus agentes, responde preguntas y realiza acciones en toda la plataforma.
* **Herramientas basadas en MCP**: Melo funciona con herramientas MCP, por lo que puede actuar sobre tus recursos de Diga, no solo responder preguntas.
* **Uso según el plan**: el uso de Melo está incluido con límites semanales que escalan según tu plan.
## Trazas de llamadas con vista en cascada
* **Trazas distribuidas para cada llamada**: cada llamada ahora genera una traza que desglosa la conversación en spans individuales — turnos de conversación, generación de la IA, síntesis de voz, ejecuciones de herramientas y transiciones de camino.
* **Interfaz en cascada**: visualiza la línea de tiempo completa de la llamada en una vista en cascada para ver exactamente cuánto tardó cada paso y cómo se relacionan entre sí.
* **Diagnostica el rendimiento**: identifica rápidamente los pasos lentos, verifica los flujos conversacionales y revisa las ejecuciones de herramientas con sus argumentos y tiempos.
## Flujos pre-llamada y variables impulsadas por flujos
### Flujos pre-llamada
* **Prepara cada llamada antes de que empiece**: el nuevo trigger **Pre-llamada** ejecuta un flujo en el momento en que empieza una llamada, antes de que el agente salude. El agente espera el resultado y lo usa para personalizar la conversación.
* **Acción Devolver datos de llamada**: envía un texto adicional para el prompt y variables dinámicas de vuelta al agente, para que empiece la llamada conociendo ya el nombre, la cuenta o el contexto del contacto.
* **Controla las llamadas**: opcionalmente aborta una llamada si el flujo falla o agota el tiempo de espera — útil para listas de permitidos, comprobaciones de elegibilidad u horarios de atención. El tiempo de espera es configurable por flujo (hasta 55 segundos).
* **Asígnalos donde quieras**: añade flujos pre-llamada a agentes de prompt único en la sección Flujos, o a caminos conversacionales mediante el nuevo nodo **Flujos pre-llamada** encima del nodo de inicio.
### Variables dinámicas impulsadas por flujos
* **Variables proporcionadas por flujos**: las variables que produce un flujo pre-llamada ahora aparecen en el panel de variables dinámicas del agente como solo lectura, con la etiqueta "Proporcionada por \[flujo]", y en el autocompletado de `{{`.
* **Parámetros dinámicos para flujos durante llamada**: un parámetro de Llamada a función ahora puede tomar su valor de una variable dinámica en lugar de ser extraído por el agente — configura su **Origen del valor** como **Variable dinámica**.
* **Variables en los caminos**: las variables dinámicas ahora se interpolan en los prompts de los nodos de conversación y en las condiciones de las ramas.
### Categorías de flujos
* **Nueva categoría "Lanzador de llamadas"**: los flujos que inician llamadas salientes con la acción Hacer llamada ahora se etiquetan como **Lanzador de llamadas**, distintos de los nuevos flujos **Pre-llamada**.
## Voces de Gemini
Diga pasa a usar **Gemini** como motor de voz en tiempo real. Las voces ya no dependen de ElevenLabs.
### Nuevo catálogo de voces
* **Catálogo curado de Gemini**: 30 voces con muestra de audio y clasificadas por género, disponibles directamente en el selector de voz
* **Voces multilingües**: cualquier voz habla todos los idiomas soportados, así que no hace falta elegir una voz por idioma
* **Favoritos y búsqueda**: marca tus voces favoritas para tenerlas siempre a mano y filtra por nombre o género
### Cambios respecto a las voces anteriores
* **Migración automática**: los agentes que usaban una voz de ElevenLabs pasaron a una voz de Gemini equivalente del mismo género. Revisa la voz de tus agentes y cámbiala si prefieres otra
* **Controles retirados**: desaparecen los ajustes de velocidad y temperatura de la voz y la opción de usar una voz de ElevenLabs por ID. El volumen se mantiene. Para ajustar el ritmo o el tono, indícalo en el prompt o en las instrucciones globales
## Voces mejoradas, sonido en herramientas y pieza de Holded
### Más control sobre las voces
Estas opciones de voz se sustituyeron en la versión v1.1.9 por el catálogo de voces de Gemini. Consulta la entrada del 17 de abril de 2026.
* **Catálogo ampliado de voces**: Busca entre miles de voces disponibles y elige la que mejor encaje según idioma, acento, tono y más
* **Soporte directo de ElevenLabs**: Usa cualquier voz de ElevenLabs introduciendo directamente su ID
* **Nuevos controles de voz**: Ajusta la temperatura y el volumen de la voz, además del control de velocidad ya existente
### Sonido en herramientas y flujos
* **Sonido de fondo durante la ejecución**: Añade sonido a las herramientas o flujos mientras se ejecutan para que las llamadas suenen más naturales
* **Aviso previo a la ejecución**: Fuerza al modelo a que diga algo antes de ejecutar una herramienta, para que siempre avise de lo que va a hacer
### Nueva pieza: Holded
* **Integración con Holded**: Conecta tus agentes con Holded para que hablen directamente con tu ERP — por ejemplo, atender clientes consultando sus facturas en tiempo real
## Modelo de detección de turnos mejorado
* **Mejor detección de turnos**: Modelo mejorado con soporte GPU para una detección más precisa de cuándo el usuario ha terminado de hablar
* **Sonido de fondo en flujos**: Las herramientas y flujos ahora pueden reproducir sonido de fondo mientras se ejecutan
## Correcciones en workflows y sesiones
* **Correcciones en workflows**: Mejoras de estabilidad en el constructor de flujos de trabajo
* **Persistencia de sesiones OAuth**: Corregido un problema donde las sesiones de Google OAuth no se mantenían entre pestañas, incluso con la opción de "Recuérdame" activada
## Descarga masiva de grabaciones y mejoras en RAG
* **Descarga masiva de grabaciones**: Descarga múltiples grabaciones de llamadas de una vez desde el panel de monitoreo
* **Mejoras en RAG**: Correcciones y mejoras en la base de conocimiento para una recuperación de información más fiable
## Correcciones de permisos y navegación
* **Carga de permisos**: Corregido un problema con la carga de permisos al iniciar sesión
* **Visibilidad del sidebar**: Corregida la visibilidad de elementos en el menú lateral según los permisos del usuario
* **Página 404**: Mejorada la página de error para rutas no encontradas
## Logs, RAG y Workflows
### Logs de llamadas
* **Registro detallado de eventos**: Cada llamada genera logs estructurados que cubren todo su ciclo de vida — desde la conexión hasta la finalización
* **10 categorías de eventos**: Ciclo de vida de la llamada, mensajes del usuario, respuestas del agente, herramientas de llamada, integraciones, caminos conversacionales, transferencias y webhooks
* **Logs externos para clientes**: Sistema de logs dual que filtra automáticamente la información técnica interna y expone solo los eventos relevantes para el usuario a través de la API
* **Trazabilidad completa**: Cada evento incluye timestamps, IDs de traza, y datos contextuales para depurar y analizar el comportamiento del agente
### RAG (Retrieval-Augmented Generation)
* **Base de conocimiento para agentes**: Sube documentos y URLs para que tus agentes accedan a información relevante durante las conversaciones
* **Búsqueda semántica**: El sistema indexa y busca automáticamente en tu contenido para dar respuestas precisas y contextuales
* **Múltiples fuentes**: Ingesta archivos, URLs y texto, con descubrimiento automático de páginas desde un dominio
* **Gestión de conocimiento**: Añade, actualiza y elimina elementos de la base de conocimiento de tus agentes
### Workflows
* **Automatización visual**: Crea flujos de trabajo sin código que se ejecutan durante o después de las llamadas
* **Workflows post-llamada**: Automatiza tareas al finalizar una llamada, como actualizar un CRM, enviar emails o registrar datos
* **Workflows durante la llamada**: Permite al agente ejecutar herramientas en tiempo real, como agendar citas o consultar datos
* **Ejecución síncrona y asíncrona**: Elige si el agente espera la respuesta del workflow o continúa la conversación
* **Plantillas predefinidas**: Usa plantillas listas para configurar workflows comunes rápidamente
## Lanzamiento inicial de Diga
### Construcción de agentes
* **Prompts únicos**: Crea agentes conversacionales mediante prompts simples y directos
* **Caminos conversacionales**: Define flujos de conversación complejos con nodos y rutas personalizadas
* Soporte para múltiples tipos de nodos (mensaje, pregunta, decisión, acción)
* Editor visual para diseñar el flujo conversacional
* **Personalización de llamadas**: Configura el comportamiento y características de las llamadas
* Voces personalizables
* Configuración de idioma y tono
* Parámetros de velocidad y volumen
* **Control de versiones**: Gestiona diferentes versiones de tus agentes de forma segura
* Historial completo de cambios
* Rollback a versiones anteriores
* Comparación entre versiones
* **Herramientas de llamada**: Añade capacidades especiales durante las conversaciones
* Transferencia de llamadas
* Envío de mensajes
* Ejecución de acciones personalizadas
### Integraciones
* **Integraciones HTTP**: Conecta tus agentes con APIs externas
* Webhooks entrantes y salientes
* Autenticación flexible (API Key, Bearer Token, OAuth)
* Mapeo de datos personalizado
* **Integraciones MCP**: Soporte para Model Context Protocol
* Integración nativa con herramientas MCP
* Extensibilidad para casos de uso avanzados
* **Añadir integraciones a agentes**: Sistema modular para conectar múltiples integraciones
### Telefonía
* **Compra de números telefónicos**: Adquiere números directamente desde la plataforma
* Disponibilidad en múltiples países
* Búsqueda por código de área
* Activación inmediata
* **SIP Trunks**: Configura y gestiona tus propios trunks SIP
* Llamadas entrantes y salientes
* Configuración de enrutamiento
* Soporte para múltiples proveedores
### Gestión de plataforma
* **Proyectos**: Organiza tus agentes y recursos
* Espacios de trabajo aislados
* **Facturación**: Control detallado de costos
* Planes flexibles
* Monitoreo de consumo en tiempo real
* Reportes de uso
* Límites configurables
### Analíticas y monitoreo
* **Monitoreo**: Visibilidad completa del comportamiento de tus agentes
* Transcripciones completas
### Documentación y herramientas
* **API Reference completa**: Documentación interactiva con OpenAPI
* Ejemplos en múltiples lenguajes (Python, JavaScript, cURL, Go)
* Playground interactivo
* Autenticación y ejemplos de código
* **Documentación en español**: Guías completas y tutoriales
* **Documentación en inglés**: Versión en inglés disponible
# Copy agent template
Source: https://docs.diga.io/api-reference/agent-templates/copy-agent-template
/api-reference/openapi.json post /v1/agent/template/{template_id}/copy
Create a new agent from a template, substituting <> placeholders with provided values.
# Get agent template
Source: https://docs.diga.io/api-reference/agent-templates/get-agent-template
/api-reference/openapi.json get /v1/agent/template/{template_id}
Get an agent template by its ID.
# List agent templates
Source: https://docs.diga.io/api-reference/agent-templates/list-agent-templates
/api-reference/openapi.json get /v1/agent/template
List available agent templates with pagination. Templates are global and visible to all users.
# Create a new agent
Source: https://docs.diga.io/api-reference/agents/create-a-new-agent
/api-reference/openapi.json post /v1/agent/
Create a new agent. By default, creates a new version (v1) and a draft. If is_draft is true, creates only a draft.
# Delete agent
Source: https://docs.diga.io/api-reference/agents/delete-agent
/api-reference/openapi.json delete /v1/agent/{agent_id}
Delete an agent by ID. Cannot delete agents with published versions.
# Delete agent version
Source: https://docs.diga.io/api-reference/agents/delete-agent-version
/api-reference/openapi.json delete /v1/agent/{agent_id}/version/{version_id}
Delete a specific version of an agent. Cannot delete published or draft versions that are currently in use.
# Duplicate agent into another project
Source: https://docs.diga.io/api-reference/agents/duplicate-agent-into-another-project
/api-reference/openapi.json post /v1/agent/{agent_id}/duplicate
Create a new draft agent in a target project by copying operational configuration from an existing agent or version.
# Get agent by ID
Source: https://docs.diga.io/api-reference/agents/get-agent-by-id
/api-reference/openapi.json get /v1/agent/{agent_id}
Retrieve a specific agent by ID. By default, retrieves the draft version. Optionally specify a version_id or is_published to retrieve a specific version.
# Get Agents Versions Dropdown
Source: https://docs.diga.io/api-reference/agents/get-agents-versions-dropdown
/api-reference/openapi.json get /v1/agent/versions-dropdown/dashboard
Retrieve all agents with their versions for dropdowns.
# Launch new agent version
Source: https://docs.diga.io/api-reference/agents/launch-new-agent-version
/api-reference/openapi.json post /v1/agent/{agent_id}/version
Launch a new version of an existing agent based on the current draft. Creates a numbered version (e.g., v2, v3) that can be published.
# List agent versions
Source: https://docs.diga.io/api-reference/agents/list-agent-versions
/api-reference/openapi.json get /v1/agent/{agent_id}/version
Retrieve a paginated list of all versions for a specific agent, including draft and published versions.
# List all agents
Source: https://docs.diga.io/api-reference/agents/list-all-agents
/api-reference/openapi.json get /v1/agent/
Retrieve a paginated list of agents for the company. By default, retrieves only draft versions. Supports cursor-based and page-based pagination.
# Publish agent version
Source: https://docs.diga.io/api-reference/agents/publish-agent-version
/api-reference/openapi.json patch /v1/agent/{agent_id}/published_version
Publish a specific version of an agent and associate it with phone numbers. Phone numbers can be inbound, outbound, or both. If version_id is None, unpublishes the current published version.
# Update agent draft
Source: https://docs.diga.io/api-reference/agents/update-agent-draft
/api-reference/openapi.json patch /v1/agent/{agent_id}
Update the draft version of an existing agent with new configuration, prompts, or settings.
# Create Api Key
Source: https://docs.diga.io/api-reference/api-keys/create-api-key
/api-reference/openapi.json post /v1/api_key/
Create a new
# Delete Api Key
Source: https://docs.diga.io/api-reference/api-keys/delete-api-key
/api-reference/openapi.json delete /v1/api_key/{id}
Delete {id}
# Get Api Key
Source: https://docs.diga.io/api-reference/api-keys/get-api-key
/api-reference/openapi.json get /v1/api_key/{id}
Retrieve information about {id}
# List Api Keys
Source: https://docs.diga.io/api-reference/api-keys/list-api-keys
/api-reference/openapi.json get /v1/api_key/
Retrieve information about
# Update Api Key
Source: https://docs.diga.io/api-reference/api-keys/update-api-key
/api-reference/openapi.json patch /v1/api_key/{id}
Update an existing {id}
# Update Customer
Source: https://docs.diga.io/api-reference/billing--customers/update-customer
/api-reference/openapi.json patch /v1/billing/customer/
Update an existing
# Get Payment Methods
Source: https://docs.diga.io/api-reference/billing--payment-methods/get-payment-methods
/api-reference/openapi.json get /v1/billing/payment_method/
Get all payment methods associated with the company's current Stripe customer.
# Get Subscription
Source: https://docs.diga.io/api-reference/billing--subscriptions/get-subscription
/api-reference/openapi.json get /v1/billing/subscription/
Retrieve information about
# Get Upcoming Invoice
Source: https://docs.diga.io/api-reference/billing--subscriptions/get-upcoming-invoice
/api-reference/openapi.json get /v1/billing/subscription/upcoming-invoice
Preview the next invoice for the current subscription from Stripe: recurring plan cost, metered usage overage, and the authoritative total.
# Create Path
Source: https://docs.diga.io/api-reference/conversational-paths/create-path
/api-reference/openapi.json post /v1/path/
Create a new
# Delete Path
Source: https://docs.diga.io/api-reference/conversational-paths/delete-path
/api-reference/openapi.json delete /v1/path/{id}
Delete {id}
# Get Path
Source: https://docs.diga.io/api-reference/conversational-paths/get-path
/api-reference/openapi.json get /v1/path/{id}
Retrieve information about {id}
# List Paths
Source: https://docs.diga.io/api-reference/conversational-paths/list-paths
/api-reference/openapi.json get /v1/path/
Retrieve information about
# Update Path
Source: https://docs.diga.io/api-reference/conversational-paths/update-path
/api-reference/openapi.json patch /v1/path/{id}
Update an existing {id}
# Copy integration template
Source: https://docs.diga.io/api-reference/integration-templates/copy-integration-template
/api-reference/openapi.json post /v1/integration/template/{template_id}/copy
Create an integration with tools from a template.
# Get integration template
Source: https://docs.diga.io/api-reference/integration-templates/get-integration-template
/api-reference/openapi.json get /v1/integration/template/{template_id}
Get an integration template by its ID.
# List integration templates
Source: https://docs.diga.io/api-reference/integration-templates/list-integration-templates
/api-reference/openapi.json get /v1/integration/template
List available integration templates with pagination.
# Create HTTP tool
Source: https://docs.diga.io/api-reference/integration/create-http-tool
/api-reference/openapi.json post /v1/integration/{integration_id}/tool
Create a new custom HTTP tool for an HTTP integration. Only works with HTTP integrations. MCP tools are synced automatically from the MCP server.
# Create integration
Source: https://docs.diga.io/api-reference/integration/create-integration
/api-reference/openapi.json post /v1/integration
Create a new HTTP or MCP integration. For MCP integrations, tools are automatically synced from the MCP server. Authentication is validated during creation.
# Delete HTTP tool
Source: https://docs.diga.io/api-reference/integration/delete-http-tool
/api-reference/openapi.json delete /v1/integration/{integration_id}/tool/{tool_id}
Delete an HTTP tool from an integration. Only works with HTTP integrations. MCP tools are managed by the MCP server and cannot be deleted.
# Delete integration
Source: https://docs.diga.io/api-reference/integration/delete-integration
/api-reference/openapi.json delete /v1/integration/{integration_id}
Permanently delete an integration and all associated tools. For MCP integrations, clears the tool cache. For HTTP integrations, cascade deletes all HTTP tools.
# Get integration details
Source: https://docs.diga.io/api-reference/integration/get-integration-details
/api-reference/openapi.json get /v1/integration/{integration_id}
Retrieve detailed information about a specific integration by ID, including configuration and type.
# Get integration tool
Source: https://docs.diga.io/api-reference/integration/get-integration-tool
/api-reference/openapi.json get /v1/integration/{integration_id}/tool/{tool_id}
Retrieve details of a specific tool. For HTTP integrations: use tool UUID. For MCP integrations: use tool ID (maps to name internally).
# List integration tools
Source: https://docs.diga.io/api-reference/integration/list-integration-tools
/api-reference/openapi.json get /v1/integration/{integration_id}/tool
List all tools from an integration. For MCP: fetches from MCP server with name-based cursors. For HTTP: returns tools from database with UUID cursors. Automatically syncs MCP tools.
# List integrations
Source: https://docs.diga.io/api-reference/integration/list-integrations
/api-reference/openapi.json get /v1/integration
Retrieve a paginated list of all integrations (HTTP and MCP) configured for the company.
# Update HTTP tool
Source: https://docs.diga.io/api-reference/integration/update-http-tool
/api-reference/openapi.json patch /v1/integration/{integration_id}/tool/{tool_id}
Update an existing HTTP tool's configuration. Only works with HTTP integrations. MCP tools cannot be updated directly.
# Update integration
Source: https://docs.diga.io/api-reference/integration/update-integration
/api-reference/openapi.json patch /v1/integration/{integration_id}
Update integration configuration. For MCP integrations, tools are automatically re-synced if base_url or auth_key changes. Authentication is revalidated.
# Update tool approval settings
Source: https://docs.diga.io/api-reference/integration/update-tool-approval-settings
/api-reference/openapi.json patch /v1/integration/{integration_id}/tool-approval
Batch update approval_required settings for multiple tools. Works with both HTTP and MCP tools. Tools requiring approval need explicit user confirmation before execution.
# Create Knowledge Base
Source: https://docs.diga.io/api-reference/knowledge-bases/create-knowledge-base
/api-reference/openapi.json post /v1/knowledge/base/
Create a new knowledge base from existing knowledge items
# Delete Knowledge Base
Source: https://docs.diga.io/api-reference/knowledge-bases/delete-knowledge-base
/api-reference/openapi.json delete /v1/knowledge/base/{id}
Delete a knowledge base.
If the base contains knowledge items, returns 409 Conflict unless force=true.
When force=true, the base and all its items are deleted.
# Get Knowledge Base
Source: https://docs.diga.io/api-reference/knowledge-bases/get-knowledge-base
/api-reference/openapi.json get /v1/knowledge/base/{id}
Retrieve a specific knowledge base by ID
# List Knowledge Bases
Source: https://docs.diga.io/api-reference/knowledge-bases/list-knowledge-bases
/api-reference/openapi.json get /v1/knowledge/base/
List all knowledge bases for the current company with pagination.
Filters:
- name: case-insensitive partial match
# Update Knowledge Base
Source: https://docs.diga.io/api-reference/knowledge-bases/update-knowledge-base
/api-reference/openapi.json patch /v1/knowledge/base/{id}
Update a knowledge base
# Delete Knowledge Item
Source: https://docs.diga.io/api-reference/knowledge-items/delete-knowledge-item
/api-reference/openapi.json delete /v1/knowledge/item/{id}
Delete a knowledge item
# Get Knowledge Item
Source: https://docs.diga.io/api-reference/knowledge-items/get-knowledge-item
/api-reference/openapi.json get /v1/knowledge/item/{id}
Retrieve a specific knowledge item by ID
# List Knowledge Items
Source: https://docs.diga.io/api-reference/knowledge-items/list-knowledge-items
/api-reference/openapi.json get /v1/knowledge/item/
List all knowledge items for the current company with pagination.
Filters:
- status: filter items by status (indexing, uploaded, error)
- category: filter items by category (file, txt, url)
- name: case-insensitive partial match
# Refresh Knowledge Item
Source: https://docs.diga.io/api-reference/knowledge-items/refresh-knowledge-item
/api-reference/openapi.json post /v1/knowledge/item/{id}/refresh
Re-crawl a URL knowledge item so its indexed content matches the live page.
Returns the item with status `indexing`; poll the item until it is `uploaded`
(or `error`). `updated_date` is set once the refresh succeeds.
# Update Knowledge Base
Source: https://docs.diga.io/api-reference/knowledge-items/update-knowledge-base
/api-reference/openapi.json patch /v1/knowledge/item/{id}
Update a knowledge item
# Upload Knowledge Items
Source: https://docs.diga.io/api-reference/knowledge-items/upload-knowledge-items
/api-reference/openapi.json post /v1/knowledge/item/file
Upload knowledge files to the system.
Send as multipart/form-data with one or more of:
- File upload: name, category, file
# Upload Text Item
Source: https://docs.diga.io/api-reference/knowledge-items/upload-text-item
/api-reference/openapi.json post /v1/knowledge/item/text
Create a knowledge item from raw text content.
The text is stored in the database and indexed asynchronously.
# Upload Url Items
Source: https://docs.diga.io/api-reference/knowledge-items/upload-url-items
/api-reference/openapi.json post /v1/knowledge/item/url
Index web URLs as knowledge items.
Each URL is crawled, parsed, and indexed asynchronously.
# Get Knowledge Usage
Source: https://docs.diga.io/api-reference/knowledge/get-knowledge-usage
/api-reference/openapi.json get /v1/knowledge/usage
Get knowledge storage usage for the current company.
Returns used bytes, limit bytes, and item count.
# Get Notification Preferences
Source: https://docs.diga.io/api-reference/notifications/get-notification-preferences
/api-reference/openapi.json get /v1/notification/preferences
# Get Unread Notification Count
Source: https://docs.diga.io/api-reference/notifications/get-unread-notification-count
/api-reference/openapi.json get /v1/notification/unread-count
# List Notifications
Source: https://docs.diga.io/api-reference/notifications/list-notifications
/api-reference/openapi.json get /v1/notification
# Mark Notifications Read
Source: https://docs.diga.io/api-reference/notifications/mark-notifications-read
/api-reference/openapi.json post /v1/notification/read
# Mark Notifications Unread
Source: https://docs.diga.io/api-reference/notifications/mark-notifications-unread
/api-reference/openapi.json post /v1/notification/unread
# Update Notification Preferences
Source: https://docs.diga.io/api-reference/notifications/update-notification-preferences
/api-reference/openapi.json patch /v1/notification/preferences
# Get Phone
Source: https://docs.diga.io/api-reference/phones/get-phone
/api-reference/openapi.json get /v1/phone/{phone_id}
Retrieve one of your phones by its id
# Import Phone Number
Source: https://docs.diga.io/api-reference/phones/import-phone-number
/api-reference/openapi.json post /v1/phone/import
Import a phone number from an external SIP provider.
This endpoint allows you to use your own phone numbers with custom SIP trunks
# List Phones
Source: https://docs.diga.io/api-reference/phones/list-phones
/api-reference/openapi.json get /v1/phone/
Retrieve a list of phones, optionally filtered by agent ID.
# Release Phone Number
Source: https://docs.diga.io/api-reference/phones/release-phone-number
/api-reference/openapi.json delete /v1/phone/{id}
Release a phone number.
- For Netelip (purchased) numbers: Orders the release of the number which will take effect once the subscription cycle ends
- For custom (imported) numbers: Deletes it automatically
Note: Phones in RESERVED (in checkout) or PENDING_VERIFICATION
(paid, awaiting verification) status cannot be released.
# Update Phone
Source: https://docs.diga.io/api-reference/phones/update-phone
/api-reference/openapi.json patch /v1/phone/{phone_id}
Update a phone's configuration (nickname and/or agent assignments).
Agent assignment behavior:
- Provide `inbound_version_id` to set which agent handles incoming calls
- Provide `outbound_version_id` to set which agent handles outgoing calls
- Assigning a version publishes it; if the agent already has a different
published version in another phone, the request will fail since an agent
can only have one published version at a time.
# Update Sip Config
Source: https://docs.diga.io/api-reference/phones/update-sip-config
/api-reference/openapi.json patch /v1/phone/{phone_id}/sip-config
Update SIP trunk configuration for an imported phone number.
Updates LiveKit trunks first, then persists to database.
Only custom/imported phones can have their SIP config updated.
# Accept invitation and join project
Source: https://docs.diga.io/api-reference/project-invitations/accept-invitation-and-join-project
/api-reference/openapi.json post /v1/project/invitation/{invitation_id}/join
Accept a project invitation and become a member of the project.
# Delete invitation
Source: https://docs.diga.io/api-reference/project-invitations/delete-invitation
/api-reference/openapi.json delete /v1/project/invitation/{invitation_id}
Remove a pending invitation from the project.
# Get invitation details
Source: https://docs.diga.io/api-reference/project-invitations/get-invitation-details
/api-reference/openapi.json get /v1/project/invitation/{invitation_id}
Retrieve detailed information about a specific project invitation.
# Send bulk project invitations
Source: https://docs.diga.io/api-reference/project-invitations/send-bulk-project-invitations
/api-reference/openapi.json post /v1/project/invitation/send/bulk
Send multiple email invitations to users to join your project. Uses batch email sending to avoid rate limits.
# Send project invitation
Source: https://docs.diga.io/api-reference/project-invitations/send-project-invitation
/api-reference/openapi.json post /v1/project/invitation/send
Send an email invitation to a user to join your project.
# Update invitation role
Source: https://docs.diga.io/api-reference/project-invitations/update-invitation-role
/api-reference/openapi.json patch /v1/project/{project_id}/invitation/{invitation_id}/role
Change the role assigned to a pending invitation before it's accepted.
# Get current member
Source: https://docs.diga.io/api-reference/project-members/get-current-member
/api-reference/openapi.json get /v1/project/{project_id}/member/me
Retrieve the current user's membership details, role, and permissions for the project.
# Get project member
Source: https://docs.diga.io/api-reference/project-members/get-project-member
/api-reference/openapi.json get /v1/project/{project_id}/member/{profile_id}
Retrieve details of a specific member in a project, including their assigned role and permissions.
# List project members
Source: https://docs.diga.io/api-reference/project-members/list-project-members
/api-reference/openapi.json get /v1/project/{project_id}/member
Retrieve a paginated list of all members in a project with their assigned roles and permissions.
# Remove project member
Source: https://docs.diga.io/api-reference/project-members/remove-project-member
/api-reference/openapi.json delete /v1/project/{project_id}/member/{profile_id}
Remove a member from the project permanently.
# Update member role
Source: https://docs.diga.io/api-reference/project-members/update-member-role
/api-reference/openapi.json patch /v1/project/{project_id}/member/{profile_id}/role
Change a project member's role (e.g., from member to admin or vice versa).
# Update Project
Source: https://docs.diga.io/api-reference/projects/update-project
/api-reference/openapi.json patch /v1/project/{id}
Update an existing project's information. Only the fields provided will be updated.
# Get role details
Source: https://docs.diga.io/api-reference/roles/get-role-details
/api-reference/openapi.json get /v1/role/{role_id}
Retrieve detailed information about a specific role by its ID.
# List all available roles
Source: https://docs.diga.io/api-reference/roles/list-all-available-roles
/api-reference/openapi.json get /v1/role/
Retrieve a complete list of all roles available in the system with their permissions.
# Last successful login
Source: https://docs.diga.io/api-reference/security/last-successful-login
/api-reference/openapi.json get /v1/profile/security/last-login
# List active sessions
Source: https://docs.diga.io/api-reference/security/list-active-sessions
/api-reference/openapi.json get /v1/profile/security/sessions
# Paginated login history (success + failure)
Source: https://docs.diga.io/api-reference/security/paginated-login-history-success-+-failure
/api-reference/openapi.json get /v1/profile/security/login-history
# Revoke a single session
Source: https://docs.diga.io/api-reference/security/revoke-a-single-session
/api-reference/openapi.json delete /v1/profile/security/sessions/{session_id}
Revoke a single session owned by the caller.
The session's refresh token dies immediately (it can never renew), but its
already-issued access token stays valid until it expires (GoTrue
JWT_EXPIRY, ~1h) — revocation is not instant. PRO-838 tracks per-request
session validation for immediate revocation.
# Sign out all other sessions
Source: https://docs.diga.io/api-reference/security/sign-out-all-other-sessions
/api-reference/openapi.json post /v1/profile/security/sessions/sign-out-others
Revoke every session except the caller's current one.
Deletes the other sessions (cascading to their refresh tokens) so they
cannot renew, but their current access tokens stay valid until they expire
(GoTrue JWT_EXPIRY, ~1h) — the other devices are not kicked instantly.
PRO-838 tracks per-request session validation for immediate revocation.
# Create Verification
Source: https://docs.diga.io/api-reference/verification/create-verification
/api-reference/openapi.json post /v1/verification/
Create a new verification by uploading a signed document and invoice.
Both PDFs are stored and an admin will review the verification.
Once reviewed, the verification status will be updated to VERIFIED or REJECTED.
# List Verifications
Source: https://docs.diga.io/api-reference/verification/list-verifications
/api-reference/openapi.json get /v1/verification/
List all verifications for the authenticated company.
# Add Favourite Voice
Source: https://docs.diga.io/api-reference/voices/add-favourite-voice
/api-reference/openapi.json post /v1/voice/favourite/{voice_id}
Add a voice to the company's favourites
# Get Voice
Source: https://docs.diga.io/api-reference/voices/get-voice
/api-reference/openapi.json get /v1/voice/{voice_id}
Get a voice by its ID
# List Favourite Voices
Source: https://docs.diga.io/api-reference/voices/list-favourite-voices
/api-reference/openapi.json get /v1/voice/favourite
List the company's favourite voices
# List Voices
Source: https://docs.diga.io/api-reference/voices/list-voices
/api-reference/openapi.json get /v1/voice/
List voices available in Diga. Defaults to Gemini and supports filtering by provider, name, and gender.
# Remove Favourite Voice
Source: https://docs.diga.io/api-reference/voices/remove-favourite-voice
/api-reference/openapi.json delete /v1/voice/favourite/{voice_id}
Remove a voice from the company's favourites
# Create Webhook
Source: https://docs.diga.io/api-reference/webhooks/create-webhook
/api-reference/openapi.json post /v1/webhook/
Register a URL to receive event deliveries for the subscribed events. Deliveries are signed with a per-webhook secret (`Diga-Signature` header). The secret is returned only in this response — store it securely.
# Delete Webhook
Source: https://docs.diga.io/api-reference/webhooks/delete-webhook
/api-reference/openapi.json delete /v1/webhook/{id}
Delete a webhook. Event deliveries to its URL stop immediately.
# Get Webhook
Source: https://docs.diga.io/api-reference/webhooks/get-webhook
/api-reference/openapi.json get /v1/webhook/{id}
Retrieve a webhook by its ID. The response never includes the signing secret.
# Get Webhooks
Source: https://docs.diga.io/api-reference/webhooks/get-webhooks
/api-reference/openapi.json get /v1/webhook/
Retrieve a paginated list of your company's webhooks, optionally filtered by subscribed event. Responses never include the signing secret.
# Rotate Webhook Secret
Source: https://docs.diga.io/api-reference/webhooks/rotate-webhook-secret
/api-reference/openapi.json post /v1/webhook/{id}/rotate
Generate a new signing secret for a webhook. The new secret is returned only in this response; the old secret stops signing immediately — there is no grace period.
# Update Webhook
Source: https://docs.diga.io/api-reference/webhooks/update-webhook
/api-reference/openapi.json patch /v1/webhook/{id}
Update a webhook's URL and/or subscribed events. The signing secret cannot be changed here — use the rotate endpoint.
# Get logs for a call
Source: https://docs.diga.io/api-reference/logs/get-logs-for-a-call
/api-reference/openapi.json get /v1/log/call/{call_id}
Retrieve external logs for a specific call. Returns customer-visible logs only.
# Complete Client Connection Oauth
Source: https://docs.diga.io/api-reference/public-client-connections/complete-client-connection-oauth
/api-reference/openapi.json get /v1/public/client-connection-requests/oauth/callback
# Complete Cloud Client Connection Oauth
Source: https://docs.diga.io/api-reference/public-client-connections/complete-cloud-client-connection-oauth
/api-reference/openapi.json post /v1/public/client-connection-requests/{request_id}/oauth/complete
# Exchange Client Connection Token
Source: https://docs.diga.io/api-reference/public-client-connections/exchange-client-connection-token
/api-reference/openapi.json post /v1/public/client-connection-requests/exchange
# Get Current Client Connection Request
Source: https://docs.diga.io/api-reference/public-client-connections/get-current-client-connection-request
/api-reference/openapi.json get /v1/public/client-connection-requests/{request_id}/current
# Start Client Connection Oauth
Source: https://docs.diga.io/api-reference/public-client-connections/start-client-connection-oauth
/api-reference/openapi.json post /v1/public/client-connection-requests/{request_id}/oauth/start
# Submit Client Connection Credentials
Source: https://docs.diga.io/api-reference/public-client-connections/submit-client-connection-credentials
/api-reference/openapi.json post /v1/public/client-connection-requests/{request_id}/credentials
# Get trace for a call
Source: https://docs.diga.io/api-reference/traces/get-trace-for-a-call
/api-reference/openapi.json get /v1/trace/call/{call_id}
Retrieve the distributed trace data for a specific call from Tempo.
# Add an action to a flow
Source: https://docs.diga.io/api-reference/workflows--actions/add-an-action-to-a-flow
/api-reference/openapi.json post /v1/workflow/{flow_id}/action
Add a new action step to the flow's draft version. Changes don't affect the running flow until published.
# Delete an action
Source: https://docs.diga.io/api-reference/workflows--actions/delete-an-action
/api-reference/openapi.json delete /v1/workflow/{flow_id}/action/{action_name}
Remove an action step from the flow's draft version. Changes don't affect the running flow until published.
# Move an action
Source: https://docs.diga.io/api-reference/workflows--actions/move-an-action
/api-reference/openapi.json post /v1/workflow/{flow_id}/action/move
Move an action step to a different position in the flow's draft version. Changes don't affect the running flow until published.
# Update an action
Source: https://docs.diga.io/api-reference/workflows--actions/update-an-action
/api-reference/openapi.json patch /v1/workflow/{flow_id}/action
Update an existing action step in the flow's draft version. Changes don't affect the running flow until published.
# Add a branch
Source: https://docs.diga.io/api-reference/workflows--branches/add-a-branch
/api-reference/openapi.json post /v1/workflow/{flow_id}/branch
Add a branch to a Router step in the flow's draft version. Changes don't affect the running flow until published.
# Delete a branch
Source: https://docs.diga.io/api-reference/workflows--branches/delete-a-branch
/api-reference/openapi.json delete /v1/workflow/{flow_id}/branch
Delete a branch from a Router step in the flow's draft version. Changes don't affect the running flow until published.
# Duplicate a branch
Source: https://docs.diga.io/api-reference/workflows--branches/duplicate-a-branch
/api-reference/openapi.json post /v1/workflow/{flow_id}/branch/duplicate
Duplicate a branch in a Router step in the flow's draft version. Changes don't affect the running flow until published.
# Move a branch
Source: https://docs.diga.io/api-reference/workflows--branches/move-a-branch
/api-reference/openapi.json post /v1/workflow/{flow_id}/branch/move
Move a branch to a different position in a Router step in the flow's draft version. Changes don't affect the running flow until published.
# Copy Client Connection Link
Source: https://docs.diga.io/api-reference/workflows--client-connections/copy-client-connection-link
/api-reference/openapi.json post /v1/workflow/client-connection-requests/{request_id}/link
# Create Client Connection Request
Source: https://docs.diga.io/api-reference/workflows--client-connections/create-client-connection-request
/api-reference/openapi.json post /v1/workflow/client-connection-requests
# Delete Client Connection Request
Source: https://docs.diga.io/api-reference/workflows--client-connections/delete-client-connection-request
/api-reference/openapi.json delete /v1/workflow/client-connection-requests/{request_id}
# Get Client Connection Request
Source: https://docs.diga.io/api-reference/workflows--client-connections/get-client-connection-request
/api-reference/openapi.json get /v1/workflow/client-connection-requests/{request_id}
# List Client Connection Requests
Source: https://docs.diga.io/api-reference/workflows--client-connections/list-client-connection-requests
/api-reference/openapi.json get /v1/workflow/client-connection-requests
# Regenerate Client Connection Link
Source: https://docs.diga.io/api-reference/workflows--client-connections/regenerate-client-connection-link
/api-reference/openapi.json post /v1/workflow/client-connection-requests/{request_id}/regenerate
# Revoke Client Connection Request
Source: https://docs.diga.io/api-reference/workflows--client-connections/revoke-client-connection-request
/api-reference/openapi.json post /v1/workflow/client-connection-requests/{request_id}/revoke
# Get execution detail
Source: https://docs.diga.io/api-reference/workflows--executions/get-execution-detail
/api-reference/openapi.json get /v1/workflow/executions/{run_id}
Get a single flow run with step-level outputs.
# List flow executions
Source: https://docs.diga.io/api-reference/workflows--executions/list-flow-executions
/api-reference/openapi.json get /v1/workflow/{flow_id}/executions
List flow run executions for a specific flow, with optional filters by status and date range.
# Test full flow
Source: https://docs.diga.io/api-reference/workflows--executions/test-full-flow
/api-reference/openapi.json post /v1/workflow/{flow_id}/test
Execute the entire flow end-to-end using stored sample data. Polls until completion (up to 120 seconds). Returns the full run result with all step outputs.
# Get piece details
Source: https://docs.diga.io/api-reference/workflows--pieces/get-piece-details
/api-reference/openapi.json get /v1/workflow/piece/{piece_name}
Get full metadata for a piece including triggers, actions, and their input schemas.
# List available pieces
Source: https://docs.diga.io/api-reference/workflows--pieces/list-available-pieces
/api-reference/openapi.json get /v1/workflow/piece
List available workflows pieces with their triggers and actions.
# Copy Template
Source: https://docs.diga.io/api-reference/workflows--templates/copy-template
/api-reference/openapi.json post /v1/workflow/template/{template_id}/copy
Copy a workflow template to the user's project.
This creates a new flow in the user's project with the template content.
The flow will be created in a disabled state for the user to configure.
# Get Flow Template
Source: https://docs.diga.io/api-reference/workflows--templates/get-flow-template
/api-reference/openapi.json get /v1/workflow/template/{template_id}
Get a single workflow template by ID.
# List Flow Templates
Source: https://docs.diga.io/api-reference/workflows--templates/list-flow-templates
/api-reference/openapi.json get /v1/workflow/template
List available workflow templates.
Templates are pre-configured workflow examples that users can browse
to find starting points for their own workflows. Templates are global
(not per-company).
# Get step sample data
Source: https://docs.diga.io/api-reference/workflows--testing/get-step-sample-data
/api-reference/openapi.json get /v1/workflow/{flow_id}/steps/{step_name}/sample-data
Retrieve stored sample data for a step. Sample data is automatically saved when a step is tested. Use the `type` query parameter to get either INPUT or OUTPUT data.
# Save step sample data
Source: https://docs.diga.io/api-reference/workflows--testing/save-step-sample-data
/api-reference/openapi.json post /v1/workflow/{flow_id}/steps/{step_name}/sample-data
Save custom sample data for a step or trigger. This is useful for triggers that use SIMULATION strategy (like functionCall) where you can't auto-generate test data — instead, provide it manually. The saved data will be used as mock input when testing downstream steps.
# Test an action step
Source: https://docs.diga.io/api-reference/workflows--testing/test-an-action-step
/api-reference/openapi.json post /v1/workflow/{flow_id}/steps/{step_name}/test
Execute a single action step in isolation. Uses stored sample data from prior steps as mock inputs. The response includes the step's input, output, and any console output. This is a synchronous call — the server polls until the step completes (up to 90 seconds).
# Test the trigger
Source: https://docs.diga.io/api-reference/workflows--testing/test-the-trigger
/api-reference/openapi.json post /v1/workflow/{flow_id}/trigger/test
Execute the flow's trigger in test mode to generate sample events. The trigger must be configured (not EMPTY). Returns a list of sample events that the trigger produces.
# Change flow status
Source: https://docs.diga.io/api-reference/workflows/change-flow-status
/api-reference/openapi.json patch /v1/workflow/{flow_id}/status
Enable or disable a flow. **The flow must have a published version** for this to take effect. If the flow has never been published, this returns 200 with the flow unchanged — the status will NOT change. Use `POST .../publish` first.
# Create a flow
Source: https://docs.diga.io/api-reference/workflows/create-a-flow
/api-reference/openapi.json post /v1/workflow/
Create a new empty flow in draft state. Configure it (trigger, actions) and publish before enabling.
# Create Workflow Connection
Source: https://docs.diga.io/api-reference/workflows/create-workflow-connection
/api-reference/openapi.json post /v1/workflow/connections
Create a piece connection in the caller's workflow project.
Thin proxy to the workflow engine's app-connection upsert. The engine's
schema validates the per-type ``value`` shape; a bad piece or value is
surfaced as a 4xx via ``_handle_ap_error``.
For OAuth2 types the caller must already hold an authorization ``code``
(obtained via the panel's browser redirect flow); this endpoint only
forwards the ``value`` it is given.
# Delete a flow
Source: https://docs.diga.io/api-reference/workflows/delete-a-flow
/api-reference/openapi.json delete /v1/workflow/{flow_id}
Permanently deletes a flow. Also removes any Diga webhook registrations and agent version assignments.
# Get Flow By Id
Source: https://docs.diga.io/api-reference/workflows/get-flow-by-id
/api-reference/openapi.json get /v1/workflow/{flow_id}
Get a single flow by ID.
# Import a flow definition
Source: https://docs.diga.io/api-reference/workflows/import-a-flow-definition
/api-reference/openapi.json post /v1/workflow/{flow_id}/import
Replace the flow's draft content with a complete flow definition. Overwrites the current draft trigger and all actions. Changes don't affect the running flow until published.
# List All Flows
Source: https://docs.diga.io/api-reference/workflows/list-all-flows
/api-reference/openapi.json get /v1/workflow/
List ALL flows from the user's workflow project.
This endpoint fetches flows directly from the workflow API (not cached) and
supports filtering by status and trigger type.
# List Workflow Connections
Source: https://docs.diga.io/api-reference/workflows/list-workflow-connections
/api-reference/openapi.json get /v1/workflow/connections
List the project's workflow piece connections (credentials).
Lets a caller verify whether a connection exists and its live status
instead of inferring it from a step's `valid` flag.
# Lock and publish a flow
Source: https://docs.diga.io/api-reference/workflows/lock-and-publish-a-flow
/api-reference/openapi.json post /v1/workflow/{flow_id}/publish
Locks the current draft and creates a published version. After publishing, further edits create a new draft without affecting the published version. A flow must be published before it can be enabled via the status endpoint.
# Rename a flow
Source: https://docs.diga.io/api-reference/workflows/rename-a-flow
/api-reference/openapi.json patch /v1/workflow/{flow_id}/rename
Rename the draft version of a flow. The published version name is not affected until re-published.
# Update flow trigger
Source: https://docs.diga.io/api-reference/workflows/update-flow-trigger
/api-reference/openapi.json patch /v1/workflow/{flow_id}/trigger
Update the trigger configuration of the flow's draft version. Changes don't affect the running flow until published.
# Use flow as draft
Source: https://docs.diga.io/api-reference/workflows/use-flow-as-draft
/api-reference/openapi.json post /v1/workflow/{flow_id}/draft
Copies the published version back to draft for editing. Only works if the flow has been published at least once. The published version continues running while you edit the draft.