Visualizzazione post con etichetta Asterisk. Mostra tutti i post
Visualizzazione post con etichetta Asterisk. Mostra tutti i post

mercoledì, luglio 23, 2008

Traduzione dei file audio in Asterisk

I file audio originali di Asterisk si trovano in "/var/lib/asterisk/sounds" ("/usr/share/asterisk/sounds" in debian).
Per prima cosa dovremo procurarci una copia dei file audio tradotti in italiano; questo potrà essere fatto qui.
Ora bisognerà creare la seguente struttura di directory:

  • /var/lib/asterisk/sounds/it
  • /var/lib/asterisk/sounds/dictate/it
  • /var/lib/asterisk/sounds/digits/it
  • /var/lib/asterisk/sounds/letters/it
  • /var/lib/asterisk/sounds/phonetic/it

nelle quali si andranno a posizionare i file audio scompattati dal pacchetto scaricato.
Le voci inglesi potranno essere lasciate comunque; se una voce non viene trovata nella directory "it", questa verrà cercata nella directory radice dove sono appunto presenti le voci di default in inglese.
Per settare la lingua italiana, si potrà usare language=it nella sezione [General] dei vari file di configurazione (sip.conf).
N.B.: In extension.conf non è contemplato l' uso di language=it.

domenica, marzo 02, 2008

FreePBX

FreePBX è un software libero che fornisce un sistema di interfacce web-based per la gestione di Asterisk. Per l' installazione occorre disporre di un sistema LAMPA ( Linux+Apache+MySQL+PHP+Asterisk ) naturalmente; se non si dispone già di questo requisito, su Ubuntu si può procedere con il seguente comando:

apt-get install php5 php5-cli php5-mysql mysql-server php-pear php-db openssh-server curl sox apache2 subversion build-essential libncurses5-dev libssl-dev linux-headers-`uname -r` libmysqlclient15-dev

Se non ancora presente nel sistema, si passerà all' installazione di Asterisk.
Prima di passare all' installazione di FreePBX, creiamo un nuovo gruppo ed un nuovo utente e sistemiamo i permessi e facciamo ripartire apache2:

addgroup asterisk
useradd -g asterisk -c "Asterisk PBX" -d /var/lib/asterisk asterisk
mkdir /var/run/asterisk
chown -R asterisk /var/lib/php5
nano +101 /etc/apache2/apache2.conf (cambiare user e group con "asterisk")
nano +12 /etc/apache2/sites-enabled/000-default (cambiare AllowOverride None con AllowOverride All

/etc/init.d/apache2 restart

Facciamo partire mysql che ci servirà per creare i database che FreePBX utilizza per la gestione delle configurazioni e del CDR.

/etc/init.d/mysql start

Spostiamoci in /usr/src e scarichiamo i sorgenti di FreePBX che possiamo scegliere di scaricare direttamente dal subversion o dal sito in formato tar.gz:

svn co https://svn.sourceforge.net/svnroot/amportal/freepbx/branches/2.4 freepbx-2.4

Finito il download creeremo i database e successivamente da console mysql l' utente per l' accesso alle tabelle:

mysqladmin create asterisk
mysqladmin create asteriskcdrdb
mysql asterisk <> -password="
")
mysql> GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';
mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';
mysql> flush privileges;
mysql> quit


E' necessario fornire una password di root per mysql:

mysqladmin -u root password 's33kret'


Se tutto è andato bene, possiamo finalmente far partire lo script php per l' installazione di FreePBX; se la versione di php è la 5 bisogna ricordarsi di abilitare l' estenzione relativa a mysql in /etc/php5/cli/php.ini:

./install_amp

La procedura di installazione richiede di inserire dei path, proponendone alcuni di default che nella maggior parte dei casi vanno bene. E' consigliabile cambiare /var/www/html con /var/www e quindi anche /var/www/html/panel con /var/www/panel e alla richiesta dell' inserimento dell' IP del server, quando viene proposto [XX.XX.XX.XX], inserire il valore corretto.
Se qualcosa va storto, per poter riavviare lo script d' installazione, bisogna cancellare il file /etc/amportal.conf
A questo punto possiamo far partile ampportal:

amportal start &

e testare il funzionamento collegandoci con un browser all' indirizzo:

http://ip_web_server_sistema_LAMPA_FreePBX/admin


e dovremmo vedere una cosa del genere:

sabato, marzo 01, 2008

Compilare Asterisk su Ubuntu

Compilare Asterisk su una distribuzione Ubuntu è molto semplice.
Per prima cosa bisogna procurarsi (se non sono presenti) l' utility make, il gcc e g++, i sorgenti e gli headers del kernel, e la libncurses. Utilizzando apt-get:

apt-get install make
apt-get install gcc
apt-get install g++
apt-get install bison
apt-get install linux-sources-2.6.18
apt-get install linux-headers-2.6.18-5-686
apt-get install libncurses5-dev

Fatto questo pensiamo ai sorgenti di asterisk, delle libpri e dei driver zaptel (libpri e zaptel verranno approfondite in un altro articolo), spostiamoci nella directory /usr/src, creiamo la directory asterisk e scarichiamo i sorgenti:

cd /usr/src/
mkdir asterisk/
cd asterisk/
wget http://downloads.digium.com/pub/asterisk/releases/asterisk-1.4.18.tar.gz
tar -xvf asterisk-1.4.18.tar.gz
wget http://downloads.digium.com/pub/libpri/libpri-1.4.3.tar.gz
tar -xvf libpri-1.4.3.tar.gz
wget http://downloads.digium.com/pub/zaptel/zaptel-1.4.9.tar.gz
tar -xvf zaptel-1.4.9.tar.gz

Fatto ciò, possiamo compilare i sorgenti che abbiamo precedentemente scompattato e quindi:

cd libpri-1.4.3/
make clean
make
make install

cd zaptel-1.4.9/
make clean
make
make install
make config

cd asterisk-1.4.18/
make clean
./configure
make install
make samples
make config


reboot

domenica, maggio 27, 2007

Celliax

Celliax è un progetto italiano che fornisce un "channel driver" per gestire un telefono cellulare e le chiamate skype attraverso Asterisk.
Come si vede dall' immagine si può chiamare con un cellulare un secondo cellulare collegato tramite il canale chan_celliax ad un PC sul quale gira asterisk e quindi utilizzare i provider voip per chiamare dal proprio telefonino.
Per provare Celliax, si può scaricare la LiveCD dal sito, mentre attualmente per poter usufluire di questo canale su un installazione asterisk, si può compilare la versione di asterisk scaricabile dall' svn (la versione asterisk compresa sarà la 1.2.18).
In questo articolo si vedrà come inserire il canale celliax su asterisk 1.4.4.
Per prima cosa bisogna scaricare da qui i sorgenti di celliax.
Modifichiamo il file chan_celliax.c seguendo i seguenti accorgimenti:
  • modificare in #undef the CELLIAX_SKYPE e WANT_SKYPE_X11
  • modificare in #define ASTERISK_VERSION_1_4
  • cancellare la linea x11
Assumento di aver già scaricato e scompattatto in precedenza i sorgenti di asterisk-1.4.4, copiamo dalla directory celliax_stuff/Channels i file .c e .h nella directory Channels di asterisk 1.4.4, ed inoltre nel Makefile di questa directory bisogna inserire, appena prima della linea che fa riferimento al chan_alsa, la linea:

$(if $(filter chan_celliax,$(EMBEDDED_MODS)),modules.link,chan_celliax.so): celliax_spandsp.o

A questo punto dalla directory radice di asterisk 1.4.4:

make clean
./config
make menuselect ( assicurarsi nella sezione channels sia spuntato chan_celliax )
make
make install

da /celliax_stuff/newconfigs copiare tutti i file in /etc/asterisk

cp * /etc/asterisk/

Il cellulare andrà collegato al PC tramite il cavo di connessione dati ( ad esempio il cavetto usb ) e di un cavetto autocostruito per collegare microfono ed altoparlante alla scheda audio.

giovedì, dicembre 28, 2006

Callerid in uscita

Per questo post ho fatto riferimento all' articolo in
http://www.kcomputer.it/cms/?q=node/6, un "how-to" che spiega come fare per settare correttamente il Callerid in uscita.
Per prima cosa bisogna andare nel file di configurazione zapata.conf, e settare:

usecallingpres=yes
pridialplan = unknown
prilocaldialplan = national

Poi in extensions.conf, bisogna usare:

exten => _X.,1,SetCallerID( inserire l'msn della linea senza lo zero )

domenica, novembre 19, 2006

Voicemail in email

In questo articolo si vedrà com'è possibile indirizzare i messaggi della propria mail, nel proprio account di posta elettronica, senza ricorrere a sendmail, facendo ricorso ad un MTA (Mail Transfer Agent).
Come MTA in questo articolo useremo ssmtp, ma si può fare con un qualsiasi mta.
Per dire ad asterisk che abbiamo intenzione di voler utilizzare un qualche meccanismo per inviare i messaggi presenti nella voicemail per email, per prima cosa dobbiamo configurare voicemail.conf, nella sezione general, nel seguente modo:

[general]
.
.
.
serveremail=mariorossi@gmail.com ; con questo verrà scritto il campo from della mail
attach=yes ; il contenuto del voicemail viene allegato alla mail
emailsubject=questo è il soggetto della mail
emailbody=questo è il messaggio che verrà inserito nel corpo della mail
mailcmd=/usr/bin/ssmtpcmd -t ; questo comando verrà usato da asterisk per inviare la mail

[mailbox] ; contesto della voicemail al quale siamo interessati
.
.
.
1234 => 1111, mario rossi, mariorossi@gmail.com ; per il significato di questo vedere il post
; sulla configurazione della voicemail

a questo punto riavviamo asterisk e passiamo a creare il nostro script ssmtpcmd che richiamerà l' mta ssmtp. Creiamo lo script ssmtpcmd con dentro scritto:

#!/bin/sh
/usr/sbin/ssmtp $@ -au"mariorossi@gmail.com" -ap"pwdmariorossi" -am"LOGIN"

dopo avere dato i giusti permessi allo script, configuriamo /etc/ssmtp/ssmtp.conf

root=postmaster
mailhub=smtp.gmail.com:587
hostname=mariorossi@asterisk.com
UseSTARTTLS=YES
FromLineOverride=YES

A questo punto dovrebbe essere tutto pronto, il voicemail di 1234 dovrebbe arrivare anche sull' account di posta elettronica di mariorossi, usando gmail in questo caso ( ma si può fare anche con altri naturalmente ).


domenica, novembre 05, 2006

Gruppi

In questo articolo spiegherò un modo semplice per poter definire un gruppo, ovvero un insime di telefoni che vengono chiamati insieme quando si digita il numero che si è associato a tale gruppo.
Naturalmente ci sono tanti modi per realizzare questa funzione.
Un metodo molto semplice, constiste nel creare una variabile formata da una stringa, costruita ad arte, contenente tutti i numeri che dovranno far parte del gruppo; basterà succevamente passare tale variabile alla funzione Dial.
Praticamente, supponiamo che si vuole fare un gruppo composto dai numeri 100, 200, 300, 400 e supponiamo di identificare tale gruppo con il numero 1234. Quindi in extensions.conf:

;GROUP_1234
GROUP_1234 = SIP/100&SIP/200&SIP/300&SIP/400

exten => 1234,1,Dial(${GROUP_1234})
exten => Hangup

In questo modo quando qualcuno digiterà il numero 1234 i telefoni corrispondenti ai numeri 100, 200, 300, 400 squilleranno contemporaneamente.

domenica, settembre 17, 2006

Voicemail

Con Asterisk è molto semplice configurare il servizio di voicemail, ovvero deviare la chiamata vocale entrante su un account di posta al quale verrà inviato un messaggio di testo con allegata la registrazione del messaggio acustico.
I file di configurazione che dovremo modificare sono extensions.conf per inserire la regola di voicemail e voicemail.conf per configurare una mailbox.
Supponiamo che vogliamo dotare l'account telefonico corrispondente al numero d'interno 6667 di voicemail. Una semplice regola potrebbe prevedere che se il destinatario non risponde entro 20 sec. allora la chiamata deve essere deviata alla voicemail.
Questo in termini di extensions.conf si traduce in:

exten => 6667,1,Dial(SIP/xxx,20) ; lascia squillare il telefono di 6667 per 20 sec
exten => 6667,2,Voicemail(xxx@xxxmailbox); se dopo 20 sec 6667 non risponde devia sulla mailbox
exten => 6667,3,Hangup

Per quanto riguarda voicemail.conf, invece:

[xxxmailbox]

xxx => 1234,mario rossi, mariorossi@mailserver.com

Il formato di questa regola è il seguente:

xxx è il nome dell'utente ( può essere anche il numero )
1234 è la password per autenticarsi al servizio di voicemail
mario rossi è il nome dell' utente voicemail
mariorossi@mailserver.com è l'account sul sever di posta sul quale viene inviata la mail

Per quest' ultimo punto bisogna considerare di aver configurato opportunamente sendmail o comunque un server di posta.
Con il contesto è la regola creata in voicemail.conf asterisk creerà il seguente percorso

/var/spool/asterisk/voicemail/xxxmail/xxx/INBOX


dove verranno messe le registrazioni dei messaggi vocali.

venerdì, settembre 15, 2006

Incoming/Outcoming

Supponiamo di voler configurare asterisk in modo da poter usare due voip provider: messagenet per avere un numero in ingresso raggiungibile anche da rete fissa, e voipstunt per l'uscita, e quindi per raggiungere numeri di rete fissa.
Naturalmente prima è necessario effettuare le registrazioni nei rispettivi siti e ricevere le mail contenenti i dati di accesso ( Accountid/Userid, Password, Hostname del voip provider ).
Su messagenet oltre alla normale registrazione è necessario richiedere un "Freenumber" ( gratuito ) o uno "Smartnumber" ( non gratuito ) ed usare i dati che verranno inviati nella mail relativa all' attivazione di questo servizio.
Supporremo di aver ricevuto da messagenet per l'attivazione del freenumber i seguenti dati:

URI (identificativo client SIP): 123456
PASSWORD: messagenetpwd
SIP SERVER: sip.messagenet.it:5061

Il primo, l'URI, è anche il numero di interno assegnato da messagenet per ricevere chiamate dalla rete voip messagenet. Inoltre vi viene assegnato un numero ( con il servizio freenumber solo prefissi 02, 08, 011 ) per ricevere chiamate da qualsiasi telefono tradizionale.
Per quanto riguarda voipstunt per mail vi vengono inviati solo userid e password per usare il loro client, per il servizio SIP si può fare riferimento a questo link. Comunque supponiamo che i dati di accesso siano i seguenti:

USERNAME: mariorossi
PASSWORD: voipstuntpwd
SIP SERVER: sip.voipstunt.com

Iniziamo dalla configurazione del sip.conf:

[general]

.
.
.

; Voip provider messagenet
register => 123456:messagenetpwd@sip.messagenet.it:5060/123456
; Voip provider voipstunt
register => mariorossi:voipstuntpwd@sip.voipstunt.com:5060/mariorossi

[messagenet]
type=user ; in ingresso
username=123456
secret=messagenetpwd
fromdomain=sip.messagenet.it
host=sip.messagenet.it
port=5061
nat=yes
dtmfmode=rfc2833
context=voipin ; si potrebbe fare a meno del context per i nostri scopi
insecure=very
qualify=20000
disallow=all
allow=gsm

[voipstunt]
type=peer ; in uscita
username=mariorossi
secret=voipstuntpwd
fromdomain=sip.voipstunt.com
host=sip.voipstunt.com
port=5060
nat=yes
dtmfmode=inband ; per voipstunt il dtmf va impostato a inband
context=inbound ; si potrebbe fare a meno del context per i nostri scopi
insecure=very
qualify=20000
disallow=all
allow=gsm

; supponiamo che l' account del nostro softphone nella nostra rete interna sia:

[mario]
type=friend ; ingresso/uscita
username=mario
secret=1234
host=dynamic
nat=yes
context=voipin ; contesto delle regole
qualify=20000
disallow=all
allow=gsm

Indichiamo ora le regole nel extensions.conf dentro il context voipin:

[voipin]

.
.
.

; in ingresso se arriva una chiamata dalla rete interna messagenet (123456) o da un fisso con il numero "freenumber" ( 02.............) viene girato sul tuo telefono interno
exten => 123456,1,Dial(SIP/mario|120|g)
exten => 123456,2,Hangup

; in uscita qualsiasi numero iniziante con 0039 viene girato alla rete mytcom
exten => _0039X.,1,Dial(SIP/${EXTEN}@voipstunt|120|g)
exten => _0039X.,2,Hangup

Riavviando asterisk ( asterisk -vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvdr ) dovremmo aver finito.

martedì, luglio 25, 2006

Configurazione con una comunity voip

Vediamo come si può fare a comfigurare asterisk in modo che possa interfacciarsi ad una comunity voip ( http://cms.mytcom.it/ , http://www.messagenet.it/). Prenderemo come esempio il primo.
Per prima cosa occorre edittare il file sip.conf, quindi supponiamo che alla registrazione abbiamo ricevuto i seguenti dati alla registrazione su mytcom:

245678 ---> numero di telefono
passwd ---> password
XXX ---> terminale interno

in sip.conf andranno aggiunta la seguente configurazione:

register =>245678:passwd@sip.mytcom.it/245678

e poi:

[mytcomuser]
type=peer

username=235678
secret=passwd
host=sip.mytcom.it
fromuser=235678
fromdomain=sip.mytcom.it
authuser=235678
context=mytcom
dtmfmode=info
canreinvite=no
insecure=very

e quindi dovremo definire il contesto 'mytcom' e le reletive regole in extensions.conf:

[mytcom]
exten => h,1,Hangup
exten => 235678,1,Dial(SIP/XXX,30,tTr)

a questo sarà sufficiente dare il reload ad asterisk!

venerdì, luglio 14, 2006

Sip.conf & Extension.conf

Consideriamo di voler mettere in comunicazione due softphone, quindi due utenze, in una immaginaria rete aziendale interna. Trattandosi di softphone dovremmo creare le utenze in sip.conf e successivamente definire il contesto e le sue regole in extensions.conf.
Supponiamo che gli utenti sono pippo e pluto, e che, pippo sta sull' host 192.168.1.2 e gli vogliamo assegnare il numero d' interno 6666, mentre pluto sta sull' host 192.168.1.3 e gli vogliamo assegnare il numero d'interno 6667. Chiameremo il contesto "interni". Partiamo da sip.conf:

[utenza_pippo]
type=friend
username = pippo
secret = pippopwd
context = interni
host = 192.168.1.2 <---- Si potrebbe mettere anche a 'dynamic'

[utenza_pluto] type = friend
username = pluto
secret = plutopwd
context = interni
host = 192.168.1.3 <---- Si potrebbe mettere anche a 'dynamic' E cosi le due utenze sono create,

passiamo ora a extensions.conf:

[interni]
exten => 6666,1,Dial(SIP/pippo,120|g)
exten => 6666,2,Hangup

exten => 6667,1,Dial(SIP/pluto,120|g)
exten => 6667,2Hangup

Quello scritto tra parentesi quadre è il nome del contesto a cui fanno riferimento le utenze che abbiamo creato in sip.conf.
La prima riga, sotto il nome del contesto, dice che quando qualcuno digita sul proprio softphone '6666' squillerà il softphone di pippo, e cosi la terza righa dice che quando qualcuno digita 6667 squillerà il softphone si pluto. La sintassi di queste stringhe è la seguente:

exten => number, priority, command

La funzione Dial(...) usata sopra è una dele funzioni più importanti offerte da asterisk, e consente di chiamare un utente usando come parametro principalmente questo formato (Interfaccia/Utente)

domenica, luglio 09, 2006

Extension.conf

Questo è il file di configurazione più importante di asterisk, in quanto contiene il dialplan, ovvero il comportamento ( instradamento ... ) delle chiamate entranti ed uscenti del sistema.
Il dialplain è diviso in sezioni chiamate contexts ( contesti ), ed ogni uno di questi è composto da uno o più extensions, i numeri di telefono, che possono essere formati da lettere e numeri, ed inoltre, ad ogni extensions è associata una priorità ed una applicazione.
Il formato di extensions.conf è il seguente:

[general]
--> some settings go here

[globals]
--> definition of some global variables go here

[context1]
-->extension 1, priority 1, application
-->extension 1, priority 2, application

--> extension helpdesk, priority 1, application
...
[context2]
--> extension 999, priority 1, application
--> extension 999, priority 1, application

Nella sezione general si può definire qualche opzione generale che concerne l' uso della funzione funzione save dialplan, il cui compito è salvare appunto il dialplan nel caso questo viene modificato in fase di esecuzione da dei comandi di asterisk.
Posson essere settati 3 optioni di configurazione:
  • static = yes | no : (Al momento è abilitata solo l' opzione yes) se static=yes e writeprotect=no allora si può abilitare il salvataggio con il comando CLI save 'dialplan'
  • writeprotect = yes | no : Questa opzione è necessaria se si vuole avere il salvataggio del dialplan a seguito dell' esecuzione di comani CLI
  • autofallthrough = yes | no : se questa opzione è settata quando asterisk finisce quello che stava facendo riaggangerà la chiamata, altrimenti aspetterà che un' altra extension sia composta. E' fortemente raccomandato settare questa opzione a yes.
Nella sezione global invece, si definiscono le variabili globali per il dialplan. In realtà, questa è la sezione dove si possono definire le costanti, che poi magarì saranno utilizzate in più punti all' interno del dialplan. La sintassi di queste è di questo tipo:

[globals]
MyMusicOnHold => /mp3/Mozart.mp3


L'ultima sezione da analizzare ed anche la più importante è context.
Ogni context è formata da una o più extensions, che a loro volta possono essere composte da più istruzioni, che saranno eseguite da asterisk al verificarsi di una certa condizione.
Ad esempio:

[Helpdesk]
exten => 323206,1,Dial(SIP/Helpdesk_agent01)

venerdì, luglio 07, 2006

Asterisk

Asterisk è nato come progetto open source per la realizzazione di un centralino VoIP in grado di gestire comunicazioni VoIP e PSTN ( analogiche e digitali ). Uno degli scopi di questa piattaforma è quella di riuscire ad integrarsi agevolmente con le piattaforme telefoniche esistenti per ottenere, ad esempio, il collegamento di più centralini disposti in diverse sedi, in modo da "satellarizzare realta multi sede". Asterisk supporta comunicazioni VoIP su TCP/IP e la tecnologia TDM ( Time Division Multiplexing ) secondo la quale il canale di comunicazione è in condivisione ed ogni dispositivo ne ottiene a turno l' uso esclusivo per lo stesso breve lasso di tempo.
Sostanzialmente agisce come una sorta di middleware tra le tecnologie telefoniche ( procolli ISDN, SIP, H.323 ... ) e le applicazioni telefoniche ( VoiceMail, musiche di attesa, ... ).
La sua struttura è modulare, ed è formata da un core e da moduli aggiuntivi.
I moduli vengono caricati da asterisk all' avvio e permettono di utilizzare differenti applicazioni; il loro avvio può essere scelto modificando il file modules.conf.
I canali sono i tipi di interfaccia su i quali si può telefonare, potrebbe essere l'interfaccia ISDN o l'ethernet su VoIP ed ogn' una di queste interfacce ha un file di configurazione che è necessario configurare per far funzionare la comunicazione. Questi .conf si trovano in /etc/asterisk.
La parte più importante di asterisk è il dialplan ( piano di chiamata ) dove si definisce cosa deve fare il PBX quando una chiamata è ricevuta su uno dei canali.
Il Dialplan di asterisk si configura tramite l' apposito file /etc/asterisk/extensions.conf, tramite il quale si stabilisce il comportamento di tutte le connessioni che passano per il PBX, cioè si stabilisce come controllare ed instradare le chiamate entranti e uscenti.
Rate this post: (data provided from NewsGator Online)