3. Installation de l'IPBX Asterisk

3.1. Installation des outils de base de données

Il faut tout d'abord installer MySQL sur la VM et vérifier que l'installation s'est déroulée correctement :
root@vm2:~# aptitude install mysql-server
[...]
[Un mot de passe vous est demandé pour l'accès au serveur MySQL en tant que root]
[...]
root@vm2:~# mysqpl-p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit;
Bye
root@vm2:~#
Afin que l'IPBX puisse accéder à des bases de données MySQL, il est nécessaire d'installer ODBC et le connecteur ODBC / MySQL :
root@vm2:~# aptitude install unixODBC unixODBC-dev
[...]
[...]
root@vm2:~# aptitude install libmyodbc
[...]
[...]
root@vm2:~#

3.2. Installation d'Asterisk

Pour installer Asterisk, nous allons partir des sources et les compiler plutôt que d'utiliser la paquet Debian correspondant : celui-ci est en effet assez vieux, et nous souhaitons installer une version bénéficiant du Long Term Support (LTS).
root@vm2:~# cd /usr/src
root@vm2:~/usr/src# wget -c http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.8-current.tar.gz
--2011-05-17 22:58:09--  http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.8-current.tar.gz
Résolution de downloads.asterisk.org... 76.164.171.233, 2001:470:e0d4::e9
Connexion vers downloads.asterisk.org|76.164.171.233|:80...connecté.
requête HTTP transmise, en attente de la réponse...200 OK
Longueur: 27021108 (26M) [application/x-gzip]
Sauvegarde en : «asterisk-1.8-current.tar.gz»

100%[=====================================================================================>] 27 021 108  8,32M/s   ds 3,7s

2011-05-17 22:58:13 (6,90 MB/s) - «asterisk-1.8-current.tar.gz» sauvegardé [27021108/27021108]

root@vm2:~/usr/src# tar xvzf asterisk-1.8-current.tar.gz
[...]
root@vm2:~/usr/src# aptitude install build-essential
[...]
root@vm2:~/usr/src# aptitude install libncurses-dev libnewt-dev
[...]
root@vm2:~/usr/src# aptitude install libz-dev libssl-dev libxml2-dev
[...]
root@vm2:~/usr/src# cd asterisk-1.8.4/
root@vm2:~/usr/src/asterisk-1.8.4# ./configure
[...]
root@vm2:~/usr/src/asterisk-1.8.4# make menuselect
Il faut ajouter pendant cette phase de configuration tous les messages sonores en français : Puis terminer avec Save & Exit.
Il faut ensuite lancer la compilation, les tests et l'installation :
root@vm2:~/usr/src/asterisk-1.8.4# make
[...]
root@vm2:~/usr/src/asterisk-1.8.4# make install
[...]
root@vm2:~/usr/src/asterisk-1.8.4# make samples
[...]
root@vm2:~/usr/src/asterisk-1.8.4# make config
[...]
root@vm2:~/usr/src/asterisk-1.8.4#

3.3. Configuration des connecteurs

Nous allons d'abord devoir configurer les connecteurs ODBC, via deux fichiers : /etc/odbcinst.ini et /etc/odbc.ini. Dans le second, vous aurez des paramètres à personnaliser : le nom de votre base de données (que nous appelons ici asterisk_plan_num puisqu'elle contiendra un plan de numérotation abrégé), ainsi que le mot de passe d'accès au serveur MySQL, saisi lors de l'installation du paquet mysql-server.
root@vm2:~# vi /etc/odbcinst.ini
[MySQL]
Description = MySQL driver
Driver = /usr/lib/odbc/libmyodbc.so
Setup = /usr/lib/odbc/libodbcmyS.so

root@vm2:~#
root@vm2:~# vi /etc/odbc.ini
[connecteur-asterisk]
Description = MySQL database for asterisk
Database = asterisk_plan_num
Driver = MySQL
Server = localhost
# Socket = /var/lib/mysql/mysql.sock
# Socket = /var/run/mysqld/mysqld.sock
User = root
Password = MOTDEPASSE_SERVEURMYSQL
Port = 3306
Socket =
# Option = 3
# ReadOnly = No
root@vm2:~#
On doit également mettre à jour le fichier /etc/asterisk/res_odbc.conf pour passer la variable enabled de la zone [asterisk] de no à yes et changer la valeur de la variable dsn en connecteur-asterisk :
root@vm2:~# vi /etc/asterisk/res_odbc.conf
[...]
[...]

[asterisk]
;
; Permit disabling sections without needing to comment them out.
; If not specified, it is assumed the section is enabled.
enabled => yes
;
; This value should match an entry in /etc/odbc.ini
; (or /usr/local/etc/odbc.ini, on FreeBSD and similar systems).
dsn => connecteur-asterisk
;
; Username for connecting to the database.  The default user is "root".
;username => myuser

[...]
[...]
root@vm2:~#

3.4. Préparation de la base de données

Nous allons maintenant créer la base de données contenant le plan de numérotation abrégé (il vous faudra entre le mot de passe d'accès au serveur MySQL) :
root@vm2:~# mysqladmin -p create asterisk_plan_num
Enter password:
root@vm2:~#
Nous allons créer une table très simple avec deux champs : un numéro (court) à 5 chiffres, et sa traduction en numéro long à 10 chiffres :
root@vm2:~# mysql -p asterisk_plan_num
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 42
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE TABLE `Traduction` (
    -> `Num5C` int(5) NOT NULL,
    -> `NumComplet` int(10) NOT NULL,
    -> PRIMARY KEY (`Num5C`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.08 sec)

mysql> exit;
Bye
root@vm2:~#
Remplissons un peu la base avec des numéros :
root@vm2:~# mysql -p asterisk_plan_num
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 43
Server version: 5.1.49-3 (Debian)

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> INSERT INTO Traduction (Num5C, NumComplet) VALUES (69041, 0144169041);
Query OK, 1 row affected (0.04 sec)

mysql> INSERT INTO Traduction (Num5C, NumComplet) VALUES (38574, 0144238574);
Query OK, 1 row affected (0.31 sec)

mysql> INSERT INTO Traduction (Num5C, NumComplet) VALUES (70301, 0144370301);
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO Traduction (Num5C, NumComplet) VALUES (69038, 0144469038);
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO Traduction (Num5C, NumComplet) VALUES (39333, 0144239333);
Query OK, 1 row affected (0.04 sec)

mysql> SELECT * FROM Traduction;
+-------+------------+
| Num5C | NumComplet |
+-------+------------+
| 38574 |  144238574 |
| 39333 |  144239333 |
| 69038 |  144469038 |
| 69041 |  144169041 |
| 70301 |  144370301 |
+-------+------------+
5 rows in set (0.00 sec)

mysql> exit;
Bye
root@vm2:~#
Nous allons maintenant vérifier que le connecteur fonctionne correctement :
root@vm2:~# isql -v connecteur-asterisk
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> show databases;
+-----------------------------------------------------------------+
| Database                                                        |
+-----------------------------------------------------------------+
| information_schema                                              |
| asterisk_plan_num                                               |
| mysql                                                           |
+-----------------------------------------------------------------+
SQLRowCount returns 3
3 rows fetched
SQL> use asterisk_plan_num;
SQLRowCount returns 0
SQL> select * from asterisk_plan_num.Traduction;
+-----------+-----------+
| Num5C     | NumComplet|
+-----------+-----------+
| 38574     | 144238574 |
| 39333     | 144239333 |
| 69038     | 144469038 |
| 69041     | 144169041 |
| 70301     | 144370301 |
+-----------+-----------+
SQLRowCount returns 5
5 rows fetched
SQL> quit;
root@vm2:~#
Il faut ensuite créer un nouveau contexte dans le fichier /etc/asterisk/func_odbc.conf :
root@vm2:~# vi /etc/asterisk/func_odbc.conf
[NUMPF5C]
dsn=connecteur-asterisk
readsql=SELECT NumComplet FROM Traduction WHERE Num5C = '${ARG1}'
root@vm2:~#
L'appel à la requête par Asterisk sera configuré dans le fichier extensions.conf, dans un contexte de ce type :
exten => _XXXXX,1,Set(NumL=0${ODBC_NUMPF5C(${EXTEN})})
exten => _XXXXX,n,Dial(SIP/TrunkOVH/${NumL})
Vous remarquerez que l'appel à un contexte ODBC est de la forme ODBC_NOMDUCONTEXTE.
Dernière mise à jour : 30/05/2011
Me contacter : olivier chez delloye point org

Valid HTML 4.01 Transitional