Voicemail
Extension voicemail boxes, received messages, playback, transcription and email delivery. Scopes voicemail:read / voicemail:write.
Messages
curl -s "https://centralino.exovoip.it/api/v1/voicemail/boxes/12/messages?folder=INBOX" -H "X-API-Key: $EXOPBX_API_KEY"
curl -s https://centralino.exovoip.it/api/v1/voicemail/boxes/12/messages/INBOX:3/audio -H "X-API-Key: $EXOPBX_API_KEY" -o messaggio.wav
curl -s -X PATCH https://centralino.exovoip.it/api/v1/voicemail/boxes/12/messages/INBOX:3 \
-H "X-API-Key: $EXOPBX_API_KEY" -H "Content-Type: application/json" -d '{"folder":"Old"}'const { items } = await pbx.voicemail.listMessages(12, { folder: 'INBOX' });
for (const msg of items) {
const audio = await pbx.voicemail.messageAudio(12, msg.id);
await pbx.voicemail.updateMessage(12, msg.id, { folder: 'Old' }); // segna come ascoltato
}$items = $pbx->voicemail->listMessages(12, folder: 'INBOX')['items'];
foreach ($items as $msg) {
$audio = $pbx->voicemail->messageAudio(12, $msg['id']);
$pbx->voicemail->updateMessage(12, $msg['id'], ['folder' => 'Old']);
}for msg in pbx.voicemail.list_messages(12, folder="INBOX")["items"]:
audio = pbx.voicemail.message_audio(12, msg["id"])
pbx.voicemail.update_message(12, msg["id"], {"folder": "Old"})- Folders:
INBOX(new),Old(listened),Urgent. Moving a message toOldis the same as marking it as listened. - A message id has the form
<folder>:<number>(e.g.INBOX:3) and changes when the message is moved: after a move, reload the list. GET .../messages/:messageId/audioreturns the audio (WAV or MP3),.../transcriptthe transcript,.../metathe full data.POST .../messages/:messageId/emailsends the message by email again.
The "user" role can access only its own mailbox.
Mailboxes and settings
GET /v1/voicemail/boxes: all mailboxes with the number of new and old messages.PUT /v1/voicemail/boxes/:extensionId: email, audio attachment, transcription, greeting, PIN.PUT /v1/voicemail/settings: tenant defaults (email sender, maximum duration, language).
Endpoints
| Request | Scope | SDK method |
|---|---|---|
GET /v1/voicemail/settings | voicemail:read | voicemail.getSettings() · py: voicemail.get_settings() |
PUT /v1/voicemail/settings | voicemail:write | voicemail.setSettings() · py: voicemail.set_settings() |
GET /v1/voicemail/boxes | voicemail:read | voicemail.listBoxes() · py: voicemail.list_boxes() |
GET /v1/voicemail/boxes/:extensionId | voicemail:read | voicemail.getBox() · py: voicemail.get_box() |
PUT /v1/voicemail/boxes/:extensionId | voicemail:write | voicemail.updateBox() · py: voicemail.update_box() |
GET /v1/voicemail/boxes/:extensionId/messages | voicemail:read | voicemail.listMessages() · py: voicemail.list_messages() |
GET /v1/voicemail/boxes/:extensionId/messages/:messageId/audio | voicemail:read | voicemail.messageAudio() · py: voicemail.message_audio() |
PATCH /v1/voicemail/boxes/:extensionId/messages/:messageId | voicemail:write | voicemail.updateMessage() · py: voicemail.update_message() |
DELETE /v1/voicemail/boxes/:extensionId/messages/:messageId | voicemail:write | voicemail.deleteMessage() · py: voicemail.delete_message() |
GET /v1/voicemail/boxes/:extensionId/messages/:messageId/meta | voicemail:read | voicemail.messageMeta() · py: voicemail.message_meta() |
GET /v1/voicemail/boxes/:extensionId/messages/:messageId/transcript | voicemail:read | voicemail.messageTranscript() · py: voicemail.message_transcript() |
POST /v1/voicemail/boxes/:extensionId/messages/:messageId/transcribe | voicemail:write | voicemail.transcribeMessage() · py: voicemail.transcribe_message() |
POST /v1/voicemail/boxes/:extensionId/messages/:messageId/email | voicemail:write | voicemail.resendEmail() · py: voicemail.resend_email() |
