Originariamente inviato da pilovis
Ecco le istruzioni per configurare Asterisk (versione 1.8.x) per effettuare e ricevere chiamate voce tramite Google Talk (tutti gli utenti Gmail e chiamate telefoniche se si ha credito) e Google Voice (numero telefonico USA e chiamate gratis in USA e Canada).

Installazione su Ubuntu Server 10.04.2 di Asterisk (nota: metto solo i comandi...):

su - root
wget http://downloads.asterisk.org/pub/te...1.8.6.0.tar.gz
apt-get install libiksemel-dev libssl-dev libncurses5 g++ libxml2-dev
tar -zxvf asterisk-1.8.6.0.tar.gz
cd asterisk-1.8.6.0
./configure
make
make install
make samples

NOTA: se l'installazione durante il ./configure, si interrompe e vi dice che mancano delle dipendenze, installatele come al solito con apt-get.

Configurazione files:
-------------------------------------------------------
editiamo gtalk:

nano /etc/asterisk/gtalk.conf

inserire alla fine del file le seguenti righe:

[general]
context=google
allowguests=yes
bindaddr=0.0.0.0
stunaddr=stun01.sipphone.com

[guest]
disallow=all
allow=ulaw
context=google

salvare e chiudere con Ctrl+X
-------------------------------------------------------
editiamo jabber:

nano /etc/asterisk/jabber.conf

inserire alla fine del file le seguenti righe:

[general]
autoregister=yes

[asterisk]
type=client
serverhost=talk.google.com
username=mioutentegmail@gmail.com/Talk
secret=miapasswordgmail
port=5222
usetls=yes
usesasl=yes
statusmessage="sono un server Asterisk"
timeout=100

salvare e chiudere con Ctrl+X

NOTA: mioutentegmail e miapasswordgmail vanno ovviamente sostituiti con le nostre credenziali di accesso a gmail
-------------------------------------------------------+
editiamo sip.conf:

nano /etc/asterisk/sip.conf

subito sotto l'etichetta [general] inserire le seguenti righe:

context=default
allowguest=no
nat=yes
externhost=mioip.dyndns.org
externrefresh=120
localnet=192.168.1.0/255.255.255.0


e ancora in fondo al file inserire le seguenti righe per configurare almeno un telefono SIP (numero interno 200):

[200]
deny=0.0.0.0/0.0.0.0
secret=miapassword
dtmfmode=rfc2833
canreinvite=no
host=dynamic
type=friend
nat=yes
port=5060
qualify=yes
callgroup=
pickupgroup=
dial=SIP/200
mailbox=200@device
permit=0.0.0.0/0.0.0.0
callerid=device <200>
callcounter=yes
faxdetect=no

salvare e chiudere con Ctrl+X

NOTA: mioip.dyndns.org va sostituito con il nostro dominio di terzo livello registrato con dyndns.org e gestito con il router ADSL (se lo consente), oppure tramite il programma ddclient (apt-get install ddclient), cerca su google le istruzioni di configurazione.
Se invece abbiamo un IP pubblico statico, sostituiamo la riga "externhost=mioip.dyndns.org" con:
"externip=xxx.xxx.xxx.xxx" (mettere l'indirizzo IP statico), e se non c'e' il NAT sul router va cambiata la riga "nat=yes" con "nat=no".
Localnet invece va adeguata alla nostra rete LAN, es: "localnet=10.0.0.0/255.0.0.0" se abbiamo una rete in classe 10, se non c'e' il NAT questa riga sparisce.
-------------------------------------------------------
editiamo extensions.conf:

nano /etc/asterisk/extensions.conf

e subito dopo l'etichetta [default] inserire le seguenti righe:

include => google
include => gmail
include => googlevoice

e ancora in fondo al file inserire le seguenti righe:

[google]
;exten => s,1,Answer()
;exten => s,n,Wait(2)
;exten => s,n,SendDTMF(1)
;exten => s,n,Dial(SIP/200,20)
exten => s,1,Set(crazygooglecid=${CALLERID(name)})
exten => s,n,Set(stripcrazysuffix=${CUT(crazygooglecid,@,1) })
exten => s,n,Set(CALLERID(all)=${stripcrazysuffix})
exten => s,n,Dial(SIP/200,20,D(:1))

[gmail]
exten => 100,1,Dial(gtalk/asterisk/mioutentegmail@gmail.com)

[googlevoice]
exten => _1XXXXXXXXXX,1,Dial(gtalk/asterisk/+${EXTEN}@voice.google.com)

salvare e chiudere con Ctrl+X

Nota: mioutentegmail va ovviamente sostituito con la nostra ID di accesso a gmail
-------------------------------------------------------

Far partire asterisk con il comando:
asterisk start


Il client SIP (telefono o software) va configurato con la userid: 200 e la password che abbiamo messo in sip.conf (miapassword)
----------------
IMPORTANTE:
----------------

Da fine Agosto le chiamate in uscita tramite il canale "Google Voice" hanno smesso di funzionare (si sente il segnale di chiamata in corso ma non c'e' nessuna risposta).
Il problema e' dato dal fatto che Google ha cambiato alcuni protocolli e sta andando avanti e indietro con la configurazione dei protocolli (vecchio e nuovo), per cui le chiamate in uscita un giorno funzionano e il giorno dopo no.

Per risolvere il problema occorre modificare il file ../channels/chan_gtalk.c nei sorgenti e ricompilare asterisk.

La procedura e' molto semplice:

Andare nella cartella in cui abbiamo scompattato asterisk la prima volta durante l'installazione di Asterisk 1.8, cioe' dove ci sono i sorgenti del programma, nel caso sopra illustrato era "/root":

entrare nella cartella channels:
cd channels

e quindi editare il file chan_gtalk.c:
sudo nano chan_gtalk.c

trovare la linea contenente "iks_find_cdata"

sostituirla con la seguente linea:
((redirect = iks_find_cdata(traversenodes, "sta:redirect")) || (redirect = iks_find_cdata(traversenodes, "redirect")) ) &&

salvare le modifiche con "Ctrl+x"

poi ricompiliamo asterisk uscendo da /channels e ritornando nella cartella principale in cui lo abbiamo scompattato la prima volta con il comando:

cd ..

e diamo i seguenti comandi per ricompilarlo:

./configure
make clean
make
sudo make install

Quindi riavviamo la macchina che ospita Asterisk e le chiamate in uscita ora dovrebbero nuovamente funzionare.

Questo e' tutto.