domingo, 30 de diciembre de 2007

Asterisk y Gtalk


Muchos son los proyectos que intentan la convergencia entre los diferentes IM y algunos servicios de llamadas a través de internet.

Vamos a configurar nuestro asterisk para poderlo comunicar con una cuenta de googleTalk.

Para ello aprovechamos algunos ficheros de configuración que trae la última versión de asterisk(1.4), destinados exclusivamente a este fin.


Primeramente debemos modificar nuestras extensiones definidas anteriormente y añadir un usuario al de gTalk con el que deseamos establecer la conexión. No es necesario modificar el archivo sip.conf

Al fichero de configuración extensions.conf le debemos añadir:

[google-in]
exten => s,1,NoOp( Call from Gtalk )
exten => s,n,Set(CALLERID(name)=”From Google Talk”)
exten => s,n,Dial(SIP/test1)

[google-out]
exten => 200,1,Dial(gtalk/gtalk_account/username@gmail.com)


En esta versión de Asterisk existe además dos ficheros de configuración que vamos a modificar: jabber.conf y gtalk.conf.

El contenido de jabber.conf será de la siguiente manera:

[general]
debug=yes
autoprune=no
autoregister=no

[gtalk_account]
type=client
serverhost=talk.google.com
username=username@gmail.com/Talk
secret=********
port=5222
usetls=yes
usesasl=yes
buddy=buddy@gmail.com
statusmessage=”This is an Asterisk server”
timeout=100


Y el contenido de gtalk.conf será de la siguiente manera:

[general]
context=google-in
allowguest=yes
;
[guest]
disallow=all
allow=ulaw
context=google-in

[buddy]
username=username@gmail.com
disallow=all
allow=ulaw
context=google-in
connection=gtalk_account



Una vez configurado esto ya lo tenemos, configuramos un cliente(softphone) con la numeración a la que podemos llamar según el dialplan que hemos definido.

Una vez que nos metemos en la consola por primera vez aparecerán cosas de la siguiente manera:

JABBER: gtalk_account INCOMING:

Mi usuario de gtalk se tiene agregado a si mismo por eso ese log.

También aparecerán logs de la siguiente manera.

JABBER: gtalk_account INCOMING:

Y alguno de la siguiente manera:

JABBER: gtalk_account OUTGOING: Greetings I am the Asterisk Open Source PBX and I want to subscribe to your presence



Una vez visto que efectivamente asterisk está interactuando con la cuenta de gtalk que hemos configurado pasamos a la ejecución del ejemplo:

Primero intentamos desde la consola de asterisk:

*CLI> dial
The 'dial' command is deprecated and will be removed in a future release. Please use 'console dial' instead.

Y de repente como era esperable nuestro cliente comienza a sonar. Y en la pantalla aparece el número de Google Talk.



Finalmente llamamos a la extensión 200, (cuenta de gtalk.) y obtenemos el siguiente log en la consola de asterisk

*CLI>
[Dec 30 15:20:47] ERROR[14176]: chan_gtalk.c:858 gtalk_alloc: no gtalk capable clients to talk to.
[Dec 30 15:20:47] WARNING[14176]: app_dial.c:1125 dial_exec_full: Unable to create channel of type 'gtalk' (cause 0 - Unknown)


Es un comienzo de cómo asterisk se puede comunicar con gtalk! seguiremos investigando.






Jugando con Asterisk

No hace mucho tiempo que llevo jugando con esto de Linux cuando me enseñaron que era Asterisk.

¿Qué es Asterisk?

Asterisk es una centralita software (PBX) de codigo abierto. Como cualquier centralita PBX permite interconectar telefonos y conectar dichos telefonos a la red telefónica convencional (RTB - Red telefónica básica)- Su nombre viene del simbolo asterisco (*) en inglés.

La diferencia con las centralitas convencionales reside en que las llamadas son dirigidas con internet extremo a extremo. ¿Qué supone esto? Llamadas internacionales baratas a cambio de no poder asegurar la calidad del sonido. Recordemos que internet es Best Effort.

Además de todo esto, el mayor de los atractivos de Asterisk es que soporta diferentes protocolos utilizados en llamadas VoIP: H323, IAX(propietario de Asterisk) y SIP ( el más usado en la actualidad ).

Una vez leídas estas pinceladas quizas sería recomendable leerse el siguiente tutorial que detalla qué es lo que se puede hacer con Asterisk, en qué consiste Asterisk y cómo se puede hacer. Tutorial

Una vez leído ese tutorial, configurarse un servidor sencillo no debe resultar excesivamente complicado.

Un ejemplo simple sería el siguiente (particularizado para debian):

1.- Instalamos los paquetes de asterisk:
# apt-get install asterisk

2.- Configuramos el contenido de sip.conf (situaldo en /etc/asterisk)


[general]

context=default
usercallerid=yes
bindport=5060 ; UDP Port to bind to (SIP standard port is 5060)
bindaddr=0.0.0.0 ; IP address to bind to (0.0.0.0 binds to all)
srvlookup=yes ; Enable DNS SRV lookups on outbound calls

disallow=all ; First disallow all codecs
allow=ulaw ; Allow codecs in order of preference
allow=ilbc ;
trustrpid = yes ; If Remote-Party-ID should be trusted
sendrpid = yes ; If Remote-Party-ID should be sent
subscribecontext = default ; Set a specific context for SUBSCRIBE requests
; Useful to limit subscriptions to local extensions
; Settable per peer/user also

localnet=192.168.1.0/255.255.255.0; All RFC 1918 addresses are local networks
domain=
type=friend
secret=welcome ; Password of the peer
qualify=yes ; Qualify peer is no more than 2000 ms away
;nat=yes ; This phone is natted
host=dynamic ; This device registers with us
canreinvite=no ; Asterisk by default tries to redirect
context=internal ; the internal context controls what we can do


[test2]
type=peer
qualify=yes ; Qualify peer is no more than 2000 ms away
nat=yes ; This phone is not natted
canreinvite=yes ; Asterisk by default tries to redirect
host=dynamic ;It will register with us
secret=welcome
context=internal


3.- Configuramos el contenido de extensions.conf (situaldo en /etc/asterisk)

[general]
static=yes
writeprotect=no


[globals]

; -------------------
; peers and friends
; -------------------

TEST1=SIP/test1
TEST2=SIP/test2
ALL_INTERNAL=${TEST1}&${TEST2}

[internal]

exten => 100,1,Dial(${ALL_INTERNAL},25,r)

exten => 101,1,Dial(${TEST1},25,r)

exten => 102,1,Dial(${TEST2},25,r)



4.- Lanzamos las consola de asterisk
# asterisk -r

5.- volvemos a cargar los ficheros de configuracion
*CLI> sip reload
*CLI> dialplan reload

6.- Configuramos los clientes para que autentiquen contra el servidor, ya sean softphones o teléfonos IP. Y ya lo tenemos nuestro primer servidor de Asterisk configurado!

Nuevo Google!

Google tiene una versión Black!

YA hace algún tiempo que Google ha sacado una versión en negro. La finalidad de éste proyecto no es otra que el ahorro de energía.

A partir de ahora a utilizar el nuevo google black.

miércoles, 26 de diciembre de 2007

Inauguración

Bueno, al final me he decidido a crearme un blog donde recopilé alguna información de las cosas que ando mirando últimamente y que creo que pueden servir de utilidad para alguno de los lectores que les interese el tema, sobretodo teniendo en cuenta de que por Internet todo esto anda un poco más desperdigado.

Asi que nada a partir de ahora comenzaré a publicar.