Integraciones de audio
Una integracion de audio conecta una plataforma donde se generan o guardan tus llamadas con AuditorIA, para que los audios entren sin subirlos a mano. Cada integracion es un punto de entrada: deja el audio dentro de AuditorIA y, a partir de ahi, la app lo procesa con su flujo normal (transcripcion, analisis y auditoria).
Los origenes de audio se eligen en cada campana, desde la pestana Origenes de Audio. Esta pagina explica como conectar cada origen externo. Para el mapa general de la campana, ver Configuracion de campanas.
Ninguna integración audita sola. Solo hace que el audio entre a AuditorIA. Una vez dentro, el caso sigue el mismo recorrido que cualquier otro: aparece en las tareas, se transcribe y queda listo para auditar.
Las integraciones por webhook (como Anura) envían los datos por internet a la dirección pública de tu propia AuditorIA. El endpoint que cargás en Anura es https://<tu-dominio-de-auditoria>/webhook/anura/, donde el dominio es el de tu instalación. No tenés que adivinarlo: AuditorIA te muestra el endpoint exacto en la pantalla de Anura (paso 1), listo para copiar. Una instalación en localhost no puede recibir estos webhooks: la plataforma externa necesita una dirección accesible desde internet.
Anura
Conecta tu PBX en la nube Anura para que cada llamada finalizada con grabacion entre automaticamente a AuditorIA y quede lista para auditar.
Como funciona
Cuando una llamada termina en Anura, Anura envia un aviso (webhook) a AuditorIA con los datos de la llamada y el enlace a la grabacion. AuditorIA valida la clave de acceso, identifica al operador, descarga la grabacion, crea la tarea y la procesa. No tenes que subir nada a mano.
Antes de empezar
- Una campana de llamadas creada en AuditorIA. Vas a necesitar su identificador (
campaign_id). Ver Configuracion de campanas. - Una planilla de calidad asociada a esa campana, para poder auditar despues. Ver Planillas de calidad.
- Una API Key de AuditorIA (la clave que autentica el aviso de Anura).
- Acceso a la configuracion de Eventos / Webhooks en tu cuenta de Anura.
- La URL publica de tu AuditorIA (ver el aviso sobre la direccion del webhook).
Paso 1 - En AuditorIA: marcar Anura como origen
- En el menu lateral, abri Campanas > Configuracion de campanas > Llamadas. Vas a ver la lista de campanas: elegi la que queres integrar con Anura.

- Abri la campana (si es nueva, guardala primero: el origen se configura sobre una campana ya guardada) y entra a la pestana Origenes de Audio.

- Elegi Anura y guarda.

Al elegir Anura, AuditorIA muestra una guia con el endpoint, los encabezados y las reglas. Usala como referencia mientras configuras el evento en Anura.

Paso 2 - En AuditorIA: crear la API Key
- Abri Configuracion > API Keys (
/dashboard/settings/api-keys). - Genera una API Key y copiala. La vas a usar como header
X-API-Keyal configurar Anura.
Guarda la API Key en un lugar seguro al crearla. Es la credencial que autentica los avisos de Anura contra tu AuditorIA.
Paso 3 - En Anura: crear el evento
En tu cuenta de Anura, crea un evento que avise a AuditorIA cuando termina la llamada.
- Entra al panel de Anura.

- Abri Configuracion > Eventos.

- Usa Agregar para crear un evento nuevo.

El evento tiene tres pestanas: Peticion, Encabezados y Cuerpo. Completa las tres.
Peticion
Define a donde y como se envia el aviso.
| Campo | Valor |
|---|---|
| Protocolo | HTTPS |
| Host | el dominio publico de tu AuditorIA |
| Puerto | 443 |
| Ruta | /webhook/anura/ |
| Metodo | POST |
| Tipo de contenido | application/json |
| Autorizacion | Sin autorizacion (la clave va en Encabezados) |

El host es el dominio publico de tu instalacion de AuditorIA. No lo adivines: en la pantalla de Origenes de Audio > Anura (paso 1) figura el endpoint exacto, listo para copiar. Una instalacion en localhost no funciona, porque Anura necesita alcanzarla desde internet.
Encabezados
Agrega, como pares Key / Valor, los encabezados del aviso:
X-API-Key: la API Key que creaste en el paso 2.Content-Type:application/json.

Cuerpo
El Cuerpo es el JSON que Anura va a enviar en cada llamada. Se arma asi:
- las claves son los campos que AuditorIA necesita;
- los valores son las variables de Anura
{{ ... }}, que Anura reemplaza por los datos reales al enviar; campaign_idno es una variable: es el numero de tu campana en AuditorIA. Lo ves en el encabezado de la campana como ID de campana #N, y va sin comillas.
No incluyas los campos automaticos: cdrid lo genera AuditorIA si no viene, y hooktrigger toma END por defecto (ademas tu evento ya dispara solo en END).
Pega este JSON en el Cuerpo y reemplaza <ID_DE_TU_CAMPANA> por el numero de tu campana:
{
"dialtime": "{{ dialtime }}",
"direction": "{{ direction }}",
"calling": "{{ calling }}",
"called": "{{ called }}",
"status": "{{ status }}",
"duration": "{{ duration }}",
"billseconds": "{{ billseconds }}",
"wasrecorded": "{{ wasrecorded }}",
"audio_file_mp3": "{{ audio_file_mp3 }}",
"accountname": "{{ accountname }}",
"accountextension": "{{ accountextension }}",
"queueagentname": "{{ queueagentname }}",
"answerterminal": "{{ answerterminal }}",
"campaign_id": <ID_DE_TU_CAMPANA>
}

Que significa cada campo:
| Campo | Para que sirve |
|---|---|
dialtime | Fecha y hora de la llamada. |
direction | Entrante (inbound) o saliente (outbound). |
calling / called | Numeros origen y destino. |
status | Estado final de la llamada. |
duration | Duracion en segundos. |
billseconds | Segundos facturados. |
wasrecorded | Debe ser true. |
audio_file_mp3 | URL publica y accesible de la grabacion. |
accountname | Nombre de la cuenta/agente. En llamadas salientes AuditorIA lo usa como operador. |
accountextension | Extension de la cuenta. |
queueagentname / answerterminal | Nombre del agente en llamadas entrantes. AuditorIA lo usa como operador. |
campaign_id | Numero de la campana en AuditorIA (no es una variable). |
AuditorIA identifica al operador por su nombre: en llamadas salientes usa accountname; en entrantes usa queueagentname (o answerterminal). Por eso conviene incluir los tres. Tiene que ser el nombre del agente, no una extension. Confirma en Anura el nombre exacto de cada variable.
Si falta alguno de los campos de la tabla, Anura igual envia el aviso, pero AuditorIA lo rechaza.
Anura tambien ofrece muchas otras variables (por ejemplo callingname, calledname, datos de cola o accounttags). Podes sumarlas al Cuerpo si las queres para tus propios registros, pero son opcionales: hoy AuditorIA no las usa, asi que para que la llamada se procese alcanza con los campos de la tabla.
Las variables {{ ... }} que ves en el JSON las ofrece Anura. AuditorIA las lista en la guia de Origenes de Audio > Anura, en dos columnas: a la izquierda el campo (la clave del JSON) y a la derecha la variable (el valor). No es una pestana ni un formulario aparte: es una referencia de que variables existen, para que las uses dentro del Cuerpo. Por ejemplo, accountname -> {{ accountname }} significa que en el Cuerpo va "accountname": "{{ accountname }}".


Solo se procesan eventos END con grabacion. Si wasrecorded no es true o audio_file_mp3 no es accesible, no se crea ninguna tarea.
Guarda el evento. No hay pasos adicionales: desde la proxima llamada finalizada con grabacion, Anura avisa a AuditorIA y la llamada entra sola al flujo. Anura no tiene boton de prueba, asi que para confirmar genera una llamada real (corta, con grabacion) y revisa que aparezca en las tareas de la campana.
Que pasa despues
Cuando todo esta configurado, cada llamada finalizada con grabacion:
- Llega a AuditorIA, que valida la API Key.
- Identifica al operador por su nombre. Si ese operador no existe todavia, lo crea.
- Descarga la grabacion y crea la tarea.
- Entra al flujo normal: aparece en Buscar y trabajar con tareas, se transcribe y queda lista para revisar y auditar.
Notas importantes
- Operador por nombre: si el nombre del agente en Anura no coincide con un operador existente, AuditorIA crea uno nuevo. Para evitar operadores duplicados, usa los mismos nombres que ya tenes cargados. Ver Gestionar operadores locales.
- Campana correcta: si
campaign_idno coincide con una campana real, la llamada puede no asociarse a la campana esperada. - Solo END con grabacion: los demas eventos se reciben pero no generan tareas.
Problemas frecuentes
- No entra ninguna llamada: revisa que el evento sea
END, que la grabacion este activada, queaudio_file_mp3sea accesible y que la URL y los headers esten bien. - El aviso se rechaza (no autorizado): la
X-API-Keyfalta o es incorrecta. - La llamada entra en otra campana o sin el operador correcto: revisa
campaign_idy el nombre del agente.
Otros origenes
La guia detallada de los demas origenes esta en preparacion. Mientras tanto, podes seleccionarlos en la pestana Origenes de Audio de la campana:
- Interno: audios subidos a mano o por la API interna. Ver Subir audio.
- Net2Phone: sincronizacion de grabaciones por webhook.
- Servidor SFTP: sincronizacion desde un servidor remoto.
- API Externa: integracion generica con terceros mediante la API de AuditorIA.
- Neotel: ingesta nativa (SQL Server + FTP).