« Asterisk MySQL » : différence entre les versions
| Ligne 130 : | Ligne 130 : | ||
); | ); | ||
== table voicemail_users == | |||
* Cette table contiendra les boîtes vocales des utilisateurs. | |||
CREATE TABLE `bit_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`) | |||
); | |||
Pour activer MySQL dans Asterisk, il est nécessaire d'éditer plusieurs fichiers de configuration : | Pour activer MySQL dans Asterisk, il est nécessaire d'éditer plusieurs fichiers de configuration : | ||
Version du 15 février 2015 à 19:32
.:[ Asterisk IPBX ]:.
Inter-Asterisk eXchange | MOH Musique d'Attente
Installation
- Il suffit d'installer le paquet 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`)
);
table voicemail_users
- Cette table contiendra les boîtes vocales des utilisateurs.
CREATE TABLE `bit_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`) );
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})