Vous êtes sur la page 1sur 19

République du Sénégal

Un peuple - Un but – Une foi

*************

Ministère de l'enseignement supérieur et de la recherche


Ecole Centrale des Logiciels Libres et de
Télécommunications

COUPLAGE A2BILLING-ASTERISK ET CDR

L’objectif de ce document est de vous montrer comment coupler asterisk


à a2billing et mettre en place un sytème de CDR dans un environnement
de ToIP . L’enjeu des CDRs, c’est de stocké toutes les traçabilités des
transactions faites par vos utilisateurs dans une base de données. A travers
ce système, on pourra voir les transactions faites par les clients et y dresser
un rapport.

Présenté par :
KACHALLAH Abagana Mahamat
Licence 3 en Télécommunications et Réseaux
Tel : +221707474374
Courriel : kachallaha@gmail.com
07/09/2016

COUPLAGE A2BILLING-ASTERISK ET CDR 1


INTRODUCTION

Dans ce rapport nous mettons en place un systeme de facturation basé sur le logiciel a2billing qui
permettrait aux utilisateur de asterisk d'être facturé et de mettre un système de traçabilité des
appels .

I. Asterisk

Asterisk est un logiciel libre open source fonctionnant sous Linux ou Windows. Il a été créé
en 1999 par Mark Spencer, et a été le support de lancement de la société Digium, permettant à un
micro_ordinateur de type PC de se comporter comme un PABX IP. Il permet à cet d'offrir toutes les
fonctionnalités des PABX.
Le développement du logiciel est financé par la vente de solution matérielle telles que des cartes
permettant à Asterisk de se comporter comme une passerelle VoIP / Téléphonie classique.
La licence sous laquelle Asterisk est fourni a permis à de nombreux acteurs de s'impliquer eux aussi
dans le développement du logiciel, et il a ainsi rapidement acquis de nombreuses fonctionnalités.
Ainsi Asterisk permet de mettre en place une messagerie vocale, des conférences à plusieurs
utilisateurs, des serveurs vocaux, la distribution, le transfert des appels... Il supporte notamment les
protocoles H323, SIP, MGCP en plus de son protocole IAX (« Inter-Asterisk eXchange »,
permettant de connecter entre eux plusieurs serveurs Astérisk).
Asterisk est à l'origine développé pour tourner sur plateforme Linux avec processeur Intel
IA32. Il permet en outre de passer du monde IP vers les réseaux téléphoniques publics (analogique /
RNIS / 2G-3G) par l'adjonction de cartes ou boîtiers passerelles. Cependant il a été conclu pour être
portable, cette portabilité associée à un faible besoin en ressources processeur rend Asterisk
particulièrement intéressant dans le monde embarqué: il devient possible de créer des boitiers IPBX
de faibles dimensions, et ainsi de les positionner dans le monde des petites et moyennes entreprises
comme une solution intéressante à plus d'un titre face aux solutions propriétaires.
La configuration d'Asterisk est effectuée en utilisant différents fichiers de configuration
(contenus dans les répertoires /etc/asterisk). On y trouve parmi d’autre ces fichiers .conf :

* le fichier Sip.conf, qui contient la liste et les profils des utilisateurs utilisant le protocole
SIP pour communiquer avec Asterisk .
* le fichier extentions.conf, dans lequel on configure le plan de numérotation et les règles
de routage des appels entrants et sortants.
* le fichier iax.conf, qui contient la liste et les profils des utilisateurs utilisant le protocole
IAX pour communiquer avec Asterisk
Astérisk peut aussi être couplé à une base de données, type MySQL par exemple (ce n'est pas la
seule possibilité !), afin de stocker les utilisateurs et leurs profils, ...
Les solutions téléphoniques à base d’Astérisk offrent une gamme riche et souple de fonctionnalités.
Astérisk offre à la fois les fonctionnalités classiques d’un PBX et des fonctionnalités innovantes et
émergeantes. Ce système de plugins offre des possibilités d'extensions quasiment infinies.
Cependant, couplé au plugin AMP « Astérisk Management
Portal », il offre les fonctionnalités suivantes:
* Passerelle SIP et/ou H323 permettant aux clients de s'authentifier.
* Passerelle VoIP / RTPC adaptée à un Client SIP ou H323 permettant à Astérisk de passer
lui-même des appels par un fournisseur de service VoIP.
* Messagerie vocale avec possibilité d'envoi par mail des messages aux utilisateurs.
* Gestion des files d'attente d'appels pour chaque utilisateur.

COUPLAGE A2BILLING-ASTERISK ET CDR 2


* Centralisation de l'état de chaque téléphone, permettant d'avoir en un seul affichage l'état
de tous les clients VoIP du réseau (via Astérisk Management Portal)
* Organisation de conférences téléphoniques entre utilisateurs.
* Transfert d'appel conditionnel ou inconditionnel.
Astérisk interagit avec les traditionnels systèmes de téléphonie de type standard, et les systèmes de
Voix sur IP. Il offre les fonctionnalités que l'on attendrait d'un grand système PBX et même plus.
Les développeurs ou les sociétés souhaitant étendre les fonctionnalités d'Astérisk peuvent le faire
grâce à un système d'AGI permettant le contrôle d'Astérisk par des programmes écrits en PHP,
langage C, Perl ou Python par exemple.
Il faut noter que l’interface de communication d’astérisk est Astérisk Manager Interface (AMI).
Ce système d’AGI précédemment cité permettra la communication d’Astérisk avec A2billing.

II. A2billing

A2billing est un logiciel de taxation, très complexe, qui permet non seulement de gérer les tickets
d'appels, de gérer des comptes clients, de créditer de différentes manières ces comptes mais aussi de
les débiter en fonction des appels passés, ...
A2billing offre plusieurs fonctionnalités parmi lesquelles nous allons étudier ces trois grandes
actions :
* Admin

Il est l’administrateur de la plateforme, il est chargé de la création des comptes aux clients, de la
création des agents, des trunks, de fixer la taxation aux clients, de la politique des droits que les
clients pourront effectuer sur l’interface,...

* Agent

Un agent est un distributeur, un associé au fournisseur qui est chargé de faire écouler les produits de
son fournisseur. Ici par exemple en tant que administrateur on peut ajouter du crédit à un agent qui à
son tour pourra le distribuer aux clients.

* Custumer

Le custumer est un client qui une fois l’administrateur lui crée un compte il dispose de son nom
d’utilisateur (login) et de son mot de passe (password), ces deux informations lui permettront de
pouvoir se connecter à la plateforme et d’acquérir toutes les informations lui concernant. Il dispose
d’une interface qui lui permet d’avoir plusieurs actions à effectuer comme par exemple la création
de compte à ses clients, de consulter ses factures, de voir l’historique des appels, des payements,...
L’administrateur peut définir des politiques de droit que son client pourra avoir sur la plateforme.
Pour bien contrôler les actions des clients sur l’interface, l’administrateur doit associer à chaque
client un groupe.
Le client, une fois qu’il dispose des informations de son compte via son interface de la plateforme
sur l’onglet SIP_INFO, il peut créer un trunk entre son IPBX et son fournisseur de service. Il copie
ces informations dans son fichier d’asterisk Sip.conf et il définit un plan numérotation dans son
fichier extentions.conf c’est-à-dire il peut dire tout numéro qui commence par X route le sur le
provider qui est notre serveur A2billing. De ce fait on aura besoin de créer une liste de numéro pour
que tout client qui arrive puisse être identifié.
Le custumer a la possibilité de créer ses propres clients, mais pour que ceux-ci puissent atteindre
d’autres clients dans un autre opérateur il est impérative qu’ils passent par le provider VoIP, celui-ci

COUPLAGE A2BILLING-ASTERISK ET CDR 3


via une passerelle (Gateway) permettra une communication vers d’autres opérateurs.
Le fournisseur de service qui définit les modalités de facturation des clients. Ceci se fait au niveau
de l’interface du serveur lors de la création des SDAs (Sélection Directe à l’Arrivée) en anglais on
dira DIDs. Chaque client est associé un DID. L’association d’un DID à un client se fait au niveau de
la rubrique Inbound DID ensuite dans destination de l’interface du serveur.
Donc une fois le Custumer crée on crée un DID qui lui sera associé, de la même manière qu’on peut
créer un groupe de Custumer, on peut aussi créer un groupe de DID pour faciliter la gestion des
utilisateurs ou clients.
Il faut noter qu’a2billing dispose de quatre méthodes de facturation des clients :

* VoIP registration : ici le client est inscrit à a2billing avec son nom d’utilisateur et son mot
de passe.
* IP adress : tous les appels sont acceptés à partie d’une adresse IP spécifique.
* PIN authentification : c’est l’utilisation d’un code PIN unique
* CallerID : c’est l’utilisation du CID pour l’authentification des clients.

La dernière méthode sera celle que nous utiliserons dans notre travail car elle nous permettra de
pouvoir gérer des clients des autres opérateurs.

COUPLAGE A2BILLING-ASTERISK ET CDR 4


III. Installation et configuration

III.1. Installation

# apt -get install libapache2 -mod- php5 php5 php5 -common php5 -cli php5 -mysql mysql-server
apache2 php5 -gd openssh-server subversion php5- mcrypt

# apt -get install asterisk asterisk-prompt-fr-proformatique

#cd /usr/local/src
# wget https://github.com/star2Billing/a2billing/archive/v2.0.5.tar.gz

#tar -xvzf v2.0.5.tar.gz -C /usr/local/src/a2billing

Après cela on vérifie dans la base de donnée et nous devons avoir 97 tables différentes crées dans la
base de données.

Création d'un lien symbolique

Modification des informations de la base de donnée

COUPLAGE A2BILLING-ASTERISK ET CDR 5


chown asterisk:www-data /etc/asterisk
chmod 775 /etc/asterisk
touch /etc/asterisk/additional_a2billing_iax.conf
touch / etc/asterisk/additional_a2billing_sip.conf
echo ''# include additional_a2billing_sip.conf'' >> / etc / asterisk / sip.conf
echo ''# include additional_a2billing_iax.conf'' >> / etc / asterisk / iax.conf

Exécuter le script d’installation des sons disponibles dans le dossier addons


NB : Le script suppose que les sons asterisk sont dans /usr/share/asterisk/sounds/

Configurationn de asterisk manager

Installation des composants AGI

Ce sont des scripts écrits en PHPd’A2billing qui vont piloter Asterisk:


# mkdir /usr/share/asterisk/agi-bin/
# chown asterisk:asterisk /usr/share/asterisk/agi-bin/
# ln-s /usr/local/src/a2billing/a2billing-2.0.5/AGI/a2billing.php /usr/share/asterisk/agibin/a2billing.php
# ln -s /usr/local/src/a2billing/a2billing-2.0.5/AGI/a2billing_monitoring.php /usr/share/asterisk/agi-
bin/a2billing_monitoring.php
# ln -s /usr/local/src/a2billing/a2billing-2.0.5/AGI/lib/ /usr/share/asterisk/agi-bin/lib
# chmod +x /usr/share/asterisk/agi-bin/a2billing.php
# chmod +x /usr/share/asterisk/agi-bin/a2billing_monitoring.php

Interface web a2billing

* Crée un dossier a2billing dans /var/www/

# mkdir /var/www/a2billing
# chown www-data:www-data /var/www/a2billing

* Créer un répertoire dossier à surveiller scripts

# mkdir -p /var/lib/a2billing/script

* Créer un répertoire de dossier pour Cronts PID

COUPLAGE A2BILLING-ASTERISK ET CDR 6


# mkdir /var/run/a2billing

* faire des liens symboliques dans /var/www/a2billing/

ln -s /usr/local/src/a2billing/a2billing-2.0.5/admin /var/www/a2billing /admin


ln -s /usr/local/src/a2billing/a2billing-2.0.5/agent /var/www/a2billing /agent
ln -s /usr/local/src/a2billing/a2billing-2.0.5/common /var/www/common

* Fixer les permissions du dossier templates_c dans chacun de l’interface utilisateur

#chmod 755 / usr/local/src/a2billing/admin/templates_c


#chmod 755 / usr/local/src/a2billing/customer/templates_c
#chmod 755 / usr/local/src/a2billing/agent/templates_c
#chown- Rf www-data : www-data / usr/local/src/a2billing/admin/templates_c
#chown- Rf www-data : www-data / usr/local/src/a2billing/customer/templates_c
#chown- Rf www-data : www-data / usr/local/src/a2billing/agent/templates_c

Redémarrage du serveur Asterisk

#/etc/init.d/asterisk restart

* Connexion à l'interface web

Par défaut

user : root
password: changepassword

http://@IP-serveur/a2billing/admin

COUPLAGE A2BILLING-ASTERISK ET CDR 7


III.2. Configuration

Etape 1

Il est recommandé avant de commencer la configuration de régler le paramètres global dans la


rubrique “Systems settings => Global list“, ils sont principalement les suivants :

• “Asterisk version“, on vérifie la version correspondante a celle d’asterisk installée dans


notre PC et on le remplace avec celle disponible au niveau de cette rubrique dans l’interface.
• Use realtime on le met à NO
• Les commands params, ils sont au nombre de trois, on enlève les pipes ( | ) et on les
remplace par des virgules ( , ).
• Use DNID on le met à yes
• CLID Enable est mis à yes
• Say Balance After Auth on le met à NO
• Say Balance After Call on le met à NO.

Etape 2

On passe maintenant à la configuration des comptes des utilisateurs.


Ceci est la démarche à suivre :

• Création du Provider

• Crée un provider : Providers => Add Provider

COUPLAGE A2BILLING-ASTERISK ET CDR 8


• Crée un trunk : Trunks => Add Trunk

• Création de Rates

Dans la rubrique RATES :

• Crée d’abord un RateCard : RateCards => Add RateCard

COUPLAGE A2BILLING-ASTERISK ET CDR 9


• Crée un call plan: Call Plan => Add Callplan

• Crée un rate : Rates => Add Rate

COUPLAGE A2BILLING-ASTERISK ET CDR 10


• Création de Custumers

Dans la rubrique CUSTUMERS

• Crée d’adord un custumer : Add ::Search => Add Custumer

COUPLAGE A2BILLING-ASTERISK ET CDR 11


• Crée un Caller ID: Caller-ID => Add CallerID

COUPLAGE A2BILLING-ASTERISK ET CDR 12


On édite le fichier /etc/asterisk/sip.conf et on ajoute le compte asterisk qui est le nom du provider et
on spécifie le context a2billing qui va permettre aux clients de asterisk de passer par serveur
a2billing .

Editons le fichier /etc/asterisk/extensions.conf

COUPLAGE A2BILLING-ASTERISK ET CDR 13


III. CDR (Call Detail Record)

CDR est l’acronyme de détail des appels enregistrés permettant de voir les statistiques des appels.
Les CDR sont l'ensemble de données utilisées recueillies concernant un appel (Fixe, VoIP, Mobile).
Ces données sont recueillies par les opérateurs de téléphonies et peuvent être réutilisées pour
l'optimisation du réseau (Service Assurance et le Performance Management), la facturation (Billing)
et la détection d'incident (Faul management). Les CDRs sont souvent utilisés pour vérifier la
traçabilité des appels émis par les personnels d'une entreprise.
Ainsi, nous allons voir dans ce tutoriel, comment installer et configurer un CDR. Cependant, pour
mettre en place notre CDR, nous allons installer asterisk comme IPBX et MySQL comme SGBD
pour enregistrer nos appels et transactions. Le principe est que tous les appels qui seront effectués
par les utilisateurs d'asterisk, vont être enregistrés dans une base de données.

III.1 Installation

Installation de MySQL

root@kachou:~# apt-get install mysql-server

Installation d’ODBC

root@kachou:~# apt-get install unixodbc libmyodbc unixodbc iodbc

III.2 Paramètrage

Paramétrage ODBC

vim /etc/odbc.ini

COUPLAGE A2BILLING-ASTERISK ET CDR 14


vim /etc/odbcinst.ini

NB : L’emplacement du Driver peut différer d’une distribution à une autre.

Vérification de la connexion odbc

Cette capture prouve que la connexion à la base de données ait réussi

Paramétrage d'Asterisk

root@kachou:~# vim /etc/asterisk/res_odbc.conf

root@kachou:~# vim /etc/asterisk/cdr_odbc.conf

COUPLAGE A2BILLING-ASTERISK ET CDR 15


root@kachou:~# vim /etc/asterisk/cdr.conf

Redémarrage du serveur asterisk

Démarrage de la console d'asterisk

Rechargement du module ODBC

Rechargement du module cdr_odbc

COUPLAGE A2BILLING-ASTERISK ET CDR 16


IV. Démonstration

Avant l'appel nous remarquons l'utilisateur kachallah (491021) possède un crédit de 593 :

Nous lancé l'appel dont l'utilisateur kachallah (491021) appel l'utilisateur kadiatou (491022)

COUPLAGE A2BILLING-ASTERISK ET CDR 17


Sur la console d'asterisk on remarque:

Après l'appel vers l'utilisateur kadiatou (401022) on rémarque que le compte de kachallah a été
défalqué:

Nous rémarqons qu'on a aussi les détails des appels:

COUPLAGE A2BILLING-ASTERISK ET CDR 18


CONCLUSION

Nos objectifs étaient de coupler asterisk à a2billing et d’enregistrer les traçabilités des transactions
faites par les utilisateurs gérer par l’IPBX asterisk pour un éventuel traitement. Nous avons pu
mettre en place ces concepts car nous avons constaté bel et bien après les captures ci-dessus que les
utilisateurs d'asterisk sont via la plateforme a2billing et que asterisk enregistre ses CDRs via ODBC
dans une base de données locale ou distante. Cependant, nous pourrons dorénavant stocker les
CDRs de notre IPBX asterisk dans une base de données centralisées afin d’exploiter des données
riches avec une application comme CDR-STATS, afin d’analyser nos appels et extraire de jolies
stats.

COUPLAGE A2BILLING-ASTERISK ET CDR 19