Asterisk MySQL : Différence entre versions

De Wiki NCad
Aller à : navigation, rechercher
(Installation)
(Prérequis)
 
(6 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
{{ Asterisk }}
 
{{ Asterisk }}
  
= Installation =
+
= Prérequis =
  
* Il suffit d'installer le paquet '''asterisk-mysql''' :
+
* Asterisk doit être compilé avec le support mysql.
{{Box Console | objet=sudo apt-get install asterisk-mysql}}
+
  
= Activer MySQL pour Asterisk =
+
= Création des tables =
  
Pour activer MySQL dans Asterisk, il est nécessaire d'éditer plusieurs fichiers de configuration :
+
* La table '''cdr''' contiendra les '''statistiques d'appels''' du serveur.
* 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 ==
+
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 ''
 +
);
  
Ce fichier est spécifique au module de journalisation des appels ''('''C'''all '''D'''ata '''R'''ecord)''.
+
* La table '''sipfriends''' contiendra les '''faisceaux SIP''' ainsi que les '''utilisateurs SIP'''.
  
Pour que le modules puisse fonctionner, il faut y renseigner les paramètres de configuration à la base de données :
+
  CREATE TABLE `sipfriends` (
[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_config_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
+
 
+
{{Box Information | objet=Ceci est le fichier de configuration pour les boîtes vocales des utilisateurs.}}
+
 
+
== sip.conf ==
+
 
+
  CREATE TABLE IF NOT EXISTS `sipfriends` (
+
 
       `id` int(11) NOT NULL AUTO_INCREMENT,
 
       `id` int(11) NOT NULL AUTO_INCREMENT,
 
       `name` varchar(10) NOT NULL,
 
       `name` varchar(10) NOT NULL,
Ligne 173 : Ligne 123 :
 
       KEY `ipaddr` (`ipaddr`,`port`),
 
       KEY `ipaddr` (`ipaddr`,`port`),
 
       KEY `host` (`host`,`port`)
 
       KEY `host` (`host`,`port`)
  ) ENGINE=MyISAM;
+
  );
 +
 
 +
* 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 ''('''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 :
 +
 
 +
[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 =
 
= Requêtes =

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)