« Asterisk MySQL » : différence entre les versions

De NCad Wiki
Aller à la navigation Aller à la recherche
Ligne 8 : Ligne 8 :
= Création des tables =
= Création des tables =


== Table cdr ==
* La table '''cdr''' contiendra les '''statistiques d'appels''' du serveur.
 
* Cette table contiendra les '''statistiques d'appels''' du serveur.


  CREATE TABLE cdr (  
  CREATE TABLE cdr (  
Ligne 31 : Ligne 29 :
  );
  );


== Table sipfriends ==
* La table '''sipfriends''' contiendra les '''faisceaux SIP''' ainsi que les '''utilisateurs SIP'''.
 
* Cette table contiendra les '''faisceaux SIP''' ainsi que les '''utilisateurs SIP'''.


  CREATE TABLE `sipfriends` (
  CREATE TABLE `sipfriends` (
Ligne 130 : Ligne 126 :
  );
  );


== table voicemail_users ==
* La table '''voicemail_users''' contiendra les boîtes vocales des utilisateurs.
 
* Cette table contiendra les boîtes vocales des utilisateurs.


  CREATE TABLE `bit_voicemail_users` (
  CREATE TABLE `voicemail_users` (
   `uniqueid` int(11) NOT NULL auto_increment,
   `uniqueid` int(11) NOT NULL auto_increment,
   `customer_id` int(11) NOT NULL default '0',
   `customer_id` int(11) NOT NULL default '0',
Ligne 148 : Ligne 142 :
  );
  );


Pour activer MySQL dans Asterisk, il est nécessaire d'éditer plusieurs fichiers de configuration :
= COnfiguration d'Asterisk =
* 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 ==
== Fichier cdr_mysql.conf ==


Ce fichier est spécifique au module de journalisation des appels ''('''C'''all '''D'''ata '''R'''ecord)''.
* 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
Ligne 169 : Ligne 158 :
  userfield=1
  userfield=1


== extconfig.conf ==
== 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 :


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
  agents        => mysql,general,queue_agent_table
  sipusers      => mysql,general,sip
  sipusers      => mysql,general,sip
Ligne 178 : Ligne 168 :
  queues        => mysql,general,queue_table
  queues        => mysql,general,queue_table
  queue_members => mysql,general,queue_member_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 ==
* 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
Ligne 194 : Ligne 186 :
  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=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 ==


= Requêtes =
= Requêtes =

Version du 15 février 2015 à 19:41

.:[ Asterisk IPBX ]:.

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

Installation

  • Il suffit d'installer le paquet asterisk-mysql :

sudo apt-get install asterisk-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)