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)
Herramientas personales