UNDER REVISION .. questo documento è molto vecchio. Verrà aggiornato in breve.
In un centralino telefonico di piccole/medie dimensioni, ci si puo’ imbatte nel desiderio di poter centralizzare gli utenti in un unico file. L’autoprovisioning dei telefoni, la rubrica telefonica, i file di asterisk, condividono alcuni dati. Editare a mano ogni singolo file diventa spesso un lavoro ripetitivo.
Nel caso pratico di questo piccola guida, si riporta l’esempio di un server asterisk con utenti sip e telefoni Polycom. Si analizzera’ l’esigenza di poter agire sui seguenti dati di configurazione:
- ext: estensione telefonica.
- person: fullname dell’utente.
- email: email dell’utente necessaria per il voicemail.
- password: asterisk account password.
- group: gruppo asterisk.
- macaddr: mac address del telefono voip associato all’estensione ext
I dati verranno scritti in quattro differenti files di configurazione quali:
- users.conf: file di configurazione degli utenti asterisk.
- 000000000000-directory.xml: rubrica telefonica condivisa compatibile con tutti i telefoni VoIP Polycom SoundPoint e SoundStation.
- XXXXXXXXXXXX.cfg: autoprovisioning file.
- phoneEXT.cfg: file di configurazione del telefono VoIP Polycom SoundPoint e SoundStation.
Per agevolare il processo di configurazione del centralino si addotta come file unico di configurazione un file di testo .csv e si realizzara’ una serie di scripts in python per la generazione dei files di configurazione.
Esempio del file .csv
ext,person,email,password,group,type,macaddr600,Reception,reception@example.com,1234,1,IP650,00112233445566601,Mario Rossi,mrossi@example.com,4567,1,IP650,00112233AABBCC
La prima linea e’ utilizzata dal modulo csv di python per definire i nomi delle variabili che si utilizzeranno negli scripts.
# This script generate users.conf asterisk file
import sys
import csv
from string import Template
# Configuration files
asterisk_users_cfg = open("/etc/asterisk/users.conf", "w")
source = open("/etc/asterisk/users.lst", "r")
# User Template
user = Template('''
[$ext]
fullname = $person
cid_number = $ext
email = $email
secret = $password
host = $host
registersip = yes
callgroup = $group
pickupgroup = $group
hasvoicemail = yes
hasagent = yes
vmsecret = $password
hassip = yes
hasiax = no
hash323 = no
hasmanager = no
callwaiting = yes
context = aedgency-main
''')
print "\nGenerating Asterisk users.conf file ..."
data = csv.DictReader(source)
asterisk_users_cfg.write(general)
for field in data:
asterisk_users_cfg.write(user.substitute(field))print “… done!\n… Run asterisk -rx ‘sip reload’ manually”
Il template “user” racchiude lo schema dell’entrate sip che lo script scrivera’ nel file users.conf.
… continua