Asterisk MySQL
.:[ Asterisk IPBX ]:.
Inter-Asterisk eXchange | MOH Musique d'Attente
Prérequis
Vous devez disposer d'une machine avec les logiciels suivants :
- Asterisk 1.4.X / 1.6.X (configuration conseillée c.f. Asterisk Installation);
- Serveur web Apache (c.f. Apache_Installation sauf pour Ubuntu/Debian);
- Application PHPMyAdmin installée et configurée (c.f. PHPMyAdmin sauf pour Ubuntu/Debian).
Installation
Ubuntu / Debian
Il faut installer le module asterisk-mysql :
|
|
Pour que le serveur asterisk puisse proposer les fonctions realtime, il est nécessaire d'installer le module complémentaire asterisk-addon, disponible depuis le site du développeur Digium (http://digium.com). Enfin, l'administration du serveur mysql étant plus aisé avec une interface graphique, on utilisera phpMyAdmin. Cette solution nécessite un serveur web comme Apache. Sous Ubuntu, l'installation du module phpmyadmin entraîne automatiquement l'installation des autres composantes :
|
|
L'assistant d'installation nécessitera de paramètrer le serveur MySQL : définir le mot de passe de l'utilisateur root. Ensuite l'accès à PHPMyAdmin depuis un navigateur web s'effectue directement depuis cette url : http://127.0.0.1/phpmyadmin/ (note: remplacez 127.0.0.1 par l'IP du serveur si vous n'accédez pas à l'interface depuis ce dernier).
Autre distribution
Il est possible d'installer indépendament les modules. Ainsi il faudra veiller à installer :
- le serveur web composé de Apache, PHP et MySQL;
- PHPMyAdmin, l'utilitaire de gestion de bases de données MySQL.
Ce sont toutes des applications OpenSources pouvant être téléchargées depuis Internet.
Activer MySQL pour Asterisk
Pour activer MySQL dans Asterisk, il est nécessaire d'éditer plusieurs fichiers de configuration :
- pour la connexion par Asterisk aux bases de données MySQL;
- pour la compréhension des requêtes SQL;
- pour que les fichiers de configuration puisse rechercher également l'information dans les bases.
Ainsi les bases de données deviendront une extension aux fichiers de configuration.
cdr_mysql.conf
Ce fichier est spécifique au module de journalisation des appels (Call Data Record).
Pour que le modules puisse fonctionner, il faut y renseigner les paramètres de configuration à la base de données :
[global] hostname=localhost dbname=asterisk table=nom_de_la_table password=motDePasse user=login port=3306 sock=/var/run/mysqld/mysqld.sock userfield=1
extconfig.conf
Pour que les différents fichiers de configuration puisse également chercher des éléments de configuration dans les bases SQL, il faut renseigner comme ceci le fichier :
agents => mysql,general,queue_agent_table sipusers => mysql,general,sip sippeers => mysql,general,sip voicemail => mysql,general,users queues => mysql,general,queue_table queue_members => mysql,general,queue_member_table
Où :
- agents => : désigne le nom du fichier de configuration;
- mysql : le type de la base de données;
- general : le contexte de définition des informations de connexion à la base;
- queue_agent_table : le nom de la table renfermant les paramètres ainsi que les valeurs affectées pour chaque enregistrement.
res_mysql.conf
Il faut également renseigner dans ce fichier les paramètres de connexion à la base :
[general] dbhost = localhost dbname = asterisk dbuser = login dbpass = motDePasse dbport = 3306 dbsock = /var/run/mysqld/mysqld.sock
extensions.conf
Il faur rajouter les informations de connexion à la base de données (DBHOST, DBNAME, DBUSER, DBPASS) dans ce fichier de configuration dans le context [globals] à la fin :
[globals] ... DBHOST=localhost DBNAME=asterisk DBUSER=login DBPASS=motDePasse
voicemail.conf
Il faur rajouter les informations de connexion à la base de données (DBHOST, DBNAME, DBUSER, DBPASS) dans ce fichier de configuration dans le context [general] en début :
[general] DBHOST=localhost DBNAME=asterisk DBUSER=login DBPASS=motDePasse
|
Ceci est le fichier de configuration pour les boîtes vocales des utilisateurs. |
Requêtes
Synthax
Les requêtes MySQL s'implémentent dans le DialPlan du fichier de configuration extensions.conf de la manière suivante :
exten => 1,1,NoOp(######## Requête MySQL ########) exten => 1,2,MYSQL(Connect connid ${DBHOST} ${DBUSER} ${DBPASS} exten => 1,3,MYSQL(Query resultid ${connid} <Requête SQL>) exten => 1,4,MYSQL(Fetch fetchid ${resultid} Resultat) ; le résultat de la requête est stocké dans la variable Resultat. exten => 1,5,MYSQL(Disconnect ${connid})
Récupérer des données SELECT
En reprenant l'exemple ci-dessus :
exten => s,1,MYSQL(Connect connid ${DBHOST} ${DBUSER} ${DBPASS} ${DBNAME}) exten => s,2,MYSQL(Query resultid ${connid} SELECT Value FROM myconf WHERE Param="AcceptAnon" AND Line="${Line}") exten => s,3,MYSQL(Fetch fetchid ${resultid} AcceptAnon) exten => s,4,MYSQL(Disconnect ${connid}) exten => s,5,NoOp(Les appels anonymes sont-ils autorisés ? ${Resultat})