« Asterisk MySQL » : différence entre les versions

De NCad Wiki
Aller à la navigation Aller à la recherche
Ligne 6 : Ligne 6 :
{{Box Console | objet=sudo apt-get install asterisk-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 :
== Table cdr ==
* 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 ''('''C'''all '''D'''ata '''R'''ecord)''.
 
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_config_mysql.conf ==


Il faut également renseigner dans ce fichier les paramètres de connexion à la base :
* Cette table contiendra les '''statistiques d'appels''' du serveur.
[general]
dbhost = localhost
dbname = asterisk
dbuser = login
dbpass = motDePasse
dbport = 3306
dbsock = /var/run/mysqld/mysqld.sock


== extensions.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 ''
);


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 :
== Table sipfriends ==


[globals]
* Cette table contiendra les '''faisceaux SIP''' ainsi que les '''utilisateurs SIP'''.
...
DBHOST=localhost
DBNAME=asterisk
DBUSER=login
DBPASS=motDePasse


== voicemail.conf ==
  CREATE TABLE `sipfriends` (
 
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 128 :
       KEY `ipaddr` (`ipaddr`,`port`),
       KEY `ipaddr` (`ipaddr`,`port`),
       KEY `host` (`host`,`port`)
       KEY `host` (`host`,`port`)
  ) ENGINE=MyISAM;
  );
 
 
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 ''('''C'''all '''D'''ata '''R'''ecord)''.
 
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_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 ==


= Requêtes =
= Requêtes =

Version du 15 février 2015 à 19:25

.:[ 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

Table cdr

  • Cette table 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  
);

Table sipfriends

  • Cette table 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`)
);


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_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

Ceci est le fichier de configuration pour les boîtes vocales des utilisateurs.

sip.conf

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)