Centralino Voip trixbox + euteliavoip

Esiste un modo per abbassare drasticamente il costo delle chiamate? Certo, un centralino voip.

Avevo già trattato la configurazione di ekiga per euteliavoip (skypho) per tutti gli utenti che hanno poche pretese, ma spesso il problema nasce con le configurazioni complicate delle aziende.

Per mantenere una linea comune ai post in questo esempio ho utilizzato appunto eutelia voip, che permette le autoricariche da carte di credito ed i number portability; ma nulla vieta con un centralino voip di registrarvi anche altri operatori con una procedura analoga.

Premessa:

Un centralino non necessita di un gran hardware, per aziende fino a 10 telefoni posso consigliarvi tranquillamente di utilizzare una macchina virtuale VmWare con 1 solo processore, 8Gb di disco, lan in bridge e 256Mb di ram; oppure un pentium 3 con almeno le stesse caratteristiche.

Ora che avrete l'hardware possiamo procedere, procuratevi una iso di trixbox (distribuzione linux basata su centos già preconfigurata) dal sito ufficiale, posto qui un mirror diretto:
http://superb-east.dl.sourceforge.net/sourceforge/asteriskathome/trixbox-2.6.2.1.iso
A questo punto servirà inoltre un'account registrato gratuitamente presso il provider voip, in questo caso:
http://www.euteliavoip.com
tramite il quale potrete registrare tutte le numerazioni che volete, ed attivare anche numerazioni fax che vi permetteranno di ricevere direttamente su e-mail i fax (tiff,jpg,pdf) ed i rapportini di invio (i fax sono inviabili tramite e-mail, software free, via interfaccia web).

Sarà necessario per ultimo avere un adsl con ip fisso, (un esempio molto economico, con buone bande garantite può essere cheapnet); per chi avesse ip dinamico (come di norma per tutte le adsl casalinghe) può trovare come soluzione dyndns.com, anch'esso con registrazione gratuita, permette di associare un dominio ad un ip dinamico, tramite un apposito software gratuito che effettua costantemente l'aggiornamento dell'ip sul sito ( http://www.dyndns.com/support/clients/ ) in tal caso ove nella spiegazione troverete la dicitura vostroipesterno, dovrete inserire il dominio dinamico registrato (es: example.dyndns.org).

Nota per i firewall router
Avevo notato che aprendo e nattando solo le porte consigliate da eutelia non funzionava quindi eccole:

udp 123
udp 5004
udp 5060
udp 5061
udp 5062
udp 5063
udp 4569
udp 4570
udp 8000
udp 8001
udp 8002
udp 8003
udp
3478
udp 60028
udp 16384
udp 16482
tcp 5038
tcp 4559
tcp 8088
tcp 6600
tcp 4445
tcp 60476
tcp 60477
tcp 60478
tcp 60479
tcp 42359
tcp 59579
tcp 59581

Ora avete a disposizione tutto il necessario per l'installazione e la lan configurata correttamente.

Installazione:
L'installazione è molto semplice, inserite il cdrom all'avvio, quando comparirà la prima schermata con il logo trixbox date [invio] e rispondete mano a mano alle domande che vi vengono poste.
Se avete il dhcp attivato internamente sappiate che il centralino funzionerà comunque, il problema sarà solo per i client che lo devono contattare (con un dns interno ed un dhcp configurato bene non avrete problemi).

NOTA: l'installer effettuerà un paio di riavvi per effettuare le auto configurazioni, lasciatelo fare finche non vedrete comparire stabile la schermata nera di login.

Configurazione:
La configurazione è molto semplice, in quanto avrete a disposizione fin da subito un centralino funzionante, con già un interfaccia web per l'amministrazione.

A questo punto entrate nel pannello amministrativo digitando in un browser:

http://ipinterno.del.vostro.server/maint/?freepbx


La cosa più importante e delicata sarà la configurazione dei "trunk" (fasci) che sono le connessioni ai provider.

Create quindi un nuovo trunk sip che dovrà avere la seguente struttura:
identificativo di uscita:
Never Override Caller id: selezionato
Regole chiamate:
0039+XXXXXXXXX
0039+XXXXXXXXXX
0039+XXXXXXXXXXX
0039+XXXXXXXX

Impostazioni in Uscita

Nome Fascio: numerovoip

dettagli peer:

allow=ulaw&alaw&gsm&g723&g729&h261&h263&h263p
callerid=Unknown
context=from-sip-external
defaultexpirey=1800
disallow=all
dtmfmode=inband
externip=vostroipesterno
fromuser=
numerovoip
host=voip.eutelia.it
insecure=very
language=it
nat=yes
port=5060
qualify=yes
secret=password
srvlookup=yes
type=friend
useragent=Asterisk_Eut
username=
numerovoip

Impostazioni in entrata

Nome Fascio: in_
numerovoip

dettagli peer:
allow=ulaw&alaw&gsm&g723&g729&h261&h263&h263p
callerid=Unknown
disallow=all
dtmfmode=inband
externip=vostroipesterno
fromuser=
numerovoip
host=voip.eutelia.it
insecure=very
language=it
nat=yes
qualify=yes
realm=voip.eutelia.it
secret=password
srvlookup=yes
type=friend
username=
numerovoip

Stringa di registrazione:
numerovoip:password:numerovoip@voip.eutelia.it:5060/numerovoip
Per euteliavoip sarà necessario andare nelle impostazioni generali (pbx - pbx settings - general settings) ed abilitare l'opzione:
Allow Anonymous Inbound SIP Calls? YES
Trixbox ha già una regola di uscita di default configurata per digitare 9 per uscire, ma dovrete legarvi il trunk appena creato con il menu a tendina che troverete in basso.
Configurate quindi le regole di uscita e di entrata a vostro piacimento.

NOTA: Con una configurazione di più di un trunk in uscita con lo stesso provider, in questo caso eutelia voip, molti router/modem spesso hanno un problema noto; la arp tables impazzisce e bisogna riavviarli spesso. Per risolvere il problema è sufficente modificare in "
Impostazioni in Uscita" la variabile defaultexpirey=300 con defaultexpirey=1800 (consiglio di utilizzarla sempre così per risolvere possibili problemi di timeout) e la variabile port=5060, che diventerà 5061 per il secondo fascio, 5062 per il terzo e così via, ma senza modificare la stringa di registrazione che dovrà sempre essere numerovoip:password:numerovoip@voip.eutelia.it:5060/numerovoip.

Abilitare il supporto tapi e astapi per asterisk 1.4.* (nuova trixbox 2.6):
Il nuovo trixbox ha finalmente integrato un asterisk più recente con molte più funzionalità.
Una di queste news di asterisk 1.4 è il supporto per i tapi driver sia di outlook che http, in poche parole potrete rendere il vostro asterisk analogo a qualsiasi skype, installando l'apposito plugin per firefox "nooje click" scaricabile ed installabile tramite questa guida:

http://blog.liberailvoip.it/2008/10/31/noojee-soluzione-click-to-call-per-asterisk/

di cui riporto qui i passi fondamentali adattati a trixbox (i file di conf e i context hanno nomi diversi);

scaricate il plugin da QUI ed installatelo sui client (dopo aver installato firefox)

Editate il file /etc/asterisk/manager_custom.conf aggiungedo in fondo:
[nojeeclick]
secret = nojeepasswd
permit=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user

Modificate il file /etc/asterisk/manager.conf in modo che la sezione "general" corrisponda a:
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
webenabled=yes
Modificate (o create se non presente) il file /etc/asterisk/http.conf che deve contenere:
; Asterisk Builtin mini-HTTP server
[general]
enabled=yes
enablestatic=yes
bindaddr=0.0.0.0
bindport=8088
prefix=asterisk
uploads = /var/lib/asterisk/uploads/
Date ora i comandi da terminale:
mkdir /var/lib/asterisk/uploads
chown asterisk:asterisk /var/lib/asterisk/uploads
amportal restart
asterisk -rx "http show status"
L'ultimo comando dovrà restituirvi un report delle funzionalità di asterisk correttamente configurate tipo:
HTTP Server Status:
Prefix: /asterisk
Server Enabled and Bound to 0.0.0.0:8088

Enabled URI's:
/asterisk/httpstatus => Asterisk HTTP General Status
/asterisk/manager => HTML Manager Event Interface
/asterisk/rawman => Raw HTTP Manager Event Interface
/asterisk/static/... => Asterisk HTTP Static Delivery
/asterisk/mxml => XML Manager Event Interface
Il test di funzionamento lo potete fare aprendo il firefox di un client ed andare all'indirizzo:
http://ip_asterisk:8088/asterisk/manager?action=login&username=noojeclick&secret=nojeepasswd
A questo punto potete configurare i plugin noojee click nei client con la seguente configurazione:
server type: AJAM (Asterisk 1.4+)
host: ip del centralino
port: 8088
username: nojeeclick
password: nojeepasswd
extension: interno sip dell'utente (a quale numero verrà trasferita la chiamata al click)
context: from-internal
phone type: Aastra
dial prefix: 0
international prefix: 00
pattern:
XXXX XXX XXX
XXXX XXXX XXXXXX
XXXX XXXX
XX XXXX XXXX
XXXXXXXXXX
XXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
XX XXXXXXXX
XXX-XXX-XXXX
(XX) XXXX XXXX
(XX) XXXX-XXXX
(XXXX) XXXX XXXX
(XXXX) XXXX-XXXX
(XXXX) XXX XXXX
(XXXX) XXX-XXXX
(XXX) XXX XXXX
(XXX) XXX-XXXX
+XX X XXXX XXXX
Riavviate firefox e quando l'utente clicckerà su l'icona rossa a fianco di un numero in una pagina web, verrà trasferita al suo telefono sip (softphone tipo qutecom o apparato fisico) che avvierà la chiamata al numero esterno solo dopo aver alzato la cornetta.

Per installare il supporto click-to-call di Outlook, vi consiglio di scaricare ed installare sui client windows il seguente driver TAPI:
http://outcall.sourceforge.net/
Ora se volete traducete le voci del vostro centralino in italiano, loggatevi in console da root e date i seguenti comandi:
wget http://mirror.tomato.it/ftp/pub/asterisk/suoni_ita/it_mm_sounds_20060510.tar.gz
mkdir /var/lib/asterisk/sounds/it
mkdir /var/lib/asterisk/sounds/dictate/it
mkdir /var/lib/asterisk/sounds/digits/it
mkdir /var/lib/asterisk/sounds/letters/it
mkdir /var/lib/asterisk/sounds/phonetic/it
cp -rfp sounds_it_2006_05_10/*.gsm /var/lib/asterisk/sounds/it
cp -rfp sounds_it_2006_05_10/dictate/* /var/lib/asterisk/sounds/dictate/it
cp -rfp sounds_it_2006_05_10/digits/* /var/lib/asterisk/sounds/digits/it
cp -rfp sounds_it_2006_05_10/letters/* /var/lib/asterisk/sounds/letters/it
cp -rfp sounds_it_2006_05_10/phonetic/* /var/lib/asterisk/sounds/phonetic/it
E le voci italiane sono state installate.

Creazione client (postazioni telefoniche):
Il mio consiglio è di utilizzare sempre SIP, come softphone Qutecom, che supporta anche msn per poter eguagliare in tutto soluzioni molto pesanti come skype.
Per crearli, basterà andare da interfaccia web-pbx-pbx settings-extension (interni)

Invio di fax tramite voip ( hylafax + iaxmodem + Winprint )

Installate da terminale i pacchetti necessari:
yum -y install ghostscript sharutils mgetty-voice hylafax iaxmodem
ln -s /usr/share/fonts/default/ghostscript/ /usr/share/ghostscript/fonts
mkdir /var/log/iaxmodem
touch /var/log/iaxmodem/iaxmodem-cfg.ttyIAX
echo "t2:23:respawn:/usr/sbin/faxgetty ttyIAX" >> /etc/inittab
echo "IAX:2345:respawn:/usr/sbin/iaxmodem iaxmodem-cfg.ttyIAX"
>> /etc/inittab
Io consiglio di scaricare le ultime versioni di iaxmodem e hylafax, ma anche così funzionerà.
Create dall'interfaccia web un interno IAX2 con le seguenti caratteristiche:
Extension Number: 1100
Display Name: IAXModem
Record Incoming: Never
Record Outgoing: Never
Secret: password
Modificate (o create se non presente) il file /etc/iaxmodem/iaxmodem-cfg.ttyIAX come segue
device /dev/ttyIAX
owner uucp:uucp
mode 660
port 4570
refresh 60
server 127.0.0.1
peername 1100
secret password
cidname Fax
cidnumber NumeroVoipDiUscita
codec slinear
Il codec potete sceglierlo tra alaw, ulaw e slinear; ma a me ha sempre funzionato solo con slinear.
Modificate (o create se non presente) il file
/etc/hylafax/etc/config (oppure /etc/hylafax/config se compilato) come segue:
LogFacility: daemon
CountryCode: 39
AreaCode: 51 ------------------> quello della vostra provincia
LongDistancePrefix: 0
InternationalPrefix: 00
DialStringRules: etc/dialrules.europe
ServerTracing: 1
Modificate (o create se non presente) il file
/etc/hylafax/etc/config.ttyIAX (oppure /etc/hylafax/config.ttyIAX se compilato) come segue:
CountryCode: 39
AreaCode: 51
FAXNumber: +39.051.vostronumerovoip
LongDistancePrefix: 0
InternationalPrefix: 00
DialStringRules: etc/dialrules.europe
ServerTracing: 1
SessionTracing: 11
RecvFileMode: 0664
LogFileMode: 0644
DeviceMode: 0644
RingsBeforeAnswer: 2
SpeakerVolume: off
GettyArgs: "-h %l dx_%s"
LocalIdentifier: "IAXmodem"
TagLineFont: etc/lutRS18.pcf
TagLineFormat: "From %%l|%c|Page %%P of %%T"
MaxRecvPages: 200
ModemType: Class1 # use this to supply a hint
ModemResetCmds: "ATH1\nAT+VCID=1" # enables CallID display
ModemReadyCmds: ATH0
Class1AdaptRecvCmd: AT+FAR=1
Class1TMConnectDelay: 400 # counteract quick CONNECT response
Class1RMQueryCmd: "!24,48,72,96" # enable this to disable V.17 receiving
#Class1TMQueryCmd: "!24,48,72,96" # enable this to disable V.17 sending
ModemResetCmds: AT+VCID=1 # enables CallID display
PagerTTYParity: none
CallIDPattern: "NMBR="
CallIDPattern: "NAME="
CallIDPattern: "ANID="
CallIDPattern: "NDID="
Class1JBIGSupport: no
Class1PPMWaitCmd: "" # \072 == : to avoid awk problem
Class1TCFWaitCmd: ""
Class1EOPWaitCmd: ""
Class1SwitchingCmd: "" # assumption: +FRS not supported

ModemReadyState: R

Modificate (o create se non presente) il file /etc/hylafax/etc/FaxDispatch
(oppure /etc/hylafax/FaxDispatch se compilato) come segue:
case "$DEVICE" in
ttyIAX) SENDTO=FaxMaster;;

esac
Ora potete dare il comando
faxsetup
Che configurerà hylafax controllando le dipendenze, quando vi verrà chiesto se configurare il modem digitate:
no
e date invio, in quanto il modem è già configurato con i precedenti passaggi.

Create gli utenti per le stampanti winprint:
faxadduser -a passw0rd -p passw0rd faxuser0
faxadduser -a passw1rd -p passw1rd faxuser1
faxadduser -a passw2rd -p passw2rd faxuser2
.... e cosi via.
Riavviate il centralino e i fax dovrebbero poter essere spediti come da un normale hylafax, per il quale vi rimando alla guida che scrissi qualche tempo fa.

Per Poter creare una paginetta sul vostro sito in php che tramite un apposito form crei una chiamata tra un interno ed il numero del cliente automaticamente a carico del centralino potete usare la seguente pagina in php:

<html>
<head>
<title> HelpDesk gratis!</title>
</head>
<body>
<?

$strHost = “127.0.0.1&#8243;;
$strUser = “admin”;
$strSecret = “amp111&#8243;;
$strContext = “from-internal”;
$strWaitTime = “30&#8243;;
$strPriority = “1&#8243;;
$strMaxRetry = “2&#8243;;
$strExten = $_POST['txtphonenumber'];
$callNumber = $strExten;
$strCallerId = “Web Call <$callNumber> “;
$length = strlen($strExten);
if ($length == 10 && is_numeric($strExten))
{
$oSocket = fsockopen($strHost, 5038, $errnum, $errdesc) or die(”Connection to host failed”);
fputs($oSocket, “Action: loginrn”);
fputs($oSocket, “Events: offrn”);
fputs($oSocket, “Username: $strUserrn”);
fputs($oSocket, “Secret: $strSecretrnrn”);
fputs($oSocket, “Action: originatern”);
fputs($oSocket, “Channel: Local/$callNumber@from-internalrn”);
fputs($oSocket, “WaitTime: $strWaitTimern”);
fputs($oSocket, “CallerId: $strCallerIdrn”);
fputs($oSocket, “Exten: 699rn”);
fputs($oSocket, “Context: $strContextrn”);
fputs($oSocket, “Priority: 1rnrn”);
fputs($oSocket, “Action: Logoffrnrn”);
sleep(3);
fclose($oSocket);
?>
<div>
<h3>Compila il form e verrai contattato gratuitamente dal nostro staff!</h3>
<p>
<table width=”300&#8243; border=”1&#8243; bordercolor=”#0f0f0f” cellpadding=”3&#8243; cellspacing=”0&#8243;>

<tr>
<td> <p> <font color=”#000000&#8243; size=”2&#8243; face=”verdana,georgia”> Stiamo processando
la tua chiamata, entro pochi secondi squillerà il telefono al numero
che hai inserito.<br>
Sarai messo in contatto con il nostro call center gratuitamente!</font> </p>
<p> <font color=”#000000&#8243; size=”2&#8243; face=”verdana,georgia”> HelpDesk Service
VoIP <br>
<a xhref=”javascript:history.go(-1)” mce_href=”javascript:history.go(-1)” > riprova.</a> </font> </p> </td>
</tr>
</table>
<p>
<h3> <a xhref=”javascript:history.go(-1)” mce_href=”javascript:history.go(-1)” > Indietro</a> </h3>
</p>

<?
}
else
{
?>
<p>
<table width=”300&#8243; border=”1&#8243; bordercolor=”#0f0f0f” cellpadding=”3&#8243; cellspacing=”0&#8243;>
<tr>
<td> <font size=”2&#8243; face=”verdana,arial,georgia”
color=”#000000&#8243;> Inserisci il tuo numero di telefono, comprensivo di prefisso (es.
0577XXXXXX) sul quale vuoi ricevere la chiamata dal nostro sistema automatico.</font>
<form action=”<? echo $_SERVER['PHP_SELF'] ?> ” method=”post”>

<input type=”text” size=”20&#8243; maxlength=”10&#8243; name=”txtphonenumber”> <br>
<input type=”submit”
value=”Telefonami”>
</form>
</td> </tr>
</table>
</p>
<?
}
?>
</div>
</body>
</html>
Consiglio:
Tramite il menu in alto "strumenti" potrete accedere a "module admin" sulla sinistra, che vi permetterà di installare un risponidore automatico IVR, suonerie di attesa, sistemi di backup, gruppi di chiamata, sistemi di code, sitemi per la registrazione di nuovi messaggi, ecc...

Appena avrete finito la configurazione ricordatevi di applicare le modifiche tramite il pulsante rosso in alto a sinistra che comparirà dopo la prima azione, questo applicherà istantaneamente le modifiche e riavvierà asterisk ricollegandolo.

Buone telefonate a tutti!
Swipon

changelog dell'howto:
-----------------------------------------------------------------------------------------
- aggiunti codec per chiamate video nel trunk
- risolto e spiegato problema con trunk multipli
- aggiornamento per nuove funzioni asterisk 1.4.* e 1.6.*
- aggiunto how to noojeclick x click to call
- aggiornato dopo il rilascio del meraviglioso qutecom
- inserita integrazione hylafax e iaxmodem
- inserito personalizzazione con voci italiane
- aggiunta pagina php per farsi chiamare gratis dal web
- aggiunta sezione firewall