A propos | Laboratoire | Voisinage | Meilleurs articles | Nous aider | Forums

Panoramisk / Le druide de la VoIP 

Asterisk::Configure

Contexte

L’écriture des plans d’appel avec Asterisk peut être fastidieuse. Il est d’une part nécessaire d’utiliser un éditeur de texte sous Unix ou Windows, de plus il est nécessaire de se plier au format et à la numérotation des lignes dans les contextes.

A force de faire des erreurs et de passer du temps à corriger celles-ci, nous avons développé un petit outil en Perl permettant de créer ces fichiers à partir d’un format un peu plus simple, nous l’avons appelé Asterisk::Configure.

La version actuellement disponnible est v1.02

Installation

Il vous faut tout d’abord un interpréteur Perl sur votre serveur Asterisk, celui-ci est souvent installé par défaut sur les distributions Unix, sinon des paquetages existent vous évitant de le recompiler à partir des sources.

Téléchargez la version actuelle du module : Asterisk-Configuration-1.02.tar.gz.

Installez le module:

  • tar zxf Asterisk-Configuration-1.02.tar.gz
  • cd Asterisk-Configuration-1.02
  • perl Makefile.PL, prépare l’installation, il vous sera peut-être nécessaire d’installer les modules complémentaires.
  • make install (à executer en tant qu’utilisateur root).
  • make test : ceci est facultatif mais permettra de vous assurer du fonctionnement nominal par rapport à ce que nous avons prévu. Il y a à ce jour 20 tests qui doivent tous passer correctement.
  • make clean pour tout ranger.

Fonctionnement

Cet outil est une librairie, vous pourrez ainsi écrire des outils l’utilisant, vous pouvez pour cela vous inspirer de l’exemple: exemple-configure.pl livré avec.

Format

Les fichiers de configuration utilisent la syntaxe suivante:

 file to-be-created.conf {
     context first-context {
          exten s {
 	    ; comment to be inserted in the final file
            ; command as usual for Asterisk
 	    Set(phone=${CUT(CHANNEL,-,1)})
            Hangup()
          }
     }

     context second-context {
 	exten s {
 	    Set(phone=${CUT(CHANNEL,-,1)})
            ; here we do a Goto towards line prefixed by %%L1%% or %%HANG%%
 	    GotoIf($["${agent}" = ""]?%%HANG%%:%%L1%%)
 	    ;
 %%L1%%     Set(i=1)
 	    Set(q=${DB(agents/queue/${agent})})
 	    Set(del_queue=${CUT(q,',',${i})})
 	    Playback(agent-loggedoff)
 	    Playback(privacy-thankyou)
 %%HANG%%   Hangup()
 	}
     }
 }

On peut donc créer plusieurs fichiers, chacun composés de contextes différents. Les contextes reprennent la syntaxe des fichiers traditionnels d’extension, si ce n’est que l’extension n’est écrite qu’une seule fois et la numérotation n’est pas nécessaire. Les lignes sont renumérotées à la construction.

Enfin, on peut préfixer une ligne par un label entouré de %%, celui-ci sera alors utilisable dans les commandes Goto et GotoIf1.

Développement

La création d’un objet de configuration se fait par l’appel du constructeur avec un nom de fichier au format défini précédemment.

$conf = new Asterisk::Configure( File => “file.ast” );

On peut également passer directement le contenu du fichier via la variable ConfigText:

$c = <<EOF;
file f1.conf {
     context c1_t2-t3 {
	  exten s {
	      Answer()
	      Wait(5)
	      Hangup()
	  }
     }
}
EOF
$conf = new Asterisk::Configure(ConfigText => $c);

Ensuite il est nécessaire de construire le plan d’appel relatif à la configuration passée, ceci s’effectue par un :

$conf->create;

Enfin, on récupère la liste des fichiers pré-générés avec $conf->getFileList() et le contenu de l’un d’entre eux par : $conf->getFile(”f1.conf”) en passant comme argument le nom du fichier.

Améliorations

Cet outil est un projet en cours, il peut donc contenir des imperfections ou nécessiter des améliorations. Aussi n’hésitez pas à nous en faire part2, nous tenterons de corriger et d’incorporer des nouvelles fonctions au fur et à mesures des besoins rencontrés.


  1. Gosub et GosubIf ne sont pas encore gérés []
  2. par courriel []

© 2009 Panoramisk | Creative Commons License wordpress logo