Asterisk MySQL : Différence entre versions

De Wiki NCad
Aller à : navigation, rechercher
(res_mysql.conf)
(Prérequis)
 
(21 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 +
{{ Asterisk }}
 +
 
= Prérequis =
 
= Prérequis =
  
Vous devez disposer d'une machine avec les logiciels suivants :
+
* Asterisk doit être compilé avec le support mysql.
* 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 =
+
= Création des tables =
  
== Ubuntu / Debian ==
+
* La table '''cdr''' contiendra les '''statistiques d'appels''' du serveur.
  
Il suffit de saisir cette ligne de commande dans le terminal afin d'installé la couche MySQL pour Asterisk ainsi que le serveur web et PHPMyAdmin:
+
CREATE TABLE cdr (
{{Box Console | objet=sudo apt-get install asterisk-mysql phpmyadmin}}
+
        calldate datetime NOT NULL default '0000-00-00 00:00:00',
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)''.
+
        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 ''
 +
);
  
== Autre distribution ==
+
* La table '''sipfriends''' contiendra les '''faisceaux SIP''' ainsi que les '''utilisateurs SIP'''.
  
Il est possible d'installer indépendament les modules. Ainsi il faudra veiller à installer :
+
CREATE TABLE `sipfriends` (
* '''le serveur web''' composé de Apache, PHP et MySQL;
+
      `id` int(11) NOT NULL AUTO_INCREMENT,
* '''PHPMyAdmin''', l'utilitaire de gestion de bases de données MySQL.
+
      `name` varchar(10) NOT NULL,
Ce sont toutes des applications OpenSources pouvant être téléchargées depuis Internet.
+
      `ipaddr` varchar(15) DEFAULT NULL,
 +
      `port` int(5) DEFAULT NULL,
 +
      `regseconds` int(11) DEFAULT NULL,
 +
      `defaultuser` varchar(10) DEFAULT NULL,
 +
      `fullcontact` varchar(35) DEFAULT NULL,
 +
      `regserver` varchar(20) DEFAULT NULL,
 +
      `useragent` varchar(20) DEFAULT NULL,
 +
      `lastms` int(11) DEFAULT NULL,
 +
      `host` varchar(40) DEFAULT NULL,
 +
      `type` enum('friend','user','peer') DEFAULT NULL,
 +
      `context` varchar(40) DEFAULT NULL,
 +
      `permit` varchar(40) DEFAULT NULL,
 +
      `deny` varchar(40) DEFAULT NULL,
 +
      `secret` varchar(40) DEFAULT NULL,
 +
      `md5secret` varchar(40) DEFAULT NULL,
 +
      `remotesecret` varchar(40) DEFAULT NULL,
 +
      `transport` enum('udp','tcp','udp,tcp','tcp,udp') DEFAULT NULL,
 +
      `dtmfmode` enum('rfc2833','info','shortinfo','inband','auto') DEFAULT NULL,
 +
      `directmedia` enum('yes','no','nonat','update') DEFAULT NULL,
 +
      `nat` enum('yes','no','never','route') DEFAULT NULL,
 +
      `callgroup` varchar(40) DEFAULT NULL,
 +
      `pickupgroup` varchar(40) DEFAULT NULL,
 +
      `language` varchar(40) DEFAULT NULL,
 +
      `allow` varchar(40) DEFAULT NULL,
 +
      `disallow` varchar(40) DEFAULT NULL,
 +
      `insecure` varchar(40) DEFAULT NULL,
 +
      `trustrpid` enum('yes','no') DEFAULT NULL,
 +
      `progressinband` enum('yes','no','never') DEFAULT NULL,
 +
      `promiscredir` enum('yes','no') DEFAULT NULL,
 +
      `useclientcode` enum('yes','no') DEFAULT NULL,
 +
      `accountcode` varchar(40) DEFAULT NULL,
 +
      `setvar` varchar(40) DEFAULT NULL,
 +
      `callerid` varchar(40) DEFAULT NULL,
 +
      `amaflags` varchar(40) DEFAULT NULL,
 +
      `callcounter` enum('yes','no') DEFAULT NULL,
 +
      `busylevel` int(11) DEFAULT NULL,
 +
      `allowoverlap` enum('yes','no') DEFAULT NULL,
 +
      `allowsubscribe` enum('yes','no') DEFAULT NULL,
 +
      `videosupport` enum('yes','no') DEFAULT NULL,
 +
      `maxcallbitrate` int(11) DEFAULT NULL,
 +
      `rfc2833compensate` enum('yes','no') DEFAULT NULL,
 +
      `mailbox` varchar(40) DEFAULT NULL,
 +
      `session-timers` enum('accept','refuse','originate') DEFAULT NULL,
 +
      `session-expires` int(11) DEFAULT NULL,
 +
      `session-minse` int(11) DEFAULT NULL,
 +
      `session-refresher` enum('uac','uas') DEFAULT NULL,
 +
      `t38pt_usertpsource` varchar(40) DEFAULT NULL,
 +
      `regexten` varchar(40) DEFAULT NULL,
 +
      `fromdomain` varchar(40) DEFAULT NULL,
 +
      `fromuser` varchar(40) DEFAULT NULL,
 +
      `qualify` varchar(40) DEFAULT NULL,
 +
      `defaultip` varchar(40) DEFAULT NULL,
 +
      `rtptimeout` int(11) DEFAULT NULL,
 +
      `rtpholdtimeout` int(11) DEFAULT NULL,
 +
      `sendrpid` enum('yes','no') DEFAULT NULL,
 +
      `outboundproxy` varchar(40) DEFAULT NULL,
 +
      `callbackextension` varchar(40) DEFAULT NULL,
 +
      `registertrying` enum('yes','no') DEFAULT NULL,
 +
      `timert1` int(11) DEFAULT NULL,
 +
      `timerb` int(11) DEFAULT NULL,
 +
      `qualifyfreq` int(11) DEFAULT NULL,
 +
      `constantssrc` enum('yes','no') DEFAULT NULL,
 +
      `contactpermit` varchar(40) DEFAULT NULL,
 +
      `contactdeny` varchar(40) DEFAULT NULL,
 +
      `usereqphone` enum('yes','no') DEFAULT NULL,
 +
      `textsupport` enum('yes','no') DEFAULT NULL,
 +
      `faxdetect` enum('yes','no') DEFAULT NULL,
 +
      `buggymwi` enum('yes','no') DEFAULT NULL,
 +
      `auth` varchar(40) DEFAULT NULL,
 +
      `fullname` varchar(40) DEFAULT NULL,
 +
      `trunkname` varchar(40) DEFAULT NULL,
 +
      `cid_number` varchar(40) DEFAULT NULL,
 +
      `callingpres` enum('allowed_not_screened','allowed_passed_screen','allowed_failed_screen','allowed','prohib_not_screened','prohib_passed_screen','prohib_failed_screen','prohib') DEFAULT NULL,
 +
      `mohinterpret` varchar(40) DEFAULT NULL,
 +
      `mohsuggest` varchar(40) DEFAULT NULL,
 +
      `parkinglot` varchar(40) DEFAULT NULL,
 +
      `hasvoicemail` enum('yes','no') DEFAULT NULL,
 +
      `subscribemwi` enum('yes','no') DEFAULT NULL,
 +
      `vmexten` varchar(40) DEFAULT NULL,
 +
      `autoframing` enum('yes','no') DEFAULT NULL,
 +
      `rtpkeepalive` int(11) DEFAULT NULL,
 +
      `call-limit` int(11) DEFAULT NULL,
 +
      `g726nonstandard` enum('yes','no') DEFAULT NULL,
 +
      `ignoresdpversion` enum('yes','no') DEFAULT NULL,
 +
      `allowtransfer` enum('yes','no') DEFAULT NULL,
 +
      `dynamic` enum('yes','no') DEFAULT NULL,
 +
      PRIMARY KEY (`id`),
 +
      UNIQUE KEY `name` (`name`),
 +
      KEY `ipaddr` (`ipaddr`,`port`),
 +
      KEY `host` (`host`,`port`)
 +
);
  
= Activer MySQL pour Asterisk =
+
* La table '''voicemail_users''' contiendra les boîtes vocales des utilisateurs.
  
Pour activer MySQL dans Asterisk, il est nécessaire d'éditer plusieurs fichiers de configuration :
+
CREATE TABLE `voicemail_users` (
* pour la connexion par Asterisk aux bases de données MySQL;
+
  `uniqueid` int(11) NOT NULL auto_increment,
* pour la compréhension des requêtes SQL;
+
  `customer_id` int(11) NOT NULL default '0',
* pour que les fichiers de configuration puisse rechercher également l'information dans les bases.
+
  `context` varchar(50) NOT NULL default '',
Ainsi les bases de données deviendront une extension aux fichiers de configuration.
+
  `mailbox` int(5) NOT NULL default '0',
 +
  `password` varchar(10) NOT NULL default '0',
 +
  `fullname` varchar(50) NOT NULL default '',
 +
  `email` varchar(50) NOT NULL default '',
 +
  `pager` varchar(50) NOT NULL default '',
 +
  `stamp` timestamp(14) NOT NULL,
 +
  PRIMARY KEY (`uniqueid`),
 +
  KEY `mailbox_context` (`mailbox`,`context`)
 +
);
  
== cdr_mysql.conf ==
+
= Configuration d'Asterisk =
  
Ce fichier est spécifique au module de journalisation des appels ''('''C'''all '''D'''ata '''R'''ecord)''.
+
== Fichier cdr_mysql.conf ==
 +
 
 +
* Ce fichier est spécifique au module de journalisation des appels ''('''C'''all '''D'''ata '''R'''ecord)''. Pour que le modules puisse fonctionner, il faut y renseigner les paramètres de connexion à la base de données MySQL :
  
Pour que le modules puisse fonctionner, il faut y renseigner les paramètres de configuration à la base de données :
 
 
  [global]
 
  [global]
 
  hostname=localhost
 
  hostname=localhost
  dbname=nom_de_la_base
+
  dbname=asterisk
 
  table=nom_de_la_table
 
  table=nom_de_la_table
 
  password=motDePasse
 
  password=motDePasse
Ligne 44 : Ligne 157 :
 
  userfield=1
 
  userfield=1
  
== extconfig.conf ==
+
== Fichier 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 :
+
* Pour qu'Asterisk consulte la base de données MySQL, il faut activer la recherche via le fichier '''extconfig.conf'''. Les lignes suivantes seront dé-commentées et modifiées :
agents        => mysql,asterisk,queue_agent_table
+
sipusers      => mysql,asterisk,sip
+
sippeers      => mysql,asterisk,sip
+
voicemail    => mysql,asterisk,users
+
queues        => mysql,asterisk,queue_table
+
queue_members => mysql,asterisk,queue_member_table
+
Où :
+
* '''agents => :''' désigne le nom du fichier de configuration;
+
* '''mysql :''' le type de la base de données;
+
* '''asterisk :''' le nom de la base de données;
+
* '''queue_agent_table :''' le nom de la table renfermant les paramètres ainsi que les valeurs affectées pour chaque enregistrement.
+
  
== res_mysql.conf ==
+
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
 +
 
 +
* Avec :
 +
** '''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.
 +
 
 +
== Fichier res_config_mysql.conf ==
 +
 
 +
* Il faudra indiquer à Asterisk les informations de connexion à la base de données MySQL dans le fichier '''res_config_mysql.conf'''.
  
Il faut également renseigner dans ce fichier les paramètres de connexion à la base :
 
 
  [general]
 
  [general]
 
  dbhost = localhost
 
  dbhost = localhost
  dbname = nom_de_la_base
+
  dbname = asterisk
 
  dbuser = login
 
  dbuser = login
 
  dbpass = motDePasse
 
  dbpass = motDePasse
 
  dbport = 3306
 
  dbport = 3306
 
  dbsock = /var/run/mysqld/mysqld.sock
 
  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=asterisk
 
DBPASS=rV4DcNUxJ5RvEGNC
 
  
 
= Requêtes =
 
= Requêtes =
Ligne 86 : Ligne 191 :
  
 
Les requêtes MySQL s'implémentent dans le DialPlan du fichier de configuration extensions.conf de la manière suivante :
 
Les requêtes MySQL s'implémentent dans le DialPlan du fichier de configuration extensions.conf de la manière suivante :
<blockquote>
+
 
exten => 1,1,[[Asterisk_Synthax#NoOp|NoOp(######## Requête MySQL ########)]]<br />
+
exten => 1,1,[[Asterisk_Synthax#NoOp|NoOp(######## Requête MySQL ########)]]
exten => 1,2,MYSQL(Connect connid ${DBHOST} ${DBUSER} ${DBPASS}<br />
+
exten => 1,2,MYSQL(Connect connid ${DBHOST} ${DBUSER} ${DBPASS}
exten => 1,3,MYSQL(Query resultid ${connid} <Requête SQL>)<br />
+
exten => 1,3,MYSQL(Query resultid ${connid} <Requête SQL>)
exten => 1,4,MYSQL(Fetch fetchid ${resultid} Resultat) <span style="color:darkgrey;font-style:italic">; le résultat de la requête est stocké dans la variable Resultat.</span><br />
+
exten => 1,4,MYSQL(Fetch fetchid ${resultid} Resultat) <span style="color:darkgrey;font-style:italic">; le résultat de la requête est stocké dans la variable Resultat.</span>
exten => 1,5,MYSQL(Disconnect ${connid})
+
exten => 1,5,MYSQL(Disconnect ${connid})
</blockquote>
+
  
 
== Récupérer des données SELECT ==
 
== Récupérer des données SELECT ==
  
 
En reprenant l'exemple ci-dessus :
 
En reprenant l'exemple ci-dessus :
<blockquote>
+
 
exten => s,1,MYSQL(Connect connid <span style="color:purple">${DBHOST} ${DBUSER} ${DBPASS} ${DBNAME}</span>)<br />
+
exten => s,1,MYSQL(Connect connid <span style="color:purple">${DBHOST} ${DBUSER} ${DBPASS} ${DBNAME}</span>)
exten => s,2,MYSQL(Query resultid <span style="color:purple">${connid}</span> <span style="color:darkblue">SELECT Value FROM myconf WHERE Param="AcceptAnon" AND Line="<span style="color:purple">${Line}</span>"</span>)<br />
+
exten => s,2,MYSQL(Query resultid <span style="color:purple">${connid}</span> <span style="color:darkblue">SELECT Value FROM myconf WHERE Param="AcceptAnon" AND Line="<span style="color:purple">${Line}</span>"</span>)
exten => s,3,MYSQL(Fetch fetchid <span style="color:purple">${resultid}</span> AcceptAnon)<br />
+
exten => s,3,MYSQL(Fetch fetchid <span style="color:purple">${resultid}</span> AcceptAnon)
exten => s,4,MYSQL(Disconnect <span style="color:purple">${connid}</span>)<br />
+
exten => s,4,MYSQL(Disconnect <span style="color:purple">${connid}</span>)
exten => s,5,NoOp(Les appels anonymes sont-ils autorisés ? <span style="color:purple">${Resultat}</span>)
+
exten => s,5,NoOp(Les appels anonymes sont-ils autorisés ? <span style="color:purple">${Resultat}</span>)
</blockquote>
+
  
 
== Manipuler des données INSERT/UPDATE/DELETE ==
 
== Manipuler des données INSERT/UPDATE/DELETE ==
Ligne 111 : Ligne 214 :
 
== CDR ''(Call Data Records)'' ==
 
== CDR ''(Call Data Records)'' ==
  
{{ Asterisk }}
+
[[Category:Asterisk]]

Version actuelle en date du 7 novembre 2015 à 18:25

.:[ Asterisk IPBX ]:.

Installation >> Utiliser un forfait SIP >> MySQL >> Boîte Vocale >> Synthax
Inter-Asterisk eXchange | MOH Musique d'Attente

Prérequis

  • Asterisk doit être compilé avec le support mysql.

Création des tables

  • La table cdr contiendra les statistiques d'appels du serveur.
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  
);
  • La table sipfriends contiendra les faisceaux SIP ainsi que les utilisateurs SIP.
CREATE TABLE `sipfriends` (
     `id` int(11) NOT NULL AUTO_INCREMENT,
     `name` varchar(10) NOT NULL,
     `ipaddr` varchar(15) DEFAULT NULL,
     `port` int(5) DEFAULT NULL,
     `regseconds` int(11) DEFAULT NULL,
     `defaultuser` varchar(10) DEFAULT NULL,
     `fullcontact` varchar(35) DEFAULT NULL,
     `regserver` varchar(20) DEFAULT NULL,
     `useragent` varchar(20) DEFAULT NULL,
     `lastms` int(11) DEFAULT NULL,
     `host` varchar(40) DEFAULT NULL,
     `type` enum('friend','user','peer') DEFAULT NULL,
     `context` varchar(40) DEFAULT NULL,
     `permit` varchar(40) DEFAULT NULL,
     `deny` varchar(40) DEFAULT NULL,
     `secret` varchar(40) DEFAULT NULL,
     `md5secret` varchar(40) DEFAULT NULL,
     `remotesecret` varchar(40) DEFAULT NULL,
     `transport` enum('udp','tcp','udp,tcp','tcp,udp') DEFAULT NULL,
     `dtmfmode` enum('rfc2833','info','shortinfo','inband','auto') DEFAULT NULL,
     `directmedia` enum('yes','no','nonat','update') DEFAULT NULL,
     `nat` enum('yes','no','never','route') DEFAULT NULL,
     `callgroup` varchar(40) DEFAULT NULL,
     `pickupgroup` varchar(40) DEFAULT NULL,
     `language` varchar(40) DEFAULT NULL,
     `allow` varchar(40) DEFAULT NULL,
     `disallow` varchar(40) DEFAULT NULL,
     `insecure` varchar(40) DEFAULT NULL,
     `trustrpid` enum('yes','no') DEFAULT NULL,
     `progressinband` enum('yes','no','never') DEFAULT NULL,
     `promiscredir` enum('yes','no') DEFAULT NULL,
     `useclientcode` enum('yes','no') DEFAULT NULL,
     `accountcode` varchar(40) DEFAULT NULL,
     `setvar` varchar(40) DEFAULT NULL,
     `callerid` varchar(40) DEFAULT NULL,
     `amaflags` varchar(40) DEFAULT NULL,
     `callcounter` enum('yes','no') DEFAULT NULL,
     `busylevel` int(11) DEFAULT NULL,
     `allowoverlap` enum('yes','no') DEFAULT NULL,
     `allowsubscribe` enum('yes','no') DEFAULT NULL,
     `videosupport` enum('yes','no') DEFAULT NULL,
     `maxcallbitrate` int(11) DEFAULT NULL,
     `rfc2833compensate` enum('yes','no') DEFAULT NULL,
     `mailbox` varchar(40) DEFAULT NULL,
     `session-timers` enum('accept','refuse','originate') DEFAULT NULL,
     `session-expires` int(11) DEFAULT NULL,
     `session-minse` int(11) DEFAULT NULL,
     `session-refresher` enum('uac','uas') DEFAULT NULL,
     `t38pt_usertpsource` varchar(40) DEFAULT NULL,
     `regexten` varchar(40) DEFAULT NULL,
     `fromdomain` varchar(40) DEFAULT NULL,
     `fromuser` varchar(40) DEFAULT NULL,
     `qualify` varchar(40) DEFAULT NULL,
     `defaultip` varchar(40) DEFAULT NULL,
     `rtptimeout` int(11) DEFAULT NULL,
     `rtpholdtimeout` int(11) DEFAULT NULL,
     `sendrpid` enum('yes','no') DEFAULT NULL,
     `outboundproxy` varchar(40) DEFAULT NULL,
     `callbackextension` varchar(40) DEFAULT NULL,
     `registertrying` enum('yes','no') DEFAULT NULL,
     `timert1` int(11) DEFAULT NULL,
     `timerb` int(11) DEFAULT NULL,
     `qualifyfreq` int(11) DEFAULT NULL,
     `constantssrc` enum('yes','no') DEFAULT NULL,
     `contactpermit` varchar(40) DEFAULT NULL,
     `contactdeny` varchar(40) DEFAULT NULL,
     `usereqphone` enum('yes','no') DEFAULT NULL,
     `textsupport` enum('yes','no') DEFAULT NULL,
     `faxdetect` enum('yes','no') DEFAULT NULL,
     `buggymwi` enum('yes','no') DEFAULT NULL,
     `auth` varchar(40) DEFAULT NULL,
     `fullname` varchar(40) DEFAULT NULL,
     `trunkname` varchar(40) DEFAULT NULL,
     `cid_number` varchar(40) DEFAULT NULL,
     `callingpres` enum('allowed_not_screened','allowed_passed_screen','allowed_failed_screen','allowed','prohib_not_screened','prohib_passed_screen','prohib_failed_screen','prohib') DEFAULT NULL,
     `mohinterpret` varchar(40) DEFAULT NULL,
     `mohsuggest` varchar(40) DEFAULT NULL,
     `parkinglot` varchar(40) DEFAULT NULL,
     `hasvoicemail` enum('yes','no') DEFAULT NULL,
     `subscribemwi` enum('yes','no') DEFAULT NULL,
     `vmexten` varchar(40) DEFAULT NULL,
     `autoframing` enum('yes','no') DEFAULT NULL,
     `rtpkeepalive` int(11) DEFAULT NULL,
     `call-limit` int(11) DEFAULT NULL,
     `g726nonstandard` enum('yes','no') DEFAULT NULL,
     `ignoresdpversion` enum('yes','no') DEFAULT NULL,
     `allowtransfer` enum('yes','no') DEFAULT NULL,
     `dynamic` enum('yes','no') DEFAULT NULL,
     PRIMARY KEY (`id`),
     UNIQUE KEY `name` (`name`),
     KEY `ipaddr` (`ipaddr`,`port`),
     KEY `host` (`host`,`port`)
);
  • La table voicemail_users contiendra les boîtes vocales des utilisateurs.
CREATE TABLE `voicemail_users` (
 `uniqueid` int(11) NOT NULL auto_increment,
 `customer_id` int(11) NOT NULL default '0',
 `context` varchar(50) NOT NULL default ,
 `mailbox` int(5) NOT NULL default '0',
 `password` varchar(10) NOT NULL default '0',
 `fullname` varchar(50) NOT NULL default ,
 `email` varchar(50) NOT NULL default ,
 `pager` varchar(50) NOT NULL default ,
 `stamp` timestamp(14) NOT NULL,
 PRIMARY KEY (`uniqueid`),
 KEY `mailbox_context` (`mailbox`,`context`)
);

Configuration d'Asterisk

Fichier 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 connexion à la base de données MySQL :
[global]
hostname=localhost
dbname=asterisk
table=nom_de_la_table
password=motDePasse
user=login
port=3306
sock=/var/run/mysqld/mysqld.sock
userfield=1

Fichier extconfig.conf

  • Pour qu'Asterisk consulte la base de données MySQL, il faut activer la recherche via le fichier extconfig.conf. Les lignes suivantes seront dé-commentées et modifiées :
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
  • Avec :
    • 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.

Fichier res_config_mysql.conf

  • Il faudra indiquer à Asterisk les informations de connexion à la base de données MySQL dans le fichier res_config_mysql.conf.
[general]
dbhost = localhost
dbname = asterisk
dbuser = login
dbpass = motDePasse
dbport = 3306
dbsock = /var/run/mysqld/mysqld.sock

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})

Manipuler des données INSERT/UPDATE/DELETE

Fonctions

CDR (Call Data Records)