Registrazioni
Registrazioni delle chiamate con ascolto, download, trascrizione e riassunto. Scope recordings:read (elenco, ascolto, trascrizioni) e recordings:write (impostazioni, regole, eliminazione, registro ascolti).
Elenco, ascolto e trascrizione
curl -s "https://centralino.exovoip.it/api/v1/recordings?from=2026-11-01&direction=inbound&limit=50" -H "X-API-Key: $EXOPBX_API_KEY"
curl -s "https://centralino.exovoip.it/api/v1/recordings/77/audio?download=true" -H "X-API-Key: $EXOPBX_API_KEY" -o chiamata.wav
curl -s https://centralino.exovoip.it/api/v1/recordings/77/transcript -H "X-API-Key: $EXOPBX_API_KEY"import { writeFile } from 'node:fs/promises';
const { items } = await pbx.recordings.list({
from: '2026-11-01',
direction: 'inbound',
limit: 50,
});
const audio = await pbx.recordings.audio(77, { download: true });
await writeFile('chiamata.wav', Buffer.from(audio));
const transcript = await pbx.recordings.transcript(77);$items = $pbx->recordings->list(from: '2026-11-01', direction: 'inbound', limit: 50)['items'];
file_put_contents('chiamata.wav', $pbx->recordings->audio(77, download: true));
$transcript = $pbx->recordings->transcript(77);items = pbx.recordings.list(from_="2026-11-01", direction="inbound", limit=50)["items"]
with open("chiamata.wav", "wb") as fh:
fh.write(pbx.recordings.audio(77, download=True))
transcript = pbx.recordings.transcript(77)- Filtri:
from,to,direction,extensionId,queueId,number,q(testo nelle trascrizioni),hasTranscript. GET /v1/recordings/:id/audio: ascolto (download=trueper scaricare il file;channel=left|rightper un solo lato delle registrazioni stereo). Ogni ascolto e download viene annotato nel registro ascolti (GET /v1/recordings/access-log).POST /v1/recordings/:id/transcribeePOST /v1/recordings/:id/summarizeavviano trascrizione e riassunto in background (stato conGET /v1/jobs/:id).
Chi può ascoltare dipende dalle impostazioni dell'azienda (supervisorsCanListen, supervisorsCanDownload, usersCanListenOwn).
Cosa registrare
Le regole si impostano per livello (azienda, numero, coda, interno): il livello più specifico prevale, mode: "inherit" eredita dal livello superiore.
# Registra sempre le chiamate in entrata della coda 5
curl -s -X PUT https://centralino.exovoip.it/api/v1/recordings/policies/queue/5 \
-H "X-API-Key: $EXOPBX_API_KEY" -H "Content-Type: application/json" \
-d '{"mode":"always","inbound":true,"outbound":false,"announceEnabled":true}'await pbx.recordings.upsertPolicy('queue', 5, {
mode: 'always',
inbound: true,
outbound: false,
announceEnabled: true,
});
const effective = await pbx.recordings.effectivePolicy({ queueId: 5 });$pbx->recordings->upsertPolicy('queue', 5, ['mode' => 'always', 'inbound' => true, 'outbound' => false, 'announceEnabled' => true]);pbx.recordings.upsert_policy("queue", 5, {"mode": "always", "inbound": True, "outbound": False, "announceEnabled": True})targetId è l'id del numero, della coda o dell'interno (0 per il livello azienda). GET /v1/recordings/policies/effective mostra la regola effettiva per una combinazione di numero, coda e interno.
Le impostazioni generali (PUT /v1/recordings/settings) comprendono conservazione in giorni, formato, quota di spazio e permessi di ascolto.
Endpoint
| Descrizione | Richiesta | Scope | Metodo SDK |
|---|---|---|---|
| Registrazioni (filtri e ricerca nelle trascrizioni) | GET /v1/recordings | recordings:read | recordings.list() |
| Conservazione, formato e permessi di ascolto | GET /v1/recordings/settings | recordings:read | recordings.getSettings() · py: recordings.get_settings() |
| Modifica impostazioni registrazioni | PUT /v1/recordings/settings | recordings:write | recordings.setSettings() · py: recordings.set_settings() |
| Regole di registrazione per livello | GET /v1/recordings/policies | recordings:read | recordings.listPolicies() · py: recordings.list_policies() |
| Regola effettiva per interno / numero / coda | GET /v1/recordings/policies/effective | recordings:read | recordings.effectivePolicy() · py: recordings.effective_policy() |
| Imposta la regola di un livello (targetId 0 = azienda) | PUT /v1/recordings/policies/:scope/:targetId | recordings:write | recordings.upsertPolicy() · py: recordings.upsert_policy() |
| Rimuove la regola (torna a ereditare) | DELETE /v1/recordings/policies/:scope/:targetId | recordings:write | recordings.deletePolicy() · py: recordings.delete_policy() |
| Registro ascolti, download e cancellazioni | GET /v1/recordings/access-log | recordings:write | recordings.accessLog() · py: recordings.access_log() |
| Dettaglio registrazione | GET /v1/recordings/:id | recordings:read | recordings.get() |
| Elimina registrazione (audit) | DELETE /v1/recordings/:id | recordings:write | recordings.delete() |
| Ascolto / download (registrato nel registro ascolti) | GET /v1/recordings/:id/audio | recordings:read | recordings.audio() |
| Trascrizione e riassunto | GET /v1/recordings/:id/transcript | recordings:read | recordings.transcript() |
| Richiede la trascrizione | POST /v1/recordings/:id/transcribe | recordings:write | recordings.transcribe() |
| Richiede il riassunto | POST /v1/recordings/:id/summarize | recordings:write | recordings.summarize() |
