Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. VoIP et ToIP - Asterisk
  3. Asterisk
Extrait - VoIP et ToIP - Asterisk La téléphonie IP d'entreprise [2ième édition]
Extraits du livre
VoIP et ToIP - Asterisk La téléphonie IP d'entreprise [2ième édition]
2 avis
Revenir à la page d'achat du livre

Amélioration du plan de numérotation

Introduction

Dans le chapitre précédent, nous avons vu l’essentiel pour constituer rapidement un plan de numérotation fonctionnel. Cependant, dans le cas d’une structure plus importante comme une PME de 100 personnes, il faut apporter des améliorations nouvelles comme par exemple l’utilisation de variables, de macros ou fonctions qui permettent de simplifier le plan, l’utilisation de syntaxe comme les branchements conditionnels, la mise en place de conférences, la mise en base de données des comptes SIP, des boîtes vocales.

Optimisation avec les macros

Exemple : Considérons le plan de numérotation constitué de 3 fois 100 lignes

[internal]
exten => 400, 1, Answer()
exten => 400, 2, Dial(SIP/400,10,r)
exten => 400, 3, Hangup()

...

exten => 499, 1, Answer()
exten => 499, 2, Dial(SIP/499,10,r)
exten => 499, 3, Hangup() 

Ce plan peut être amélioré en écrivant une macro Appel.

Toute macro devra être mise entre crochets et le nom devra commencer par macro- :

[macro-Appel]
exten => s, 1, Answer()
exten => s, 2, Dial(${ARG1},10,r)
exten => s, 3, Hangup() 

La variable ${ARG1} contient le premier argument (ou paramètre) passé à la macro et dans le plan de numérotation, l’appel de la macro se fait à l’aide de l’application Macro(nom_de_la_macro, argument).

Le même plan de numérotation peut donc s’écrire de la façon suivante :

[macro-Appel]
exten => s, 1, Answer()
exten => s, 2, Dial(${ARG1},10,r)
exten => s, 3, Hangup()

[internal]
exten => 400, 1, Macro(Appel, SIP/400)
..
exten => 499, 1, Macro(Appel, SIP/499) 

Fonctions avancées

1. Variables et expressions

a. Variables

Les variables sont utilisées pour être passées en argument à des fonctions.

La syntaxe d’une variable est la suivante :

${nom_de_la_variable:offset:longueur} 

où :

  • nom_de_la_variable est le nom de la variable.

  • offset est un champ optionnel qui définit un pointeur. Si l’offset est négatif, la lecture de la chaîne s’effectue de droite à gauche.

  • longueur est un champ optionnel qui définit le nombre de caractères qui seront retournés, à partir de l’offset.

Exemples :

remerciements=Merci à Patrick et à Damien
${remerciements} : retourne Merci à Patrick et à Damien
${remerciements:1} : retourne erci à Patrick et à Damien
${remerciements:-2} : retourne en
${remerciements:8:19} : retourne Patrick et à Damien 

Nous supprimons ici le préfixe de sortie 0 :

exten => _00XXXXXXXXX, 1, SetVar(numero=${EXTEN:1})
exten => _00XXXXXXXXX, 2, Dial(${numero}) 

Il existe trois types de variables :

  • variables globales : elles sont présentes dans la section [globals] du plan de numérotation ou peuvent être affectées en tant que telles par la commande SetGlobalVar().

  • variables de canaux : chaque canal dispose de ses propres variables qui sont détruites lorsque le canal...

Les conférences Meet-Me

1. Généralités

Asterisk permet de mettre en place des conférences de façon très simple : chaque utilisateur interne ou externe peut donc entrer dans un espace de communication dédié.

Chaque conférence peut être gérée par un administrateur qui peut rendre muets des participants et même les expulser.

Cette fonctionnalité est très intéressante pour les entreprises, d’un point de vue financier, puisqu’il est donc possible de faire transiter les flux de conferencing via les liens intersites déjà en place, évitant ainsi de faire appel à un coûteux dispositif de "pont téléphonique" auprès d’un opérateur.

Les déplacements peuvent également être réduits de façon conséquente.

Exemple : Conférence MeetMe avec borne audio SIP

07RI01.PNG

Les "Meet-Me" sont mises en place à l’aide du fichier de configuration /etc/asterisk/meetme.conf et d’un appel à la fonction MeetMe() dans le plan de numérotation.

Pour la gestion de l’audioconférence, il est préférable de dédier un serveur autre que l’autocom en lui-même, afin de ne pas le surcharger.
Le lien entre les deux serveurs se fera via un trunk SIP, par exemple.

2. Fichier de configuration meetme.conf

Ce fichier permet de déclarer des conférences de type statiques.

;
; Configuration file for MeetMe simple conference rooms for 
Asterisk of course.
;
; This configuration file...

Audio et vidéo

L’utilisation des conférences audio est une application très intéressante d’Asterisk mais il faut bien constater que vouloir bâtir une réunion entre plusieurs personnes distantes de 1000 Kms, sans support visuel pour les documents ou sans vidéo, peut rapidement être rébarbatif et ainsi perdre en efficacité.

Certaines fonctionnalités peuvent être ajoutées en périphérie de la plate-forme Asterisk :

  • support de web-conferencing via un logiciel adhoc, par exemple, OpenMeetings (http://www.openmeetings.net) permet d’effectuer des réunions en ligne :

    • Les utilisateurs se connectent à une conférence pour écouter l’orateur, celui qui présente le dernier document marketing par exemple, en diaporama.

    • En même temps, les utilisateurs se connectent sur un lien URL afin de visualiser le document qui est commenté par l’orateur.

  • plate-forme DIMDIM (http://www.dimdim.org) permet d’héberger un système de webconférence. DIMDIM existe en version SAAS (version payante) ou peut être installé en version Open Source sur un serveur au sein de l’entreprise (http://ebooks.zedl.fr).

  • mise en place de communication via deux softphones équipés du support vidéo ; la version commerciale de X-Lite EyeBeam permet d’obtenir une communication audio...

Asterisk et les bases de données

1. La base de données AstDB

Le stockage de données au sein même du plan de numérotation, à l’aide de fonction et de variables, atteint vite ses limites en terme d’exploitation.

Asterisk permet de stocker des valeurs à l’aide d’une base de données interne, AstDB (Asterisk DataBase) qui est au format Berkeley.

Les données sont sauvegardées dans des familles et sont identifiées par des clés. Celles-ci sont uniques par famille.

Il faut noter que les données de la base sont persistantes dans le sens où elles demeurent accessibles depuis n’importe où dans le plan de numérotation même après un reboot du serveur. La base est stockée dans /var/lib/asterisk/astdb.

Les postes connectés sont stockés dans la base AstDB (clé SIP / Registry).

a. AstDB dans le plan de numérotation

Exemple : Écriture d’une valeur dans la clé prenom de la famille utilisateur

${prenom}=Zoe
exten => s, 1, Set(DB(utilisateur/prenom=${prenom}) 

Exemple : Lecture de la valeur de la clé prenom de la famille utilisateur

exten => s, 1, Set(prenom=${DB(utilisateur/prenom)})
exten => s, 2, NoOP($prenom) 

b. Commandes AstDB

DBdel(famille/clé) : supprime une clé de la base.

DBdeltree(famille) : supprime une famille de la base.

DBget(variable=famille/clé) : recherche une valeur dans la base.

DBput(famille/clé=valeur) : enregistre une valeur dans la base.

Commandes CLI

database show : affiche l’ensemble de la base AstDB.

database get : recherche une valeur d’une clé d’une famille.

database put : stocke une valeur dans une clé d’une famille.

database del : supprime une clé.

database...