Asterisk Addons 1.6.X - Mysql, MP3, H323, Chan_mobile

Actualizado 25 agosto 2009

Asterisk Addons es un paquete que añade cuatro funcionalidades a nuestra centralita Asterisk.

  1. la posibilidad de tener un registro de las llamadas en una base de datos MySQL
  2. utilizar archivos MP3 para la musica en espera
  3. Añadir el protocolo H323 (version propietaria)
  4. el canal chan_mobile que nos permite conectar, via bluetooth, un celular a nuestra centralita y usarlo como gateway GSM y, si el celular lo soporta, envio de SMS.

Antes de empezar tenemos que parar el servidor Asterisk y arrancar el servidor Mysql

Para hacer esto digitamos:

/etc/init.d/asterisk stop

/etc/init.d/mysqld start

Creamos una contraseña para el usuario root:

mysqladmin -u root password loggia12

Si tenemos un dispositivo bluetooth en nuestro computador instalamos tambien estos paquetes:

yum install bluez-utils bluez-libs bluez-libs-devel bluez-hcidump

Bajamos el paquete de Asterisk addons en la carpeta /usr/src:

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-addons-1.6...

lo descomprimimos:

tar -xf asterisk-addons-1.6.0.4.tar.gz

entramos en la carpeta recien creada

cd asterisk-addons-1.6.0.4

y compilamos

./configure

make

make install

creamos los archivos de muestra

make sampples

Ahora para que nuestra centralita tenga un registro de toda las llamadas en MySQL  tenemos que seguir este procedimiento.

Ahora creamos el database

mysqladmin create asteriskcdr -u root -pXXXXX

volvemos al cliente mysql esta vez utilizando el nombre usuario root y la clave sesamo

mysql -u root -pXXXXX

ahora creamos la tabla para registrar las llamadas en el database

mysql> use asteriskcdr

mysql> CREATE TABLE cdr (
  calldate datetime NOT NULL default '0000-00-00 00:00:00',
  clid varchar(80) NOT NULL default '',
  src varchar(80) NOT NULL default '',
  dst varchar(80) NOT NULL default '',
  dcontext varchar(80) NOT NULL default '',
  channel varchar(80) NOT NULL default '',
  dstchannel varchar(80) NOT NULL default '',
  lastapp varchar(80) NOT NULL default '',
  lastdata varchar(80) NOT NULL default '',
  duration int(11) NOT NULL default '0',
  billsec int(11) NOT NULL default '0',
  disposition varchar(45) NOT NULL default '',
  amaflags int(11) NOT NULL default '0',
  accountcode varchar(20) NOT NULL default '',
  uniqueid varchar(32) NOT NULL default '',
  userfield varchar(255) NOT NULL default ''
);

Ahora creamos un nuevo usuario y le damos todos los privilegios para manejar el database

mysql> GRANT ALL PRIVILEGES ON asteriskcdr.* TO asterisk IDENTIFIED BY 'sesamo';

mysql> flush privileges;

mysql> quit

Puse el nombre de usuario asterisk pero puede ser cualquiera.

Ahora lo unico que nos falta es anadir unas lineas en un archivo de configuracion de asterisk. Abrimos el archivo de texto con nano:

nano /etc/asterisk/cdr_mysql.conf

y pegamos esto:

[global]
hostname=localhost
dbname=asteriskcdr
table=cdr
password=sesamo
user=asterisk
port=3306
sock=/var/lib/mysql/mysql.sock

Listo

para ver si todo funciona arrancamos asterisk y desde la consola miramos si hay conexion:

/est/init.d/asterisk start

asterisk -rvvvvv

*CLI> cdr mysql status

debe aparecer algo parecido

Connected to asteriskcdr@localhost, port 3306 using table cdr for 45 seconds.
  Wrote 0 records since last restart.

 

Chan_mobile

Ahora vamos  a conectar nuestro celular a Asterisk.

Primero modificamos el archivo hcid.conf

mv /etc/bluetooth/hcid.conf hcid.conf.old

nano /etc/bluetooth/hcid.conf

y pegamos las siguientes lineas:

#
# HCI daemon configuration file.
#

# HCId options
options {
        autoinit yes;
        security auto;
        pairing multi;
        passkey "1234";
}

# Default settings for HCI devices
device {
        name "%h-%d";
        class 0x120104;
        iscan enable; pscan enable;
        lm accept;
        lp rswitch,hold,sniff,park;
}

Guardamos los cambios y arrancamos el servicio

/etc/init.d/bluetooth start

Iniciando los servicios de Bluetooth:                      [  OK  ]

Una vez que el servicio esté activo volvemos el computador visible a otros dispositivos bluetooth:

dbus-send --system --type=method_call --print-reply --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.SetMode string:discoverable

Desde el celular (dependiendo de la marca y modelo) buscamos otros dispositivos bluetooth y cuando aparece el nombre de nuestro computador lo seleccionamos y hacemos el "pairing" (lo asociamos). Cuando se nos preguntará la clave tendremos que digitar "1234" y configuramos esta asociacion como automatica.

Ahora buscamos el MAC address del dispositivo bluetooth del computador:

hcitool dev

deberia aparecer algo por el estilo:

        hci0    00:1F:E2:ED:5E:E9

Ahora abrimos el archivo de configuracion de asterisk para el chan_mobile y configuramos este dipositivo:

nano /etc/asterisk/mobile.conf

y copiamos el MAC address en esta linea:

[adapter]
id=blue
address=00:1F:E2:ED:5E:E9

Guardamos los cambios y volvemos a arrancar asterisk:

/etc/init.d/asterisk restart

entramos en la consola de asterisk y buscamos el celular:

asterisk -rvvvvvvvvvvvvvvvvvv

CLI> mobile search

el resultado será:

Address                 Name                           Usable Type    Port
00:25:48:6F:F1:00 Nokia E71                         Yes    Phone   1

Esto nos dirá el MAC Addres del celular, si es utilizable en asterisk y el puerto che tenemos que usar en la configuracion.

Volvemos al archivo del chan_mobile:

nano /etc/asterisk/mobile.conf

añadimos las siguientes lineas:

[Nokia E71]
address=00:25:48:6F:F1:00
port=1
context=incoming-celular
adapter=blue
group=1

Guardamos los cambios y arrancamos otra vez asterisk:

/etc/init.d/asterisk restart

entramos en la consola y miramos si el celular está conectado:

asterisk -rvvvvvvvvvvvvvvv

CLI> mobile show devices

ID              Address           Group Adapter         Connected State SMS
Nokia E71       00:25:48:6F:F1:00 1     blue            Yes        Free  No

Veremos como hacer llamadas desde asterisk usando el celular como gateway GSM cuando hablaremos del dialplan.

24 Comments

Pues ahora empiezo con esto

Buenas, espero que no te canses de mi jeje, pero ahora, después de tener más o menos cerrado el tema de TLS + SRTP necesito registrar las llamadas en una base de datos.

He estado mirando tu guía y la he seguido paso a paso adaptada a mi distribución (ubuntu).

El caso es que he instalado todo, mysql y los addons, pero no cuando no pongo el comando 'cdr mysql status' me dice que no existe el comando.

He probado con 'cdr status' y me dice lo siguiente:

Call Detail Record (CDR) settings
-----------------------------------------
Logging: Enabled
Mode: Simple
Log unanswered calls: No

* Registered Backends
---------------------------
csv
cdr-custom

Por lo que he leido, en Backends deberia aparecer mysql, pero no lo hace.

He repasado la instalación y creo que he hecho todos los pasos bien, incluso he verificado con make menuselect que está activado "app_addon_sql_mysql" y "cdr_addon_my_sql" y "res_config_mysql"

Ahora estoy trabajando con la versión 1.6.1 oficial y con los addons correspondientes.

¿alguna idea?

Un saludo y gracias

Configuracion Mysql

Para que podamos solucionar los problemas de las tareas que tu jefe te manda a hacer deberias siempre incluir la configuración de los archivos

prueba esto desde la consola:

CLI> cdr mysql status

y cuéntame que te aparece

porque creo que no estas conectado a la base de datos

No es mala idea que mires también los logs en la carpeta /var/log/asterisk

Y no seria también mala idea que le digas a tu jefe que haga una donación ya que desde aquí lo estamos ayudando bastante :)

Chao

Pues te estás equivocando ;),

Pues te estás equivocando ;), no tengo jefe, simplemente estoy haciendo el Proyecto Fin de Carrera y lo estoy haciendo sobre VoIP implementando una solución segura de VoIP y lo estoy haciendo a través de Asterisk, como habrás podido imaginar.

Necesito guardar las llamadas en una base de datos para establecer credenciales de confianza entre los interlocutores y evitar el SPIT.

Como te he dicho, cuando pongo el comando 'cdr mysql status' me dice que no existe el comando.

La configuración de cdr_mysql.conf es:

[global]
hostname=localhost
dbname=cdrdb
table=cdr
password=xxxx
user=asterisk
port=3306
sock=/var/run/mysqld/mysqld.sock
userfield=1

Bueno, lo dicho, espero que no te molesten mis preguntas, considero que todos aprendemos de ellas que al final es de lo que se trata y aunque no sé si podré hacer una donación ten por seguro que la guía para SRTP la tienes seguro.

Un saludo.

No estoy equivocado :)

Tu me hablaste de un jefe, no sabia que era tu proyecto de grado :)

De todas formas considera que las instrucciones escritas en la mayoria de las guias tienen como referencia la distribución Centos y Asterisk 1.6.X

si cuando digitas el comando cdr mysql status no te aparece nada es porque el modulo no está instalado.

O mysql no está corriendo o tuviste algún problema de compilación de los asterisk-addons.

Desde la consola de asterisk intenta esto:

CLI> module unload cdr_addon.mysql

y luego:

CLI> module load cdr_addon.mysql

Si te salen errores es porque hay algo que no está funcionando bien.

Para arranciar mysql (en Centos):

/etc/init.d/mysqld start

para que arranque al iniciar linux:

chkconfig mysqld on

Si tu distribución no es Centos comenta esta linea en cdr_mysql.conf

;sock=/var/run/mysqld/mysqld.sock

o indica la exacta ubicación y nombre del socket de MySQL

Una duda: instalaste el paquete mysql-server?

Cuéntame
Chao

Bueno, pues aclarado lo del

Bueno, pues aclarado lo del jefe ;) (ha fallado la confirmación de tu correo, no sé por qué). He probado a descargar y cargar el módulo cdr_addon.mysql y ahí es donde me falla por lo que obviamente algo está fallando.

Al intentar descargarlo me dice "unload failed, 'cdr_addon.mysql' could not be found"

Si intento cargarlo me dice "Error loading module 'cdr_addon_mysql': /usr/lib/asterisk/modules/cdr_addon.mysql.so: cannot open shared object file: No such file or directory" y efectivamente, no existe ni siquiera la carpeta "modules".

He de decir que he realizado el "./configure" "make menuselect ", "make" y "make install" todos con éxito y además tengo iniciado mysql con el comando "/etc/init.d/mysql start"

La distribución que uso es ubuntu y algo se me escapa porque no consigo que funcione. He buscado información sobre el problema que me ocurre y no encuentro nada.

Un saludo

Bueno, he encontrado el

Bueno, he encontrado el problema, pero no la solución.

Investigando en profundidad, he comprobado que el fichero que no encuentra /usr/lib/asterisk/modules/cdr_addon.mysql.so no lo encuentra porque en realidad el fichero se llama cdr_addon_mysql.so. Está claro que tengo dos opciones:
1. Cambiarle el nombre al fichero, no se el impacto que tendrá, pero será lo que probaré primero.
2. Cambiar la referencia al fichero, pero no tengo ni idea de dónde puede estar.

Pongo esto para que quede para la posteridad en caso de que se pueda solucionar y quizá a alguien algún día le ayude. Y en caso de que me podáis orientar, pues mejor.

Salu2

Bueno, he cambiado el nombre

Bueno, he cambiado el nombre del fichero según indicaba en la opción 2 y apartentemente ahora sí que funciona el comando "cdr mysql status"

No me parece la solución más ortodoxa, pero salvo que alguien me indique dónde cambiar la referencia a ese fichero (no la encuentro por ninguna parte) es lo que se me ha ocurrido.

Seguiré trabajando y a ver dónde encuentro el siguiente obstáculo.

Salu2

Estoy perdiendo la brujula

No se que me pasa pero creo que me estoy agotando.
El modulo era efectivamente cdr_addon_mysql solo que hice un error a escribirlo y puse cdr_addon.mysql
Vuelve a renombrarlo y cárgalo desde la consola.
Debería funcionarte siempre y cuando no haya otro tipo de error.
Perdona la equivocación del jefe y del nombre del modulo.
Prometo que la próxima vez estaré más atento en lo que escribo :)
Chao

¿Disculparte?

Aún encima perdonarte yo a ti? para nada. Tengo que agradecer el esfuerzo desinteresado de ayudar a la gente y entender que obviamente todos somos humanos.

La verdad es que ni se me ocurrió que podía estar mal tu guía, asumí que mi fichero estaba mal y lo cambié.

Muchas gracias por todo y ya te iré contando.

Salu2

P.D. Quizá sea una abuso, pero si puedes, échale un vistazo al último comentario del artículo de TLS a ver qué se te ocurre.

P.D.2 Prometo que cuando esté mejor de tiempo te envío una guía con todos los pasos que he seguido para que quede para la posteridad.

Problemas con chan_mobile

Hola.

Yo tengo un problema con chan_mobile, tras varias horas que lo tengo funcionando la maquina donde esta instalado se pasma y no responde hasta que la reinicio con botonazo.
Ya he probado con varias distribuciones y versiones de asterisk pero el resultaso siempre es el mismo.

Alguien sabe que puedo hacer.

chan_mobile

hola, disculpame q te moleste.
queria saber si me podrias ayudar a ver como se hace para habilitar el chan_mobile, o descargarlo.
yo estoy usando asterisknow (ultima version) y al no tener el chan_mobile y sus utilidades no puedo lograr conectar el celular via bluetooth a la pc.
muchas gracias
damian

Re: chan_mobile

Para habilitar chan_mobile tienes que instalar asterisk 1.6.X y asterisk-addons 1.6.X Como no conozco que versión de asterisk usa asterisknow no sabría decirte.

Coméntame...

respuesta

bueno termine instalando el asterisk 1.6.x y el asterisk adoons... el problema q tengo es el siguiente: cuando entro al make menuselect... chan_mobile me aparece asi: "XXX chan_mobile" y mas abajo me dice: Bluetooth Mobile Device Channel Driver
Depends on: bluetooth(E).
la verdad estoy perdidismo... ya van 3 dias q pruebo y no logro ejecutarlo y se me van acabando los dias de plazo del trabajo.
espero que me puedas ayudar. gracias

Re: respuesta

Si estas usando CentOS instala todos los paquetes relacionados con bluetooth:

yum install blue*

y luego compilas

Si sigue teniendo problemas contactame directamente para, si quieres, le eche una mirada a tu servidor.
Saludos

como dato cargue y descague

como dato cargue y descague el modulo cdr_addon_mysql

pero me arroja el siguiente error

 module load cdr_addon_mysql.so
  == Parsing '/etc/asterisk/cdr_mysql.conf':   == Found
[Mar  4 16:31:49] ERROR[6548]: cdr_addon_mysql.c:523 my_load_module: Failed to connect to mysql database asteriskcdr on localhost.
 Loaded cdr_addon_mysql.so => (MySQL CDR Backend)

ayuddaaaa

 

Re: cdr mysql

Revisa bien el archivo cdr_mysql.conf en la carpeta /etc/asterisk porque es problema reside ahi.

O, si quieres, pegalo aqui indicando distribución linux, version de Asterisk.

Saludos

chan_mobile

Hola tengo el mismo problema que tu, ya tengo semanas y no logro instalar chan_mobile en mi asterisknow, lograste instalarlo ? ... lo que intente yo es bajarme asterisk_addons, instalar algunas librerias , luego complilarlo y al darle el "make" me arroja varios errores, me alegra que otros  ya  disfrutan de lo que permite chan_mobile y a mi aun no me sale, ayudenme porfa o alguna sugerencia!. Gracias

chan_mobile

Saludos

Al intentar instalar el addons-1.6.2.1 no me dejaba instalar chan_mobile "Depends on: bluetooth(E)"

instale las dependencias de bluetooth:

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

segun este tutorial:

http://info.linuxmall.cl/wiki/index.php/Conectar_Asterisk_a_la_red_GSM_-_chan_mobile

Exito a todos, ya pude instalar el chan_mobile para mi asterisk 1.6.2.

 

Re: chan_mobile

Se te agradece mucho si la proxima vez evitas cualquier referencia a cualquier religión.

Gracias

mobileee

hola
gracias por tu ayuda... pude hacer conectar el celular...
ahora voy por el siguiente paso... realizar y recibir llamadas...
tenes idea como se hace o un tutorial para hacerlo?
graciass
damian

No me funciona el mysql

Hola, antes de preguntar, darte las gracas por  tu pagina, he seguido todos los pasos para instalar asterisk pero cuando hago la instuccion

cdr mysql status

me arroja lo siguiente  

 Not currently connected to a MySQL server.

Disculpa si la pregunta es muy obvia pero lei el tema y me interso, lo he tratado de instalar en una maquina virtual para probarlo

 

Chan_mobile - El resultado de "mobile search"

Buenas tardes,

He seguido el tutorial de Chan_mobile, pero no me va bien cuando debo buscar el celular. Pues lo encuentra pero dice:

Address           Name                           Usable Type    Port
00:21:FE:00:03:46 Nokia E71k                     No     Headset 0

Podrían ayudarme a resolverlo?

Gracias

Agregar canal H.323

Hola,  tengo una duda con respecto a como poder activar el protocolo H.323 en los servicios de asterisk, quisiera saber si es necesario realizar una configuración extra al momento instalar o si se puede agregar con asterisk ya instalado, estoy utilizando CentOS 5.5 y asterisk 1.6.2. Espero puedan resolver mi duda y muchas gracias de antemano.

Subscribe to Comments for "Asterisk Addons 1.6.X - Mysql, MP3, H323, Chan_mobile" Subscribe to VozToVoice - All comments