La segreteria telefonica con Asterisk - Voicemail.conf

Versione adatta alla stampaSend to friendPDF version

Oggi vedremo come configurare al meglio la segreteria telefonica implementata da Asterisk. Il file di configurazione si chiama voicemail.conf e lo troviamo sempre nella cartella /etc/asterisk del nostro server Linux. I parametri che verranno indicati in questo articolo sono quelli disponibili nella versione 1.6.0.9 di Asterisk. Per una versione diversa alcuni possono cambiare anche se la “sostanza” rimane sempre la stessa.

Asterisk permette di gestire con lo stesso file di configurazione la segreteria telefonica di più compagnie/imprese. Vedremo più avanti cosa significa.

Iniziamo a dare un’occhiata al file di configurazione:

nano /etc/asterisk/voicemail.conf

[general] ; indica l’inizio della parte generale
format=wav49|gsm|wav ; qui indichiamo il formato del file audio usato per registrare il messaggio vocale
serveremail=segreteria@miodominio.org ; se decidiamo di inviare un messaggio di posta elettronica di notifica con questo parametro indichiamo il mittente del messaggio
attach=yes ; allegato al messaggio di posta elettronica troveremo il file audio
maxmsg=100 ; numero massimo di messaggi presenti in archivio per ogni singolo interno
maxsecs=180 ; durata massima di un messaggio (3 minuti)
minsecs=3 ; numero minimo di secondi per considerare il messaggio vocale lasciato come un vero messaggio.
maxgreet=60 ; abbiamo la possibilità di registrare un messaggio di benvenuto per la nostra segreteria telefonica personale. Questo parametro indica la durata massima di questo messaggio (60 secondi)
skipms=3000 ; mentre ascoltiamo un messaggio vocale abbiamo la possibilità di scorrerlo in avanti, indietro, fermarlo o metterlo in pausa. Questo parametro indica quanti millisecondi dovrà avanzare o tornare indietro il messaggio se premiamo un tasto ben determinato (che configureremo più avanti).
maxsilence=10 ; se asterisk riconosce 10 secondi di silenzio durante la registrazione del messaggio, lo considererà terminato.
silencethreshold=128 ; questo parametro indica cosa verrà considerato silenzio. Più basso è questo numero più asterisk sarà sensibile al rumore di fondo.
maxlogins=3 ; numero massimo di tentativi permessi per accedere alla propria segreteria telefonica.
moveheard=yes ; una volta ascoltati i messaggi verranno automaticamente spostati nella cartella OLD (vecchi)
userscontext=default ; contesto predefinito per la segreteria telefonica (vedremo più avanti cosa significa)

;externnotify=/usr/bin/myapp ; possiamo abbinare un’applicazione esterna ogni volta che viene lasciato un messaggio vocale (per esempio uno script)
;externpass=/usr/bin/myapp ; possiamo configurare un’applicazione che venga eseguita ogni volta che un interno cambia la password della sua casella vocale
;externpassnotify=/usr/bin/myapp ; se abbiamo configurato externpass e vogliamo aggiornare la password anche in questo file (voicemail.conf), dovremo configurare un’applicazione che faccia questo lavoro.
directoryintro=dir-intro ; se non conosciamo il numero dell’interno di una determinata persona possiamo ricorrere all’applicazione directory che ci permette di cercare un utente registrato in asterisk inserendo le prime tre lettere del cognome. Questo parametro indica il file audio di introduzione all’applicazione directory
charset=ISO-8859-1 ; questo parametro indica il formato internazionale che verrà usato al momento di inviare un messaggio di posta elettronica per avvisarci dell’arrivo di un nuovo messaggio nella nostra segreteria telefonica

pbxskip=yes ; Nell’oggetto del messaggio di posta elettronica verrà sempre indicato [PBX] all’inizio. Se settiamo questo parametro a yes toglieremo questa parte dall’oggetto del messaggio
fromstring=Segreteria Telefonica ; questo parametro ci permette configurare il nome del mittente del messaggio di posta elettronica (l’indirizzo l'abbiamo già indicato in servermail)
usedirectory=yes ; i messaggi vocali li possiamo rispedire a un altro interno o lasciare direttamente un messaggio a un determinato interno. Se vogliamo fare una ricerca nell’elenco degli utenti che hanno una casella vocale, lo possiamo fare settando questo parametro a yes
;odbcstorage=asterisk ; di questo parametro e il successivo parleremo in un successivo articolo. Per ora lasciamoli commentati
;odbctable=voicemessages
;
; Change the from, body and/or subject, variables:
;     VM_NAME, VM_DUR, VM_MSGNUM, VM_MAILBOX, VM_CALLERID, VM_CIDNUM,
;     VM_CIDNAME, VM_DATE
;
; Note: The emailbody config row can only be up to 512 characters due to a
;       limitation in the Asterisk configuration subsystem.
;emailsubject=[PBX]: New message ${VM_MSGNUM} in mailbox ${VM_MAILBOX}
; The following definition is very close to the default, but the default shows
; just the CIDNAME, if it is not null, otherwise just the CIDNUM, or "an unknown
; caller", if they are both null.
;emailbody=Dear ${VM_NAME}:\n\n\tjust wanted to let you know you were just left a ${VM_DUR} long message (number ${VM_MSGNUM}$
;

;Tutto il blocco presente qui sopra ci permette di personalizzare il testo del messaggio di posta elettronica che invieremo all’utente che ha appena ricevuto

;un nuovo messaggio vocale. Nella prima parte vengono indicate le variabili che possiamo utilizzare, nella seconda il testo vero e proprio che inizia con “Dear”

; È possibile inviare un messaggio anche a un Pager. Le tre linee che seguono ci permettono di configurare, mittente, oggetto e testo del messaggio
; che verrà inviato
;pagerfromstring=The Asterisk PBX
;pagersubject=New VM
;pagerbody=New ${VM_DUR} long msg in box ${VM_MAILBOX}\nfrom ${VM_CALLERID}, on ${VM_DATE}
emaildateformat=%A, %B %d, %Y at %r ; con questa linea configuriamo la data e l’ora del messaggio di posta elettronica. Per il significato di ogni singola variabile possiamo consultare il manuale di strftime con il comando: man strftime
; Formato 24 ore

;emaildateformat=%A, %d %B %Y at %H:%M:%S
;
; Il programma predefinito per inviare i messaggi di posta elettronica è SendMail. Se vogliamo usarne uno diverso dobbiamo configurare in modo appropriato
; la linea che segue
;mailcmd=/usr/sbin/sendmail -t
;
; Possiamo decidere di archiviare i messaggi vocali con IMAP. Per fare questo dobbiamo configurare le linee que seguono.
; Per adesso lasciamole come sono (commentate)
;imapgreetings=no

;greetingsfolder=INBOX
;imapparentfolder=INBOX

tz=european; Settiamo come fuso orario predefinito quello europeo 
attach=yes; il messaggio vocale verrà allegato al messaggio di posta elettronica di notifica
attachfmt=wav49; formato audio del messaggio vocale allegato 
saycid=yes; Prima del messaggio vocale verrà annunciato il numero di telefono/interno di chi lo ha lasciato 
sayduration=no ; se a yes verrà annunciata la durata del messaggio vocale
saydurationm=2; Questo parametro fissa la durata minima sotto la quale la durata del messaggio vocale non verrà annunciata (2 minuti)
dialout=outgoing_calls ; Contesto, come configurato nel dialplan, per permettere a chi ascolta il messaggio di chiamare il mittente dello stesso (opzione 4 delle opzioni avanzate del menu della segreteria telefonica)
sendvoicemail=yes ;Se a yes permette a chi sta dentro il menu della segreteria telefonica di inviare un messaggio vocale ad un altro interno (opzione 5 delle opzioni avanzate del menu della segreteria telefonica
searchcontexts=yes; Per cercare un interno all’interno dello stesso contesto in cui è configurato l’utente che sta utilizzando il menu della segreteria telefonica
callback=internal ; se definito ci permette di richiamare l’interno/numero che ci ha lasciato il messaggio vocale usando il contesto qui definito

exitcontext=fromvm; contesto a cui andare nel dialplan nel caso l’utente prema * o 0 mentre si trova nel menu della segreteria telefonica
review=yes; se settato a yes permette a chi sta lasciando il messaggio di riascoltarlo prima di inviarlo definitivamente
operator=yes; permette a chi sta lasciando un messaggio di premere il tasto 0 per comunicare con un operatore (centralinista?)
envelope=no; se a yes prima di riprodurre il messaggio si ascolteranno alcuni dati riguardanti lo stesso
delete=yes; se a yes il messaggio vocale notificato via posta elettronica verrà cancellato dal server asterisk

; volgain=0.0 ; attraverso questo parametro possiamo migliorare il volume dell’audio. Funziona solamente se sox è installato sul server linux 
nextaftercmd=yes; Prosegue automaticamente con il messaggio successivo una volta che abbiamo premuto 7 (per cancellare il messaggio corrente) o 9 (per salvarlo)
forcename=yes; obbliga un nuovo utente che usa per la prima volta la sua segreteria telefonica a registrare il suo nome. Asterisk considera nuovo utente un interno il cui numero è uguale alla password per accedere alla propria segreteria telefonica

; forcegreetings=no; Simile a forcename. Obbliga un nuovo utente a registrare il proprio messaggio di benvenuto
; hidefromdir=yes ; Nasconte una casella vocale dall’elenco di quelle disponibili.
; tempgreetwarn=yes; Ricorda all’utente que il messaggio temporaneo di benvenuto è settato
; vm-password=custom_sound ; se non vogliamo usare i messaggi vocali preregistrati, in questa linea e le seguenti li possiamo personalizzare
; vm-newpassword=custom_sound
; vm-passchanged=custom_sound

; vm-reenterpassword=custom_sound
; vm-mismatch=custom_sound

; listen-control-forward-key=#  ; Con questo parametro possiamo definire il tasto per andare avanti durante l’ascolto di un messaggio vocale
; listen-control-reverse-key=*  ; Tasto per andare indietro
; listen-control-pause-key=0    ; Tasto per mettere in pausa il messaggio vocale 
; listen-control-restart-key=2  ; Tqasto per farlo ripartire dall’inizio 
; listen-control-stop-key=13456789      ; Tasto per fermare il messaggio (non può essere scelto tra quelli presenti nelle linee precedenti

; backupdeleted=100 ;  numero massimo di messaggi permessi nella cartella “deleted” (cancellati)

[zonemessages] ; qui configuriamo i diversi fusi orari che poi possiamo configurare per ogni singolo utente.
eastern=America/New_York|'vm-received' Q 'digits/at' IMp
central=America/Chicago|'vm-received' Q 'digits/at' IMp
central24=America/Chicago|'vm-received' q 'digits/at' H N 'hours'
military=Zulu|'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p'
european=Europe/Copenhagen|'vm-received' a d b 'digits/at' HM

[default] ; contesto di default della segreteria telefonica. Compaiono alcuni esempi di come configurare la casella vocale dei diversi interni.

; la sintassi generale è questa:

; numero interno => password casella vocale, nome, email, pager, opzioni varie

;1234 => 4242,Example Mailbox,root@localhost ;
;4200 => 9855,Mark Spencer,markster@linux-support.net,mypager@digium.com,attach=no|serveremail=myaddy@digium.com|tz=central|m$
;4300 => 3456,Ben Rigas,ben@american-computer.net
;4310 => -5432,Sales,sales@marko.net
;4069 => 6522,Matt Brooks,matt@marko.net,,|tz=central|attach=yes|saycid=yes|dialout=fromvm|callback=fromvm|review=yes|operato$
;4073 => 1099,Bianca Paige,bianca@biancapaige.com,,delete=1
;4110 => 3443,Rob Flynn,rflynn@blueridge.net
;4235 => 1234,Jim Holmes,jim@astricon.ips,,Tz=european

[impresaA] ; possiamo configurare un altro contesto al quale avranno accesso solo gli utenti dell’impresaA
;directoryintro=dir-company2 ; possiamo personalizzare il messaggio del servizio di elenco telefonico
;1234 => 5678,Company2 User,root@localhost ; proseguiamo con la configurazione delle diverse caselle di posta vocale

[impresaB] ; un altro contesto per un’altra impresa e le varie configurazioni 
;111 => 7383,Pete,pete@acme-widgets.com,,tz=central
;112 => 6262,Nancy,nancy@acme-widgets.com

-----------------------------------------------------------------------------------------------------------------

Como si capisce dall’analisi del file di configurazione, Asterisk permette di offrire servizi di segreteria telefonica anche a diverse imprese contemporaneamente, cioè possiamo decidere di usare lo stesso server per gestire le chiamate di più di una impresa. Chiaramente, per evitare problemi di qualsiasi genere dovremo definire i contesti nel dialplan in modo che gli utenti di un’impresa abbiano accesso a determinati servizi e quelli di un’altra a altri e nello stesso tempo creare gruppi chiusi di utenti per ogni singola impresa.

Terminata la configurazione del voicemail.conf passiamo alla configurazione del dialplan:

nano /etc/asterisk/extensions.conf

nel contesto locale que abbiamo visto in questo articolo inseriamo le seguenti linee:

exten => 97,1,Answer(); Si apre il canale (risponde alla chiamata)
exten => 97,n,VoiceMailMain(${CALLERID(num)}@default); Manda la chiamata alla casella vocale dell’interno che sta chiamando nel contesto default 
exten => 97,n,Hangup(); Termina la chiamata

Chiamando il numero 97 dal nostro softphone o telefono IP entreremo nella nostra casella vocale della segreteria telefonica (con relativo menu)

Un altra forma di configurare la segreteria telefonica è:

exten => 2000,n,Dial(SIP/2000,30); Chiamiamo l’interno 2000 per la durata di 30 secondi
exten => 2000,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail); A seconda se la linea è occupata o nessuno risponde il dialplan continuerà rispettivamente alla linea con l’etichetta (busy) o la linea con l’etichetta (unavail).
exten => 2000,n(unavail),Voicemail(2000@default,u); Si attiverà la segreteria telefonica annunciando che l’interno chiamato non è disponibile e dandoci la possibilità di lasciare un messaggio (contesto default del file voicemail.conf)
exten => 2000,n,Hangup(); La chiamata verrà terminata
exten => 2000,n(busy),VoiceMail(2000@default,b); Si attiverà la segreteria telefonica annunciando che l’interno chiamato è occupato e dandoci la possibilità di lasciare un messaggio (contesto default del file voicemail.conf)
exten => 2000,n,Hangup(); La chiamata verrá terminata

Per entrare al menu della segreteria telefonica e lasciare direttamente un messaggio per un altro intetno possiamo usare queste linee:

exten => 98,1,Answer() ; Si apre il canalre
exten => 98,n,Voicemail ; si entra nel menu generale della segreteria telefonica
exten => 98,n,Hangup ; si termina la chiamata

Salviamo il file e entriamo nella console di asterisk:

asterisk –rvvvvvvvvvvvvvvvvvvvvvv

e ricarichiamo le configurazioni del dialplan e della voicemail

CLI> dialplan reload

CLI> voicemail reload

A questo punto possiamo fare le nostre prove per vedere se tutto funziona a dovere.

Essendo molti i parametri da configurare nel voicemail.conf, se avete dubbi non dovete fare altro che lasciare un messaggio

Commenti

Risponditore automatico/Segreteria

Salve,

io avrei un quesito da porLe, in ufficio ho un centralino digitale/analogico su ISDN, collegato tramite patton ad un centralino asterisk (freePBX 2.2.1). Quindi chiamando un determinato interno la chiamata esce dal centralino e passa al VOIP...

Adesso, che siamo in ferie, ho colleagot un memobox  all'interno 300, e ho deviato tutte le chiamate di ingresso a questo interno... in modo tale ke, mi risponde un messaggio dove si comunica che si riaprirà al 24 agosto...

Vorrei, sapere cm poter avviare un risponditore automatico con Asterisk per le chiusure estive, e anche per gli orari... ad esempio, dalle 18.00 in poi, mi parta diretamente il risponditore cn gli orari...ecc.ecc.

Spero di essere riuscito a spiegarmi...

Grazie e a presto.

 

Re: Risponditore automatico

I passi da seguire sono due:

- modificare il dialplan
- registrare un annuncio da usare nel caso qualcuno chiami durante l'orario di chiusura o le ferie estive.

Per tutte le chiamate in entrata l'applicazione da usare è:

gotoiftime

Le lascio un esempio:

[from-pstn] ; contesto dove arrivano le chiamate in entrata
exten => s,1,Answer
exten => s,n,GotoIfTime(08:00-18:00,mon-sat,*,jan-jul&sep-dec?aperto:chiuso)
exten => s,n(chiuso),Playback(siamochiusi.waw)
exten => s,n,Hangup
exten => s,n(aperto), Dial(SIP/1000)
exten => s,n,Hangup

La parte che interessa è la linea dove appare gotoiftime. Ho definito che l'orario di apertura dell'ufficio è dalle 08:00 alle 18:00, dal lunedì al sabato, tutti i giorni del mese, da gennaio a luglio e da settembre a dicembre (agosto chiuso per ferie). Ho indicato due etichette aperto e chiuso. Se la chiamata rientra nelle condizioni definite passerá alla linea con l'etichetta aperto e verrá chiamato l'interno 1000 (o qualsiasi cosa vogliate); se invece la chiamata arriva durante l'orario di chiusura o la pausa estiva continuerà con la linea definita dall'etichetta chiuso che envierá al chiamante un audio (siamochiusi.wav) dove si annuncerá che l'ufficio è chiuso.

Possiamo definire piú di una linea e in questo modo configurare anche le festivitá (da riconfigurare ogni anno)

Non uso FreePBX pero credo sia possibile configurare questa applicazione attraverso l'interfaccia grafica.

Per maggiori info può visitare questa pagina (in inlgese):

http://www.voip-info.org/wiki/view/Asterisk+cmd+GotoIfTime

Saluti

Time Conditions in FrePBX

Così si chiama il menu sulla destra per settare attraverso l'interfaccia grafica il tipo di configurazione che stava cercando.

Feedback gradito.

Saluti

Condividi contenuti