Asterisk-MySQL via ODBC

Publié le par BORY DIALLO

Tout fan d'Asterisk sait que ce dernier dispose d'un fichier appelé sip.conf lui servant de base d'infos pour stocker les comptes utilisateurs.

Le but de ce TP est de se passer de ce fichier pour utiliser une base de données SQL qui abritera les comptes utilisateurs et donc sera reliée à Asterisk par l'intermédiaire d'un module appelé ODBC sur Ubuntu 14.

 

Installation des prérequis ODBC et MySQL

# apt install mysql-server libmysqlclient-dev unixodbc-dev libmyodbc

 

Prérequis d'Asterisk

# apt-get install make libmysqlclient-dev unixodbc-dev g++ bison libcurl3 libcurl3-gnutls libcurl4-openssl-dev libssl-dev ncurses-term libncurses5-dev libjansson-dev libxml2-dev sqlite3 libsqlite3-dev libopus-dev libopusfile-dev libopus-dev libvpx-dev opus-tools libmp3lame-dev libmpg123-0 autoconf -y

 

    1 - Installation d'Asterisk

# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz

 

On le désarchive dans un dossier de choix

Je préfère /usr/local/src

# tar -xzf asterisk-13-current.tar.gz -C /usr/local/src/
# cd /usr/local/src/asterisk-13.34.0
# contrib/scripts/install_prereq install

# ./bootstrap.sh
# ./configure

Qui doit finir par un truc de ce genre

 

    2 - Activer la prise en charge du module ODBC par Asterisk

# make menuselect

Activer res_odbc et  dans Ressource Modules

res_odbc_transaction toujours dans Ressource Modules

ODBC_STORAGE dans Voicemail Build Options

Sauvegarder et sortir

# make && make install

# make config && make samples

 

Étape suivante : S'occuper de la base de données

  • Éditer le fichier asterisk.sql pour adapter l'utilisateur et le mot de passe à votre situation.
  • Exécuter le script. Chez moi, il est sur le Bureau

 

La base de données devrait être générée !

 

Il faudra ensuite l'alimenter

INSERT INTO sipusers (name, defaultuser, host, sippasswd, fromuser, fromdomain, mailbox) VALUES ('101', '101', 'dynamic', '101', '101', 'ec2lt.sn', '101');
INSERT INTO sipusers (name, defaultuser, host, sippasswd, fromuser, fromdomain, mailbox)
VALUES ('102', '102', 'dynamic', '102', '102', 'ec2lt.sn', '102');
INSERT INTO sipusers (name, defaultuser, host, sippasswd, fromuser, fromdomain, mailbox)
VALUES ('103', '103', 'dynamic', '103', '103', 'ec2lt.sn', '103');
INSERT INTO sipregs(name) VALUES('101');
INSERT INTO sipregs(name) VALUES('102');
INSERT INTO sipregs(name) VALUES('103');
INSERT INTO voicemail(context, mailbox, password) VALUES ('default', '101', '1234');
INSERT INTO voicemail(context, mailbox, password) VALUES ('default', '102', '1234');
INSERT INTO voicemail(context, mailbox, password) VALUES ('default', '103', '1234');

 

Tout comme le schéma qui a permis de générer la base de données et les tables, il serait mieux de mettre ces renseignements dans un fichier.

Dans notre cas, le fichier s'appelle users.sql et est stocké dans ~/Documents et l'exécuter.

 

Étape suivante : Adapter le module ODBC à la situation

  • Le fichier /etc/odbc.ini

[MySQL-asterisk]
Description = MySQL Asterisk database
Trace = Off
TraceFile = stderr
Driver = MySQL
SERVER = localhost

USER = asterisk
PASSWORD = passer
PORT = 3306
DATABASE = asterisk

  • Le fichier /etc/odbcinst.ini

[Default]
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1 ;
UsageCount = 2

  • Le fichier /etc/asterisk/res_odbc.conf

[asterisk]
enabled => yes
dsn => MYSQL-asterisk;
username => asterisk
password => passer
pre-connect => yes

  • Le fichier /etc/asterisk/extconfig.conf

[settings]
sipusers => odbc,asterisk,sipusers
sippeers => odbc,asterisk,sipusers
sipregs => odbc,asterisk,sipregs
voicemail => odbc,asterisk,voicemail

  • Le fichier /etc/asterisk/sip.conf

Il faudra juste dé-commenter le paramètre suivant :

rtcachefriends=yes

  • Le fichier /etc/asterisk/extensions.conf

[public]
exten => _1XX,1,Dial(SIP/${EXTEN},20,tr)
exten => _1XX,n,Voicemail(${EXTEN},u)
exten => _1XX,n,Hangup
exten => _1XX, 101, Voicemail (${EXTEN},b)
exten => _1XX, 102, Hangup

 

Redémarrer Asterisk

 

Test de fonctionnement

L'utilisateur 101 se connecte depuis son softphone

Réaction du serveur :

 

L'utilisateur 102 se connecte aussi

 

Voici une communication entre les utilisateurs 101 et 103

 

 

 

Vu les appels entre softphones, nous constatons que la config est bien faite !

Publié dans Téléphonie, Réseaux

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article
B
Bonjour M. DIALLO
finalement j'ai pu installer le package libmyodbc en ajoutant les signes sur /etc/apt/sources.list
deb http://sn.archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://sn.archive.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse
deb http://sn.archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

apres j'ai fait un
apt update && apt install -y libmyodc
Répondre
B
Très bon boulot M. N'DIAYE

La technologie évolue à la vitesse de la lumière. Donc la vérité d'hier n'est pas forcément celle d'aujourd'hui. Merci bcp
N
Bonjour
Quand est ce que vous avez réalisé ce tuto car mylibodbc est devenu obselete impossibble de l'installer
Répondre
B
Comme tu l'as vu, c'est en juillet 2020.
J'ai utilisé ubuntu 14