Asterisk 13 - Configuración ARA (Asterisk Realtime Arquitecture)

Después de instalar Asterisk 13 en CentOS 7.2 64bit, veremos como crear las tablas para trabajar  con Asterisk Realtime Arquitecture (ARA) y de esta forma guardar toda una serie de objetos en una base de datos. Estos son:

  • Extensiones SIP (modulo chan_sip y/o chan_pjSIP)
  • Dialplan
  • Colas de espera
  • Extensiones IAX2
  • Música en espera
  • Conferencias audio (aplicación MeetMe)
  • Buzones de voz

Iniciamos MariaDB:

systemctl start mariadb

Lo configuramos para que arranque con el sistema:

systemctl enable mariadb

Lo ponemos en seguridad:

mysql_secure_installation

image

image

Desde la versión 12 la creación de las tablas para Asterisk Realtime se realiza utilizando alembic. Con la misma aplicación es posible migrar a la ultima versión de Asterisk y actualizar las tablas creadas con la versión 11 o anteriores. Primero se instalan unas dependencias:

yum install MySQL-python python-pip -y

Luego se instala alembic vía PIP:

pip install alembic

Como la creación/actualización de las tabla se basa en un archivo de configuración, lo modificamos:

cd /usr/src/asterisk-13.6.0/contrib/ast-db-manage/
mv config.ini.sample config.ini
nano config.ini

Cambiamos esta línea:

sqlalchemy.url = mysql://user:pass@localhost/asterisk

para que quede:

sqlalchemy.url = mysql://root:sesamo@localhost/asterisk

La sintaxis de la línea es: motor de base de datos, usuario, contraseña, dominio/IP, base de datos. Con esta linea se crea la conexión a la base de datos. Guardamos los cambios y pasamos a la creación de la base de datos:

mysql -u root -psesamo

MariaDB [(none)]> create database asterisk;

Salimos de MariaDB:

MariaDB [(none)]> quit

creamos/actualizamos las tablas con el siguiente comando:

alembic -c config.ini upgrade head

Volvemos a entrar en el cliente MariaDB:

mysql -u root -psesamo

base de datos Asterisk:

MariaDB [(none)]> use asterisk

Lista de la tablas:

MariaDB [asterisk]> show tables;

image

Creamos un usuario que tenga los privilegios suficientes para trabajar con la base de datos creada:

MariaDB [asterisk]> grant all privileges on asterisk.* to 'asterisk'@'localhost' identified by 'sesamo';
Query OK, 0 rows affected (0.00 sec)

Salimos de MariaDB:

MariaDB [asterisk]> quit

Pasamos a la configuración de ODBC y Asterisk para que el Realtime funcione correctamente El archivo odbcinst.ini, presente en la carpeta etc, lo dejamos con la configuración predefinida. Creamos el archivo odbc.ini donde configuraremos la conexión a la base de datos asterisk:

nano /etc/odbc.ini

copiamos las siguientes líneas:

[asterisk]
Description = MySQL Asterisk
Driver = MySQL
Database = asterisk
Server = localhost
User = asterisk
Password = sesamo
Port = 3306
Option = 3

Guardamos los cambios y averiguamos que la conexión esté funcionando correctamente:

isql asterisk asterisk sesamo

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> quit

Perfecto. Ahora pasamos a la configuración de Asterisk que se basa en dos archivos:

nano /etc/asterisk/res_odbc.conf

al final del archivo copiamos las siguientes líneas:

[asterisk]
enabled => yes
dsn => asterisk
username => asterisk
password => sesamo
pre-connect => yes
sanitysql => select 1
idlecheck => 3600
share_connections => yes
limit => 5
connect_timeout => 5
negative_connection_cache => 600

  • [asterisk]: etiqueta que da inicio al bloque de configuración
  • enabled: yes, bloque activo; no, bloque inactivo
  • dsn: se pone el nombre de la etiqueta con que inicia el bloque configurado en el archivo odbc.ini
  • username: usuario que tiene acceso a la base de datos indicada en el archivo odbc.ini bajo la etiqueta definida en el parámetro anterior
  • password: contraseña del usuario indicado en el parámetro anterior
  • pre-connect: yes, se creará una conexión a la base de datos al iniciar Asterisk; no, la conexión se creará solamente cuando se necesite
  • sanitysql: se utiliza para corroborar que la conexión sigue activa. Valor predefinido "select 1"
  • idlecheck: si una conexión se encuentra en modo descanso, después de los segundos indicados se necesitará "renovar" la conexión
  • share_connections: yes, la misma conexión se utilizará para las distintas consultas; no, se creará una conexión para cada consulta
  • limit: si el parámetro anterior está configurado con no, en este parámetro se indica el numero máximo de conexiones simultaneas que se podrán crear con la base de datos indicada
  • connect_timeout: la duración, en segundos, del intento de conexión antes de considerar la conexión misma muerta
  • negative_connection_cache: cuando una conexión falla, se utilizará este parámetro para definir el tiempo que se guardarán los datos en la caché de memoria antes de intentar una nueva conexión

Guardamos los cambios pasamos al segundo archivo:

nano /etc/asterisk/extconfig.conf

Modificamos este bloque:

;iaxusers => odbc,asterisk
;iaxpeers => odbc,asterisk
;sippeers => odbc,asterisk
;sipregs => odbc,asterisk ; (avoid sipregs if possible, e.g. by using a view)
;ps_endpoints => odbc,asterisk
;ps_auths => odbc,asterisk
;ps_aors => odbc,asterisk
;ps_domain_aliases => odbc,asterisk
;ps_endpoint_id_ips => odbc,asterisk
;voicemail => odbc,asterisk
;extensions => odbc,asterisk
;meetme => mysql,general
;queues => odbc,asterisk
;queue_members => odbc,asterisk
;queue_rules => odbc,asterisk
;acls => odbc,asterisk
;musiconhold => mysql,general
;queue_log => mysql,general

para que quede:

iaxusers => odbc,asterisk,iaxfriends
iaxpeers => odbc,asterisk,iaxfriends
sippeers => odbc,asterisk,sippeers
ps_aors => odbc,asterisk,ps_aors
ps_auths => odbc,asterisk,ps_auths
ps_contacts => odbc,asterisk,ps_contacts
ps_domain_aliases => odbc,asterisk,ps_domain_aliases
ps_endpoint_id_ips => odbc,asterisk,ps_endpoint_id_ips
ps_endpoints => odbc,asterisk,ps_endpoints
ps_globals => odbc,asterisk,ps_globals
ps_registrations => odbc,asterisk,ps_registrations
ps_subscription_persistence => odbc,asterisk,ps_subscription_persistence
ps_systems =>  odbc,asterisk,ps_systems
ps_transports => odbc,asterisk,ps_transports
voicemail => odbc,asterisk,voicemail
extensions => odbc,asterisk,extensions
meetme => mysql,general,meetme
queues => odbc,asterisk,queues,
queue_members => odbc,asterisk,queue_members
queue_rules => odbc,asterisk,queue_rules
;acls => odbc,asterisk
musiconhold => mysql,general,musiconhold
;queue_log => mysql,general

La sintaxis de cada línea es: objeto a guardar, motor de base de datos, nombre base de datos, tabla. Guardamos los cambios y reiniciamos Asterisk

service asterisk restart

accedemos a la consola de Asterisk:

asterisk -rvvvvvvvvvvvv

Averiguamos que la conexión esté funcionando correctamente:

CLI> odbc show

ODBC DSN Settings
-----------------

  Name:   asterisk
  DSN:    asterisk
    Last connection attempt: 1969-12-31 19:00:00
  Pooled: No
  Connected: Yes

Quedan por fuera las tablas para guardar la ACL (Access Control List) y los LOG de las colas que veremos posiblemente en otro articulo.

Vota el Articulo: 

Sin votos (todavía)
Evalúa la calidad del articulo
Suscribirse a Comentarios de "Asterisk 13 - Configuración ARA (Asterisk Realtime Arquitecture)" Suscribirse a VozToVoice - Todos los comentarios