Oggi vedremo cosa sono e come funzionano le variabili nella costruzione di un dialplan. Una piccola premessa. Una variabile è un contenitore che al suo interno ha un valore. Questo valore può essere solamente uno finché non decidiamo di cambiarlo.
In Asterisk esistono tre tipi di variabili:
Si rappresentano nella seguente forma: ${PIPPO} (carattere dollaro e il nome della variabile tra parentesi graffe. I nomi delle variabili cambiano se sono scritti in minuscolo o maiuscolo, quindi scrivere ${PIPPO} e ${pippo} non è la stessa cosa.
Analizziamole più da vicino.
Le variabili globali si applicano a tutto il dialplan e i contesti contenuti nello stesso. A volte può essere molto utile definire variabili globali per semplificare e rendere più leggibile il dialplan. Supponiamo che nel nostro sip.conf abbiamo definito due interni: 1001 e 1002. Come vedremo al momento della costruzione del dialplan, per chiamare un interno useremo l’applicazione Dial alla quale passeremo alcuni valori fra i quali il numero da chiamare. Nel caso di un interno configurato nel sip.conf dovremo indicare SIP/1001. Possiamo assegnare questo valore a una variabile (per esempio il nome della persona che utilizza quell’interno). Quindi potremo definire una variabile globale nella seguente forma:
LUIGI=SIP/1001
nel dialplan per chiamare luigi non dovremo più scrivere SIP/1001 ma semplicemente ${LUIGI} e potremo usare la stessa variabile nei differenti contesti o estensioni presenti.
Per definire le varabili globali nel dialplan abbiamo a disposizione due opzioni:
Una variabile di canale è valida solo per un particolare canale (chiamata) e sarà disponibile solamente ai partecipanti di quella specifica chiamata. All’interno di Asterisk ci sono un nutrito numero di variabili predefinite che possiamo usare nel nostro dialplan. Nella cartella doc dei sorgenti era presente (dico era perché nella versione 1.6.X non l’ho trovato) un file con tutte le variabili usate da Asterisk. Per una lista completa c’è sempre il sito di voip-info. Chiaramente i nomi di queste variabili non possono essere usati perché riservati ad Asterisk. Un esempio:
quando da un Soft Phone o un telefono IP digitiamo un numero, automaticamente questo numero verrà salvato (registrato) nella variabile ${EXTEN} (una variabile di canale). Se nel dialplan quel numero (una chiamata negli Stati Uniti) è associato a un VoIP provider tipo justvoip nel dialplan troveremo:
exten => _011X.,1,DIal(SIP/justvoip/${EXTEN})
[dei vari caratteri presenti dopo exten =>, chiamati Pattern Matching, abbiamo parlato nel precedente articolo sul dialplan]
Questo ci rende le cose molto semplici perché definendo solamente il prefisso internazionale degli stati uniti (011), con una linea nel nostro dialplan potremo gestire tutte le chiamate dirette a quel paese.
Le variabili di ambiente ci permettono di accedere a variabili del nostro sistema LInux. Una variabile di ambiente usa la seguente sintassi:
${ENV(var)} dove var è la variabile presa da Linux utilizzabile nel dialplan di Asterisk.
Nel prossimo articolo cominceremo a scrivere il nostro dialplan e vedremo un paio di esempi.
Commenti recenti
4 settimane 5 giorni fa
10 settimane 1 giorno fa
14 settimane 21 ore fa
14 settimane 6 giorni fa
15 settimane 4 giorni fa
15 settimane 5 giorni fa
15 settimane 5 giorni fa
15 settimane 6 giorni fa
16 settimane 1 giorno fa
16 settimane 1 giorno fa