Messaggi dell'assistente
I messaggi raccolti dalla risposta automatica (destinazione auto_answer): il centralino chiede a chi chiama il motivo della chiamata, registra la risposta e ne ricava trascrizione e riassunto, poi avvisa gli interni indicati in notifyExtensionIds. Scope recordings:read (elenco, ascolto, trascrizione) e recordings:write (eliminazione).
Richiede il plugin Assistente AI (ai): senza il plugin tutti gli endpoint di questa pagina rispondono 403 PLUGIN_REQUIRED. Il plugin Registrazioni non serve: le registrazioni delle chiamate restano nella sezione Registrazioni.
Elenco, ascolto e trascrizione
curl -s "https://centralino.exovoip.it/api/v1/assistant/messages?from=2026-11-01&limit=50" -H "X-API-Key: $EXOPBX_API_KEY"
curl -s https://centralino.exovoip.it/api/v1/assistant/messages/91/transcript -H "X-API-Key: $EXOPBX_API_KEY"
curl -s "https://centralino.exovoip.it/api/v1/assistant/messages/91/audio?download=1" -H "X-API-Key: $EXOPBX_API_KEY" -o messaggio.wav
curl -s -X DELETE https://centralino.exovoip.it/api/v1/assistant/messages/91 -H "X-API-Key: $EXOPBX_API_KEY"import { writeFile } from 'node:fs/promises';
const { items } = await pbx.assistant.listMessages({ from: '2026-11-01', limit: 50 });
for (const msg of items) {
const { transcript } = await pbx.assistant.messageTranscript(msg.id);
console.log(msg.caller, transcript.summary ?? transcript.text);
const audio = await pbx.assistant.messageAudio(msg.id, { download: true });
await writeFile(`messaggio-${msg.id}.wav`, Buffer.from(audio));
}
await pbx.assistant.deleteMessage(91);$items = $pbx->assistant->listMessages(from: '2026-11-01', limit: 50)['items'];
$transcript = $pbx->assistant->messageTranscript(91);
file_put_contents('messaggio.wav', $pbx->assistant->messageAudio(91, download: true));
$pbx->assistant->deleteMessage(91);items = pbx.assistant.list_messages(from_="2026-11-01", limit=50)["items"]
transcript = pbx.assistant.message_transcript(91)
with open("messaggio.wav", "wb") as fh:
fh.write(pbx.assistant.message_audio(91, download=True))
pbx.assistant.delete_message(91)GET /v1/assistant/messagesaccetta gli stessi filtri e restituisce lo stesso formato diGET /v1/recordings(paginazione concursor), limitato ai messaggi conkind: "auto_answer". Il camposummarycontiene già il riassunto del messaggio.GET /v1/assistant/messages/:id/audio: ascolto con supportoRange;download=1per scaricare il file.GET /v1/assistant/messages/:id/transcript: testo completo, segmenti e riassunto.DELETE /v1/assistant/messages/:id: elimina il messaggio (reasonfacoltativo, annotato nel registro attività).
Chi può ascoltare e leggere i messaggi segue le stesse impostazioni delle registrazioni (supervisorsCanListen, supervisorsCanDownload, usersCanListenOwn); ascolti, download ed eliminazioni sono annotati nel registro ascolti.
Messaggi e registrazioni
Ogni registrazione ha il campo kind:
kind | Contenuto |
|---|---|
call | Chiamata registrata |
auto_answer | Messaggio lasciato alla risposta automatica |
Con il plugin Registrazioni, GET /v1/recordings restituisce entrambi i tipi: il filtro kind=call o kind=auto_answer li separa.
Endpoint
| Descrizione | Richiesta | Scope | Metodo SDK |
|---|---|---|---|
| Messaggi raccolti dalla risposta automatica | GET /v1/assistant/messages | recordings:read | assistant.listMessages() · py: assistant.list_messages() |
| Dettaglio messaggio dell’assistente | GET /v1/assistant/messages/:id | recordings:read | assistant.getMessage() · py: assistant.get_message() |
| Elimina messaggio dell’assistente | DELETE /v1/assistant/messages/:id | recordings:write | assistant.deleteMessage() · py: assistant.delete_message() |
| Ascolto / download del messaggio | GET /v1/assistant/messages/:id/audio | recordings:read | assistant.messageAudio() · py: assistant.message_audio() |
| Trascrizione e riassunto del messaggio | GET /v1/assistant/messages/:id/transcript | recordings:read | assistant.messageTranscript() · py: assistant.message_transcript() |
