Les outils complémentaires
Introduction
Nous avons vu, au cours des chapitres précédents, les bases pour construire un serveur Asterisk mais il existe encore bien d’autres outils permettant d’améliorer le service de téléphonie sur IP et permettant les fonctionnalités suivantes :
-
avoir des statistiques des appels ;
-
disposer d’interfaces graphiques de management de la configuration ;
-
gérer les fax entrants ;
-
interconnecter des applications externes au système.
Statistiques avec CDR
Un des points importants d’un cahier des charges de T-VoIP est de disposer d’outils permettant d’effectuer la taxation et donc la facturation ; autrement dit d’obtenir des rapports sur les appels émis et reçus :
numéro appelant - numéro appelé - durée de l’appel - date de l’appel - heure de l’appel
Un outil de taxation peut s’avérer très utile si le PBX est utilisé pour le compte de plusieurs sociétés et qu’un mécanisme de re-facturation interne doit être mis en œuvre. Il prend évidemment tout son sens si le PBX est un centrex à destination de clients finaux auprès desquels une facturation du service est évidente. Dans ce cas, le business model dépend fortement du contrat souscrit avec les opérateurs télécoms qui fournissent l’accès au réseau commuté. À ce jour, en France, aucun opérateur ne propose, en revente de type marque blanche et sous forme standardisée, un forfait illimité pour les appels vers les fixes en local et national.
1. Retrouver les CDR
Le système Asterisk dispose de plusieurs moyens permettant de retrouver la liste des appels passés et/ou reçus. Ces appels sont en fait des tickets ou CDR pour Call Data Records. Pour cela, il ne faut pas oublier de charger les modules correspondants.
a. Outil de base Master.csv
L’enregistrement des tickets s’effectue dans un fichier au format CSV, dans le fichier /var/log/asterisk/cdr-csv/Master.csv, qui est un journal de logs de tous les appels du système. Ce mécanisme nécessite le chargement du module cdr_cvs.so et le paramétrage du fichier /etc/asterisk/cdr.conf. Les champs à enregistrer sont présents dans le fichier /etc/asterisk/cdr_custom.csv et nécessitent de charger le module cdr_custom.so.
Contenu du fichier cdr_custom.conf
;
; Mappings for custom config file
;
; to get your csv output in a format tailored to your liking,
uncomment the following
; and look for the output in the cdr-custom/Master.csv file (usually
in /var/log/asterisk).
;
;
[mappings]
Master.csv => ${CSV_QUOTE(${CDR(clid)})},${CSV_QUOTE(${CDR(src)})},
${CSV_QUOTE(${CDR(dst)})},${CSV_QUOTE(${CDR(dcontex...
Outils graphiques de management
Il existe de nombreux outils tiers permettant d’administrer Asterisk de façon graphique.
1. En complément d’Asterisk
De nombreux outils plus ou moins graphiques permettent de gérer ou d’enrichir le système Asterisk, parmi lesquels, nous pouvons citer :
-
Druid ;
-
AstGUIclient / Vicidial ;
-
FreePBX (ex Asterisk@Home) ;
-
Asterisk GUI (inclus dans AsteriskNOW) ;
-
TrixBox (ex Asterisk@Home) ;
-
L’éditeur canadien ScopServ, avec sa puissante version Scoptel 2.0 distribuée par l’intégrateur belge EyePea.
a. DRUID
Druid est une plate-forme de gestion d’un serveur Asterisk, via une interface graphique (une GUI pour Graphical User Interface) permettant d’accéder à l’administration des services de téléphonie (ajout de téléphones, ajout d’utilisateurs, ajout de trunk, ajout de boîtes vocales…). C’est également un outil permettant la gestion de présence via le protocole Jabber.
Druid existe principalement en version Open Source edition : Druid OSE en date de 2009 (Druid 2.0.0)
Exemple d’interface pour Druid OSE :
Gestion des faxs
Asterisk fournit un service de détection de fax entrants ; il va donc être possible, grâce à ce mécanisme, de gérer automatiquement la réception des fax :
-
détection d’un fax entrant ;
-
stockage du fax dans un fichier sur le serveur Asterisk ;
-
transformation du fichier en format TIFF ;
-
impression du fax ;
-
transformation du fichier TIFF en format PDF et transfert du fax en pièce jointe dans l’e-mail d’un utilisateur.
Principe de réception de fax
1. Installation
Pour qu’Asterisk puisse traiter le fax reçu en le transférant à l’extension spéciale "fax", il faut que les librairies SPANDSP soient installées :
-
Vérification que la librairie Libtiff est bien installée (voir le chapitre Installation d’un serveur Asterisk). Libtiff fournit l’applicatif tiff2ps permettant le traitement des fichiers TIFF.
-
Téléchargement du fichier spandsp-0.0.6pre17.tgz (http://www.soft-switch.org).
-
Décompactage du fichier et compilation.
La bibliothèque SPANDSP va fournir deux applications essentielles :
-
SendFAX pour l’envoi de fax.
-
ReceiveFAX pour la réception de fax.
# cd /usr/src
# tar zxvf /usr/src/spandsp-0.0.6pre17.tgz
# chown -R root:root spandsp-0.0.6/
# cd spandsp-0.0.2/
# ./configure
# make
# make install
-
Vérifier que le module app-fax est bien installé dans le make menuselect en faisant un ./configure dans le répertoire d’installation d’Asterisk
-
Recompilation d’Asterisk (indispensable).
# cd/usr/src/asterisk-1.6.2.8
# make clean; make; make install
Programmation AGI
AGI (Asterisk Gateway Interface) est une interface permettant de faire communiquer le plan de numérotation (extensions.conf) avec des programmes extérieurs à Asterisk, écrits avec des langages de programmation aussi divers que PHP, Perl, Python, C, shell Linux.
1. Principe
AGI est matérialisé par l’écriture de scripts qui sont exécutés dans le plan de numérotation.
À chaque lancement d’un script AGI, Asterisk envoie au script un ensemble de variables avec leurs valeurs. Lorsque toutes les variables sont émises, Asterisk envoie une ligne vide pour préciser au script qu’il peut commencer ce pourquoi il a été écrit (suite d’instructions).
Le script envoie les commandes et Asterisk renvoie au script, pour chaque commande émise, une réponse.
2. Appel du script AGI
Par défaut, les scripts sont créés et stockés dans /var/lib/asterisk/agi-bin (cela permet de ne pas mentionner le chemin complet d’appel des scripts). Il faudra toujours que les scripts disposent du droit d’exécution (chmod ugo+x monscript.agi).
Ensuite, le script se lance de la manière suivante :
exten => 777, 1, Answer()
exten => 777, 2, AGI(monscript.agi|argument1|argument2...)
3. Étapes dans la rédaction du script monscript.agi
La syntaxe du script...