Conectar Asterisk a la red GSM - chan mobile
De Linuxmall Wiki
Mini how-to Asterisk GSM v4.2
Por: Pablo Umanzor A. (info@linuxmall.cl)
Objetivos
la meta de este mini how-to es enrutar las llamadas desde los anexos internos IP de un servidor con Asterisk hacia la red GSM y vice versa usando un canal Bluetooth ademas de la posibilidad de enviar y recibir mensajes de texto SMS.
Una de las primeras versiones de este mini how-to contemplaba la utilización del paquete chan_bluetooth de Theo Zourzouvillys la cual estaba en cierto sentido desactualizada, durante algunos meses atras en el trunk de Asterisk se comenzo con el desarrollo del software chan_cellphone el cual derivo en la version que actualmente se conoce como chan_mobile y que esta disponible via SVN y en la versión 1.6.x de Asterisk.
Teoria
La idea del sistema es poder a traves del dial plan generar una llamada hacia un dongle bluetooth (o adaptador USB Blueooth) el cual debe estar pareado con algún equipo telefono celular, por lo tanto la llamada sera gestionada por el canal bluetooth y el celular tendra que soportar el modo Audio Gateway para tal efecto. Aunque se ha probado en varios modelos de equipo celulares este desarrollo en algunos casos no esta soportado debido a que el equipo no posee esa propiedad.
1.- Instalación
En primer lugar se deben instalar los paquetes basicos del stack bluez y algunas librerias
apt-get install bluez-utils apt-get install libbluetooth2-dev apt-get install automake autoconf apt-get install subversion apt-get install linux-headers-VERSION_DEL_KERNEL apt-get install linux-kbuild-VERSION_DEL_KERNEL
donde VERSION_DEL_KERNEL se obtiene con
uname -r
Chan_mobile para asterisk 1.6.X
Usando la versión 1.6.X de asterisk y asterisk-addons ya trae incluido el canal chan_mobile por tanto solo es necesario compilar, los archivos pueden ser bajados directamente desde:
* http://downloads.asterisk.org/pub/telephony/asterisk/
posteriormente compilar y seguir con el paso 2.- Conexión con adaptador Bluetooth
Chan_mobile para asterisk 1.4.X
si por ejemplo solo queremos activar este canal en la version 1.4.21.1 sin hacer mayores cambios en nuestro Asterisk ya operativo, ir a /usr/src y bajar desde svn asterisk-addons
svn co http://svn.digium.com/svn/asterisk-addons/trunk asterisk-addons-trunk cd asterisk-addons-trunk svn update -r 421 cat chan_mobile.c | sed -e 's/ast_debug(1,/ast_log(LOG_DEBUG,/' | sed -e 's/, config_flags);/);/' > chan_mobile_1.4.c mv chan_mobile_1.4.c chan_mobile.c ./configure --with-asterisk=/usr/src/asterisk-1.4.21.1 make clean make menuselect make install make samples cp /usr/src/asterisk-addons-trunk/chan_mobile.so /usr/lib/asterisk/modules
Luego y si todo ha salido bien ejecutar Asterisk con:
asterisk -vvvvvvvvvc
y por ultimo cargar el modulo chan_mobile.so dentro del cli de asterisk>
module load chan_mobile.so
2.- Conexión con adaptador Bluetooth
Ahora se requiere configurar el archivo /etc/asterisk/mobile.conf , en primer lugar se debe encontrar el valor de la direccion MAC del adaptador USB Bluetooth para ello se debe ejecutar el comando
hcitool dev
lo que devolvera:
Devices:
hci0 11:11:11:11:11:11
El valor entregado por el comando anterior se debe copiar en la parte de la direccion donde hace referencia al adaptador en el archivo mobile.conf, en este caso:
[adapter] id=blue address=11:11:11:11:11:11
posteriormente necesitamos buscar la direccion MAC del telefono celular a conectar, para ello encender bluetooth del telefono dejarlo en modo visible y ejecutar el comando:
hcitool scan
lo que devolvera
Scanning ...
00:1A:37:51:B1:A6 Nokia
este valor ingresarlo en la definicion del telefono a conectar dentro del archivo mobile.conf en conjunto con el valor del puerto que entrega el perfil para Voice Gateway el cual se consigue utilizando un comando + la direccion del celular;
sdptool search --bdaddr 00:1A:37:51:B1:A6 0x111F
lo que devolvera:
Class 0x111F Searching for 0x111F on 00:1A:37:51:B1:A6 ... Service Name: Voice Gateway Service RecHandle: 0x10008 Service Class ID List: "Handfree Audio Gateway" (0x111f) "Generic Audio" (0x1203) Protocol Descriptor List: "L2CAP" (0x0100) "RFCOMM" (0x0003) Channel: 11 Profile Descriptor List: "Handsfree" (0x111e) Version: 0x0105
por lo tanto utilizar el valor "11" en la definicion de port
[nokia] address=00:1A:37:51:B1:A6 port=11 context=outgsm adapter=blue
Ahora ya se puede hacer la conexión o acción de parear el telefono con nuestro Asterisk, sabiendo que esta ejecutandose el demonio de bluetooth y que el telefono celular se encuentra con el servicio bluetooth activado y modo "visible", lanzar el comando
dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.SetMode string:discoverable
Si por alguna razon no es posible hacer el vinculo del equipo, se debe ejecutar el siguiente procedimiento
apt-get install libdbus-1-dev cd /usr/share/doc/bluez-utils/examples gzip -d passkey-agent.gz make ./passkey-agent --default 0000 &
e intentar vincular el celular con nuestro Asterisk, para ello hacerlo desde el mismo celular - si pregunta clave ingresar 0000
Ingresar al CLI> de Asterisk y ejecutar el siguiente comando para ver los dispositivos (telefonos o headset bluetooth) cercanos (demora 10 a 15 sec)
CLI> mobile search
El sistema ya deberia a esta altura pedir al telefono la clave de acceso, que por defecto esta definida en el archivo /etc/bluetooth/hcid.conf con el valor 1234
con el comando
*CLI>mobile show devices
es posible ver el status de la conexion
*CLI> mobile show devices ID Address Adapter Connected State SMS nokia 00:1A:37:51:B1:A6 blue Yes Free No
Por ultimo crear el dial plan para generar una llamada utilizando el sistema
[outgsm]
exten => _9X.,1,Dial(Mobile/nokia/${EXTEN:1},45)
exten => _9X.,n,Hangup
Para enviar SMS en extensions.conf agregar:
[outsms] exten => 123,1,MobileSendSMS(nokia,12345678,Hola mundo)
