Vous êtes sur la page 1sur 11

Simulation d'un provider ToIP basé sur asterisk et a2billing

Laurent GALLON IUT des Pays de l'Adour – dépt R&T Mont de Marsan

I. INTRODUCTION

Les architectures ToIP sont de plus en plus présentes dans les entreprises. Elles permettent à la fois de faire converger les deux infrastructures classiques, téléphonique et informatique, et par là même de réduire les coûts. Mais les entreprises cherchent aussi à réduire les coûts des abonnements téléphoniques et des communications. Une solution est d'utiliser l'accès Internet de l'entreprise pour faire passer ses appels externes par un provider ToIP. Ce dernier offre à l'entreprise la possibilité de passer du monde IP vers le monde de la téléphonie commutée (3G/RNIS) à des coûts moindres que ceux engendrés par des accès directs à ces réseaux. Dans ce papier, nous proposons un exemple d'implémentation de provider ToIP, utilisable en salle de TP. Nous abordons en particulier les problèmes de l'authentification, de l'utilisation de passerelles vers le monde commuté, du routage des appels entrants et sortants, et de la taxation des appels. La totalité de notre proposition repose sur l'IPBX libre Asterisk, couplé au logiciel libre de taxation a2billing, pour avoir une infrastructure la plus ouverte et la moins coûteuse possible. L'architecture de la plateforme est décrite sur la figure 1.

de la plateforme est décrite sur la figure 1. Fig. 1 : Schéma général de la

Fig. 1 : Schéma général de la plateforme

Nous n'aborderons pas ici toutes les fonctionnalités d'un provider ToIP. Nous focalisons notre proposition sur les éléments indispensables du provider, à savoir (cf figure 2) :

l'authentification de l'appelant, c'est-à-dire la reconnaissance de l'entreprise qui essaie de passer

par le provider pour mettre en place une communication avec un tiers. Cette communication peut être destinée à un autre téléphone IP, où à un téléphone du monde commuté. L'authentification permet de vérifier les droits d'accès de l'appelant, et de le taxer correctement.

Le routage des appels et l'utilisation de passerelles vers le monde commuté. Ici, l'important est de pouvoir router les appels sortants (le client est l'initiateur de l'appel) soit vers un autre poste IP, soit vers une passerelle permettant d'accéder aux réseaux commuté. Mais il faut aussi penser aux appels entrants, qui doivent pouvoir aboutir au client.

La taxation, qui permet dans un premier temps de comptabiliser la durée de chaque appel, et si nécessaire, d'estimer le coût de la communication.

si nécessaire, d'estimer le coût de la communication. Fig. 2 : Modules du Provider ToIP Nptez

Fig. 2 : Modules du Provider ToIP

Nptez enfin que le composant « Provider ToIP » fait partie d'une plateforme générique de ToIP, présentée par Patrick Charrin dans l'article « Une plateforme pédagogique pour illustrer les différentes architectures de ToIP » de ce même workshop.

II. ASTERISK ET A2BILLING

A. Asterisk Asterisk est un IPBX (autocommutateur téléphonique IP) 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. Il permet à des terminaux ToIP de communiquer entre eux, en utilisant différents protocoles de communications, comme SIP, IAX, … Il implémente les services téléphoniques traditionnels (renvois et transferts d'appels, Ne Pas Déranger, boîtes vocales, …) et les services avancés

(messagerie unifiée, IVR, centre d'appel, …). 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.

La configuration d'Asterisk est effectuée en utilisant différents fichiers de configuration (contenus dans le répertoires /etc/asterisk). On y trouve en particulier :

le fichier sip.conf, qui contient la liste et les profils des utilisateurs utilisant le protocole SIP pour communiquer avec Asterisk

le fichier iax.conf, qui contient la liste et les profils des utilisateurs utilisant le protocole IAX pour communiquer avec Asterisk

le fichier extensions.conf, dans lequel on configure le plan de numérotation et les règles de routage des appels entrants et sortants

le fichier musiconhold.conf, dans lequel on configure la musique d'attente

le fichier chan_dahdi.conf, dans lequel on configure l'accès aux cartes et boitiers permettant l'accès aux réseaux téléphoniques publics Bien d'autres fichiers sont disponibles, nous ne pouvons tous les citer ici. L'ensemble de ces fichiers constitue une « jungle » qu'il est parfois difficile à maîtriser, d'autant que certaines modifications nécessitent une intervention dans plusieurs fichiers. Aussi, différentes interfaces graphiques pouvant se coupler à Asterisk ont vu le jour :

Asterisk@home, trixbox, … Ces interfaces sont une aide à la modification des fichiers de configuration d'Asterisk. Cependant, elles sont parfois limitées (elles n'offrent pas toutes les possibilités de configuration), ou spécifique à une implémentation particulière (ex : Trixbox). Aussi, en règle générale, les administrateurs sont amenés à modifier « à la main » les fichiers de configuration pour effectuer certaines opérations spécifiques.

Asterisk 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, et enregistrer les tickets de taxation, c'est-à-dire les tickets indiquant la durée des appels et leur coûts. Néanmoins, Asterisk ne fournit pas par défaut de logiciel de taxation. Les tickets existent, mais ils doivent être exploités par une application extérieure, comme par exemple a2billing.

B. A2billing

a2billing est un logiciel de taxation, très complet, qui permet non seulement de gérer les tickets d'appels, mais aussi de gérer des comptes clients, de créditer de différentes manières ces comptes (« cartes prépayées », paiement à la facture, …), et de les débiter en fonction des appels passés, et leur facturation.

a2billing permet de définir des « rates », c'est-à-dire des tarifications en fonction de la destination des appels (préfixe). Un client (« customer ») pourra passer des appels à travers a2billing, en se voyant affecter d'une certaine tarification. L'ensemble des tarifs qui peuvent être appliqués à ce client sont regroupés dans une « rate card ». Les « rate cards » correspondent donc aux différentes offres tarifaires proposées par a2billing à ses clients.

offres tarifaires proposées par a2billing à ses clients. Fig. 3 : a2billing Bien entendu, a2billing reconnait

Fig. 3 : a2billing

Bien entendu, a2billing reconnait ses clients grâce à une authentification De plus, il est capable d'appliquer deux types de routage : le LCR qui revient à rechercher le chemin coutant le moins au provider, et le LCD qui revient à rechercher le coût le plus avantageux pour le client.

Nous allons nous appuyer sur ces fonctionnalités pour simuler un Provider ToIP à partir d'Asterisk et de

a2billing.

III. MISE EN PLACE DU PROVIDER TOIP

A. Architecture du TP Nous considérons l'architecture de TP suivante (Fig. 4) :

considérons l'architecture de TP suivante (Fig. 4) : Figure 4 : architecture du réseau de TP

Figure 4 : architecture du réseau de TP

On retrouve les éléments présentés dans le papier « Une plateforme pédagogique pour illustrer les différentes architectures de ToIP » de Patrick Charrin :

Chaque

entreprise

est

représentée

par

un

IPBX

configuré

par

un

binôme

d'étudiant.

Dans

nos

manipulations, cet IPBX doit supporter le protocole SIP. ON peut utiliser un Alcatel OxO, un matracom AXS, un Asterisk, … Plusieurs téléphones sont connectés à cet IPBX, avec des numéros SDA. Dans le cadre de ce TP, nous aurons une seule entreprise, dont la plage SDA est 05584004xx.

Le provider ToIP est constitué d'un Asterisk sur lequel est rajouté a2billing. Nous allons détailler la configuration de a2billing dans la suite de ce chapitre.

Le réseau IP est en réalité un réseau Ethernet, mise en œuvre par un simple switch. Un téléphone IP, déclaré sur l'Asterisk du composant « Provider ToIP », représentera le monde des téléphones IP (tout numéro qui commence par 09xxxxxxxx)

La Voice Gateway (ou Media Gateway) est implémentée par un Asterisk, sur lequel nous avons installé une carte Digium B410P qui offre 4 accès de base T0.

Le réseau RNIS est réalisé par un simulateur Patapsco. Quelques téléphones sont connectés sur ce simulateur , et permettent de disposer de numéros SDA caractéristiques (15/18, 08xxxxxxxx, 0467xxxxxx, 06xxxxxxxx), qui seront taxés différemment.

Notez que le simulateur de réseau RNIS peut être remplacé par la solution basée sur Asterisk, présentée dans le papier d'Angel Abénia. De plus, les composants « Provider ToIP » et « Voice Gateway » peuvent facilement être regroupés en un seul en installant la carte B410P directement dans l'Asterisk du composant « Provider ToIP ». Ceci étant, à l'heure où nous écrivons, nous n'avons pas testé cette possibilité, et la documentation d'a2billing ne laisse pas apparaître la possibilité d'utiliser mISDN ou Dahdi. Si cette information se vérifie, cela signifie que les accès RNIS ne peuvent être directement gérés par a2billing, et cela complexifie le regroupement des deux composants.

B. Configuration de a2billing

Nous considérons que l'installation d'Asterisk et de a2billing a déjà été effectuée (voir annexes A et B). Nous allons décrire maintenant les différentes phases de configuration nécessaires au bon fonctionnement du Provider ToIP

1)

asterisk

Utilisation de a2billing dans le plan de num. de

La première opération à effectuer est de dire à Asterisk d'utiliser a2billing. Pour cela, dans le plan de numérotation d'Asterisk (c'est-à-dire à la fin du fichier

\etc\asterisk\extensions.conf), il faut définir deux

nouveaux contextes, a2billing et did, qui contiennent les

instructions suivantes :

[a2billing]

exten => _X.,1,Answer() exten => _X.,2,Wait(2) exten => _X.,3,AGI(a2billing.php) exten => _X.,4,Wait(2) exetn => _X.,5,HangUp()

[did] exten => _X.,1,AGI(a2billing.php|1|did)

Le contexte a2billing sera associé aux profils SIP des clients (customers) du provider ToIP. Ainsi, les appels en provenance de ses clients seront traités par a2billing (instruction AGI(a2billing.php)). Bien entendu, ces appels seront taxés différemment en fonction de la destination.

Le contexte did sera utilisé par les appels en provenance d'une entité non cliente du Provider, et à destination de l'une de ses entreprises clientes. Dans notre exemple, ce sera le cas si un téléphone du réseau public cherche à appeler le numéro 0558400400. Pour que ces appels aboutissent au contexte did, il faut modifier le fichier /etc/asterisk/sip.conf, et plus exactement la directive

context dans le contexte [general] :

[general] context = did

Ces appels ne seront a priori pas taxés.

Il faut penser à relancer Asterisk pour prendre en compte ces modifications :

#/etc/init.d/asterisk restart

De manière générale, il est toujours intéressant d'avoir une fenêtre de commande dans laquelle s'affichent les messages relatifs aux différentes opérations effectuées par Asterisk. Pour cela, on peut utiliser le CLI (Command Line Interface) d'Asterisk, dans une fenêtre de commande :

#asterisk -rvvvv

On peut d'ores et déjà vérifier que le nouveau plan de

numérotation a bien été pris en compte, grâce à la commande

:

#CLI>dialplan show a2billing

Le résultat doit être :

a bien été pris en compte, grâce à la commande : #CLI>dialplan show a2billing Le résultat

2)

« customers »

Déclaration et configuration des « providers » et des

A2billing peut communiquer avec deux types d'entités :

les fournisseurs d'accès (« providers »), qui vont offrir un accès vers un réseau téléphonique

les « customers », qui sont les clients du provider ToIP. Dans notre exemple, nous avons

1 client (« customer ») : l'entreprise

 

2 fournisseurs d'accès :

 

la Voice Gateway, qui permet d'accéder au réseaux téléphoniques publics

le téléphone IP, qui représente l'accès au monde IP (numéros en 09xxxxxxxx)

Ces

trois

entités

peuvent

être

déclarées

à

partir

de

l'interface graphique de configuration de a2billing,

accessible depuis un navigateur Web à l'adresse:

http://<@IP du provider ToIP>/a2billing/admin

Les identifiants de connexion sont :

login = root mot de passe = changepassword

a) Déclaration des providers

Les

providers peuvent

être

créés

à

partir

« Provider / Add Provider ».

être créés à partir « Provider / Add Provider ». du menu Il faut juste préciser

du

menu

Il faut juste préciser le nom que l'on souhaite leur donner. Dans notre exemple, nous créons deux providers, appelés

« MondeIP » et « MondeRNIS ».

providers, appelés « MondeIP » et « MondeRNIS ». Parallèlement à la création des deux providers
providers, appelés « MondeIP » et « MondeRNIS ». Parallèlement à la création des deux providers
providers, appelés « MondeIP » et « MondeRNIS ». Parallèlement à la création des deux providers
providers, appelés « MondeIP » et « MondeRNIS ». Parallèlement à la création des deux providers

Parallèlement à la création des deux providers, il faut penser à créer les « trunks » associés. Un trunk permet de qualifier le canal de communication utilisé entre a2billing et un provider, c'est-à-dire de préciser tous les éléments techniques qui vont permettre à ce lien d'être utilisé. On peut créer les trunks à partir du menu « Provider / trunks / Add Trunk ». Dans notre exemple, nous aurons deux trunks, l'un appelé « VersMondeRNIS », l'autre « VersMondeIP ». Ces deux trunks utiliseront le protocole de communication SIP. Il faut aussi penser à préciser l'adresse IP à laquelle aboutie le trunk (ici, @IP de la Voice Gateway pour « VersMondeRNIS » = 10.2.17.201, et @IP du téléphone IP pour « VersMondeIP » = 10.2.17.160). Enfin, il faut rattacher chaque trunk à son provider.

et @IP du téléphone IP pour « VersMondeIP » = 10.2.17.160). Enfin, il faut rattacher chaque
et @IP du téléphone IP pour « VersMondeIP » = 10.2.17.160). Enfin, il faut rattacher chaque
et @IP du téléphone IP pour « VersMondeIP » = 10.2.17.160). Enfin, il faut rattacher chaque
et @IP du téléphone IP pour « VersMondeIP » = 10.2.17.160). Enfin, il faut rattacher chaque
Remarque importante : dans le cadre de nos TPs, nous avons exclusivement utilisé des IPBX

Remarque importante : dans le cadre de nos TPs, nous avons exclusivement utilisé des IPBX Asterisk, que ce soit en tant que Voice Gateway, ou en tant que Client. Dans ce cas, la mise en place d'un Trunk nécessite une authentification. Nous avons résolu ce problème en créant un « customer » (voir section suivante) correspondant à la Voice Gateway sur le Provider ToIP, et en configurant un enregistrement automatique de la Voice Gateway auprès du Provider ToIP (la configuration de la Voice Gateway est similaire à celle d'un client classique pour l'enregistrement automatique : voir plus loin dans ce document). Si le nom donné par le Provider ToIP au « client » Voice Gateway est 0102030405 par exemple, alors il faudra déclarer le trunk « VersMondeRNIS » avec à la place de l'adresse IP :

0102030405/%dialingnumber%

b) Déclaration du customer

La

déclaration

CUSTOMER.

des

clients

se

fait

à

du customer La déclaration CUSTOMER. des clients se fait à partir du menu Il faut dans

partir

du

menu

Il faut dans un premier temps créer le client (Add::Search / Add Customer). Notez qu'il est possible de créer un seul client, où un ensemble de clients d'un seul coup. Ainsi, quand une nouvelle entreprise veut utiliser les services du Provider ToIP, il suffit de lui affecter une identité client déjà créée, mais non encore utilisée. Dans notre cas, nous ne créons qu'un seul client, que nous appelons Binome*7.

créons qu'un seul client, que nous appelons Binome*7. Ici, le numéro de compte « account number

Ici, le numéro de compte « account number » + « WebUI password » servent d'identifiants pour le client. Notez que ce dernier peut accéder à une interface Web sur a2billing

(http://<@IP

du provider ToIP>/a2billing/customer)

qui lui permettra, après authentification (« WebUI login » + « WebUI password »), de visualiser son compte, et éventuellement recharger son crédit de communications.

et éventuellement recharger son crédit de communications. Notez qu'ici, nous avons opté pour un paiement à
et éventuellement recharger son crédit de communications. Notez qu'ici, nous avons opté pour un paiement à
et éventuellement recharger son crédit de communications. Notez qu'ici, nous avons opté pour un paiement à

Notez qu'ici, nous avons opté pour un paiement à la facture (« POSTPAID CARD »). En cas de choix « PREPAID CARD », le client devra créditer son compte avant de pouvoir passer des appels. De plus, nous avons laissé coché les options de création de profils SIP et IAX (« CREATE SIP CONFIG » et « CREATE IAX CONFIG »). Ainsi, a2billing modifie automatiquement

les

la

et

fichiers

additional_a2billing_sip.conf

pour

rajouter

additional_a2billing_iax.conf

déclaration du profil du client. L'administrateur n'a donc pas

à intervenir.

3) Définition des rates , rates card et callplan Comme nous l'avons précédemment, a2billing est
3) Définition des rates , rates card et callplan Comme nous l'avons précédemment, a2billing est

3) Définition des rates, rates card et callplan

Comme nous l'avons précédemment, a2billing est avant tout un logiciel de taxation. Tout appel téléphonique qui passe par lui (sortants ou entrants, c'est-à-dire vers les réseaux publics ou vers les entreprises clientes) doit pouvoir être taxé. Pour cela, a2billing utilise 3 notions :

un rate (taux en français) est un tarif appliqué vers une destination (pays ou client, appel national, international, …)

un rate card est un ensemble de rates appliqués à différentes destinations, à travers le même trunk (le même provider)

Un callplan est un ensemble de rate cards, que l'on utilise sur la base de la même règle de routage :

LCR (Least Cost Routing) si on recherche le coût le plus pletit pour le Provider ToIP

LCD (Least Cost Dialling) si on recherche le coût le plus petit pour le client Pour résumé, un callplan est un ensemble de tarifs (rate cards) disponibles à travers différents providers, que l'on chois à partir d'une règle de routage prédéfinie.

chois à partir d'une règle de routage prédéfinie. Dans l'exemple que nous avons choisi, nous

Dans l'exemple que nous avons choisi, nous n'utiliserons qu'un seul callplan, basé sur un routage LCD, avec différents rates, mais au travers de deux providers (MondeIP et MondeRNIS). Nous auront donc deux rate cards différents.

Nous commençons par créer les deux rate cards (Rates /

RateCards / Add RateCard) :

les deux rate cards ( Rates / RateCards / Add RateCard ) : Puis il faut
les deux rate cards ( Rates / RateCards / Add RateCard ) : Puis il faut

Puis il faut créer les différents rates dans chaque Rate

Card (Rates / Rates / Add Rate), en les associant à la

bonne RateCard et au bon trunk :

en les associant à la bonne RateCard et au bon trunk : Notez que l'on peut
en les associant à la bonne RateCard et au bon trunk : Notez que l'on peut

Notez que l'on peut facilement distinguer le coût pour le provider (buying rate), et le coût pour le client (selling rate). C'est sur la base de ces informations que les routages LCR et LCD pourront être faits.

Une fois tous les rates créés, on obtient : / CallPlan / Add Callplan ),

Une fois tous les rates créés, on obtient :

Une fois tous les rates créés, on obtient : / CallPlan / Add Callplan ), et

/

CallPlan / Add Callplan), et lui rattacher les deux rate cards :

Il

faut

maintenant

créer

la

callplan (Rates

rate cards : Il faut maintenant créer la callplan ( Rates Pour rattacher les deux rate

Pour rattacher les deux rate cards, il faut aller modifier le callplan ExempleTP (voir figure ci-après, en haut de la colonne suivante)

4)

Configuration du client

Nous considérons ici que le client Binome*7 est un IPBX Asterisk. La configuration du client se déroule en deux étapes :

enregistrement auprès du provider ToIP

routage des appels sortants vers le provider ToIP

a) enregistrement auprès du provider

vers le provider ToIP a) enregistrement auprès du provider Il faut pour cela modifier le fichier

Il faut pour cela modifier le fichier sip.conf (on suppose

que le trunk entre le client et le provider ToIP est un trunk

sip). Dans ce fichier, il faut déclarer un profil sip de type peer qui correspond au profil sip qui a été créé automatiquement sur le provider ToIP.

sip qui a été créé automatiquement sur le provider ToIP. Notez que la section sip est

Notez que la section sip est appelée provider, alors que le nom d'utilisateur sur le Provider ToIP est 4412358181. Cela ne pose pas de problème au sens Asterisk, mais cela demande un peu plus de gymnastique au niveau de l'authentification … pour plus de simplicité, on peut appeler la section sip 4412358181, ce qui évitera tout problème futur.

b) Enregistrement auprès du provider ToIP

Il faut ensuite faire l'enregistrement automatique du client

sur le provider ToIP. Pour cela, ajoutez la ligne suivante

dans la partie register su fichier sip.conf de l'Asterisk du client :

su fichier sip.conf de l' Asterisk du client : Là encore, si on a décidé d'appeler

Là encore, si on a décidé d'appeler 4412358181 la section sip définissant le provider ToiP (et non pas provider comme dans l'exemple ci-dessus), il faut remplacer provider par 4412358181 dans la ligne ci-dessus.

Après recharge des paramètres SIP sur l'Asterisk du

client (commande sip reload dans le CLI), vous devriez

voir

apparaître un message d'enregistrement du client sur le

CLI

du provider ToIP.

A partir de ce moment, vous devriez être capable de passer un appel à travers votre Provider. Ceci étant, cela ne va pas marcher tout de suite … en effet, a2billing n'a pas

encore tous les éléments pour router les appels sortants : il lui manque la définition des destinations pour ces appels, c'est-à-dire des lignes de routage qui disent quel est le prochain destinataire quand on cherche à joindre un certain numéro. Ici, il y aura deux cas de figure :

on cherche à appeler un numéro SDA d'un autre client de a2billing. Le prochain destinataire sera alors l'IPBX du client

on cherche à joindre un numéro public (IP / RNIS / GSM/UMTS). Le prochain destinataire sera alors la VoiceGateway

La configuration de ces destinations est effectuée de la même manière que celle concernant les appels entrants. C'est ce que nous expliquons dans le paragraphe suivant.

5)

Configuration des appels entrants

Comme pour tout IPBX, il est nécessaire de dire au Provider comment router les appels entrants, c'est-à-dire les appels en provenance des réseaux publics, et à destination de ses clients. Plus exactement, il faut lui indiquer quel client possède quel numéro SDA. Les numéros donnés par des providers ToIP à leur clients sont appelés DID (Direct Inward Dialling = Sélection Directe à l'Arrivée (SDA) en français).

Dans un premier temps, il faut créer ses numéros DID

(Inbound DID / Add::Search / Add DID) :

ses numéros DID ( Inbound DID / Add::Search / Add DID ) : Notez que l'on

Notez que l'on peut choisir de taxer ou non les appels entrants (option BILLING). Un coût de location peut aussi

être rajouté (Selling Rate / monthly rate).

Une fois les DID créés, il faut créer les destination associées. Une destination indique à a2billing, quel numéro

de DID est associé à quel client. Les destinations se crééent

dans le menu Inbound DID

destination (figure colonne suivante).

/ Destination

/

Add

Notez qu'ici, la destination associe le DID 0558004000 au client 4412358181, et plus exactement au poste 100 de ce client (équivalent d'un Dial(SIP/100@4412358181) sous Asterisk).

d'un Dial(SIP/100@4412358181) sous Asterisk). Une fois toutes vos destinations créées, vos clients
d'un Dial(SIP/100@4412358181) sous Asterisk). Une fois toutes vos destinations créées, vos clients

Une fois toutes vos destinations créées, vos clients doivent être en mesure de recevoir des appels en provenance des réseaux publics.

En ce qui concerne les destinations qui ne vont pas vers un client, mais vers le réseau public, le principe est le même. On créé les DID, puis on créé les destinations, en mettant comme destinataire la Voice Gateway.

6)

Accueil de appels sortants sur le Provider ToIP

Si toutes vos destinations sont créées, et si vos clients sont

bien enregistrés, vous devez être capable de passer des appels d'un client vers un réseau public. Cependant, vous remarquerez que lors d'un tel appel, le provider ToIP effectue plusieurs opérations :

 

dans un premier temps, il dit combien de crédit il reste au client, et combine de temps l'appel peut durer.

il

demande

ensuite

de

composer

le

numéro

à

 

appeler

 

Si

vous n'avez plus de crédit, vous pouvez recharger votre

compte dans le menu Customers / add::Search / add

credit to this card (icône dollar sur la ligne du client). Pour supprimer l'annonce de la balance (crédit restant), il faut positionner la variable Say Balance after Auth à No

dans la partie System settings / Global list. Enfin,

pour ne pas annoncer la durée maximale autorisée de l'appel, positionnez la variable Say Duration à No, toujours dans la

partie System settings / Global list.

Enfin, si on souhaite que le Provider ne demande pas le numéro à appeler, et qu'il compose directement le numéro fourni lors de l'appel, il faut modifier la variable Use DNID

dans la partie System settings / Global list, et la

positionner à Yes. Ainsi, a2billing utilisera le numéro destinataire de la requête SIP comme numéro à appeler.

7)

Conclusions

A travers ce chapitre, nous avons voulu guider le lecteur

vers une première configuration d'Asterisk + a2billing la plus simple possible. De nombreuses options n'ont pas été

abordées, et plusieurs solutions décrites ici doivent pouvoir être largement améliorées.

IV. DIFFÉRENTES UTILISATIONS POSSIBLES DU PROVIDER TOIP EN TP

Sans trop rentrer dans les détails, nous estimons pouvoir utiliser notre Provider ToIP de plusieurs façons dans les TPs de téléphonie sur IP :

il peut être utilisé comme passerelle entre le réseau téléphonique privé de l'entreprise, et les réseaux publics. La différence d'utilisation par rapport à une Media Gateway n'est pas flagrante, si ce n'est l'aspect authentification, et la possibilité de regarder la taxation des appels passés sur l'interface Web « customer ». Cela reste néanmoins un composant support intéressant, se rapprochant de ce que l'on trouve dans la réalité.

il peut aussi faire l'objet d'un TP. Outre l'aspect création de providers, et de customers, d'autres points nous semblent intéressants, et notamment les aspects taxation. Les étudiants peuvent aborder les notions de « buying cost » et de « selling cost », c'est-à-dire la différence entre ce que coûte réellement une communication au Provider ToIP, et le coût qui est facturé au client. On peut notamment mettre en place différents niveaux de fidélisation pour ses clients, en créant des « call plans » différents (IVOIRE, ARGENT, OR, PLATINE) qui implémenteront un écart coût facturé – coût d'exploitation plus ou moins grand (plus le client est fidèle, c'est-à-dire plus il passe d'appels au travers du provider ToIP, plus il aura un niveau de fidélité lui permettant d'atteindre des coûts de facturation proches des coûts de facturation). De plus, les notions de LCR (Least Cost Routing) et LCD (Least Cost Dialling) pourront aussi être abordées, en créant plusieurs providers, aux coûts différents. Ainsi, pour les mêmes appels, les étudiants peuvent mettre en avant la différence entre choisir le coût d'exploitation le moins cher (LCR) et le coût de facturation le moins cher (LCD).

Quoi qu'il en soit, le lecteur trouvera très certainement d'autres utilisations possibles à cet outil, en fonction de ses propres TPs.

V. CONCLUSION

Dans cet article, nous avons présenté une solution pour mettre en place un Provider ToIP utilisable en TPs de téléphonie sur IP. La solution est peu onéreuse, puisqu'elle nécessite un serveur informatique sous Ubuntu, l'IPBX logiciel gratuit Asterisk, et le logiciel de taxation gratuit a2billing. Après avoir présenté ces différents logiciels, nous

avons détaillé la configuration du Provider ToIP, en nous appuyant sur un exemple utilisable en salle de TP. Enfin nous avons donné différentes pistes d'utilisation dans les séries de TP.

VI.

ANNEXES

A. Installation d'Asterisk et de ses composants

un

systèmes Linux Ubuntu (version 10.04). De plus, nous supposons que l'accès au réseau Internet est déjà configuré.

Prérequis

:

Nous

supposons

que

nous

utilisons

L'installation d'Asterisk peut être effectuée en lignes de commande depuis un terminal, ou à travers le logiciel de gestion des paquets Synaptic. Nous ne présentons ici que l'installation par lignes de commande.

Les paquetages d'installation d'Asterisk sont depuis plusieurs années intégrés dans la distribution Ubuntu (Debian). Aussi, il n'est pas nécessaire de récupérer les sources du logiciel, et de les compiler. Il suffit juste d'installer les paquetages pré-compilés :

#apt-get install asterisk

La gestion automatique de dépendances de paquets va automatiquement calculer la liste des paquets nécessaires à l'installation d'Asterisk. Certains de ces paquets sont peut être déjà installés, d'autres peuvent être installés, mais nécessitent une mise à jour, et enfin certains paquets doivent être nouvellement installés. Dans tous les cas, apt-get vous donne toutes ces informations, et attend votre accord pour commencer le téléchargement des paquets (nouveaux + mises à jour) et leur installation. Notez que cette installation ne prend en compte que les paquetages indispensables au bon fonctionnement d'Asterisk. Il est possible ensuite d'installer d'autres paquetages, afin de rajouter des fonctionnalités à Asterisk, ou de le personnaliser. Par exemple :

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

va installer des prompts vocaux français supplémentaires, qui pourront être utilisés en remplacement des prompts vocaux anglais installés par défaut. En particulier, si l'on souhaite pour jouer des musiques d'attente, Asterisk doit faire appel à un player externe (par exemple un player mp3). Dans nos manipulations, nous avons toujours utilisé

madplay:

#apt-get install madplay

La configuration des musiques d'attente se fait dans le

fichier /etc/asterisk/musiconhold.conf , dans la section [default]:

[default] mode=custom

directory=/var/lib/asterisk/mohmp3

application=/usr/bin/madplay -Q -o raw:- --mono -R 8000 -a -12

Il ne reste alors qu'à mettre les fichiers mp3 que vous souhaitez utiliser comme musique d'attente dans le répertoire

/var/lib/asterisk/mohmp3

B. Installation de A2billing

L'installation de A2Billing se fait uniquement en ligne de commande. Il n'existe pas (du moins au moment de l'écriture de cet article) de paquetage pré-compilé pour ce logiciel.

Dans un premier temps, il faut récupérer l'archive contenant les fichiers d'installation. Elle peut être trouvée sur le site svn de a2billing :

#svn co --username guest --password guest

http://svn.a2billing.net/svn/asterisk2billing/tags

/1.8.1 /usr/local/src/a2billing/

Rem : Si vous ne disposez pas de l'outil svn, tapez commande suivante :

#apt-get install subversion

la

Attention, plusieurs versions de a2billing sont disponibles. A l'heure où nous écrivons, la version la plus récente est la 1.8.1 (c'est l'exemple pris dans la commande ci-dessus). Si vous souhaitez utiliser une version antérieure, il suffit de remplacer 1.8.1 par le numéro de version souhaité dans la commande ci-dessus. La liste des versions disponibles peut être connue en se connectant sur le site

utilisateur guest, mot de passe guest.

Une fois cette opération effectuée, une arborescence complète de sous-répertoires et de fichiers est maintenant

présente dans le répertoire /usr/local/src/a2billing.

Avant d'aller plus loin, A2billing a besoin de différents logiciels pour pouvoir fonctionner. Plus précisément, il doit être installé sur un serveur LAMP. On parle de serveur LAMP pour qualifier un serveur Web mis en œuvre sous Linux, à l'aide des logiciels Apache (le serveur Web), MySQL (base de données) et PHP (interpréteur de scripts PHP pour construire des pages Web dynamiques).

#apt-get install libapache2-mod-php5 php5 #apt-get install php5-common php5-cli php5-mysql #apt-get install mysql-server apache2 php5-gd #apt-get install openssh-server php5-mcrypt #apt-get install php-gettext php5-sqlite #apt-get install python-mysqldb python-psycopg2 #apt-get install python-sqlalchemy #apt-get install libperlspeak-perl

Bien entendu, a2billing nécessite aussi Asterisk pour pouvoir mettre en place les appels et les router. Si cela n'a

pas déjà été fait, vous pouvez vous référer à l'annexe A pour installer Asterisk.

Nous pouvons maintenant passer à la mise en place et configuration de a2billing. Le premier élément à mettre en place est la base de données dans laquelle a2billing va stocker ses tickets de taxation, c'est-à-dire le résumé de chaque appel (heure de début, heure de fin, appelant, appelé, coût, …).

#cd /usr/local/src/a2billing #mysql -u root -p < DataBase/mysql-5.x/a2billing- createdb-user.sql

Le script createdb-user.sql permet de créer une base de données appelée mya2billing, associée à l'utilisateur a2billinguser, mot de passe a2billing, sur la machine

locale (host = 127.0.0.1).

Il faut maintenant créer les tables adéquates dans cette

base de données. Pour cela, nous utilisons un autre script :

#/usr/local/src/a2billing/Database/mysql-5.x/

install-db.sh

Le script install-db.sh demande le nom de la base de données (mya2billing), l'adresse de la machine sur laquelle

se trouve la base de données (127.0.0.1), le nom d'utilisateur (a2billinguser) et le mot de passe (a2billing) pour insérer les tables dans la base de données.

A l'issu de cette phase, vous pouvez vérifier que la base de

données est bien configurée, en vous y connectant :

#mysql -u root -p mya2billing

Vous devriez ensuite avoir 97 tables différentes dans votre base de données :

mysql>show tables; mysql>exit

Il faut maintenant configurer a2billing pour qu'il utilise la

base de données mya2billing. Pour cela, tapez les

commandes suivantes :

#cp a2billing.conf /etc #gedit /etc/a2billing.conf &

Modifiez la section [database] comme suit :

[database]

hostname=127.0.0.1

port=3306

user=a2billinguser

password=a2billing

dbname=mya2billing

dbtype=mysql

On créé ensuite les fichiers de configuration d'Asterisk dans lesquels a2billing enregistrera les profils SIP / IAX des clients, et on donne les droits à l'utilisateur www-data sur ces fichiers (pour qu'ils puissent être modifiés depuis l'interface

Web de a2billing) :

#chmod 777 /etc/asterisk #touch /etc/asterisk/additional_a2billing_sip.conf #touch /etc/asterisk/additional_a2billing_iax.conf #echo \#include additional_a2billing_sip.conf >> /etc/asterisk/sip.conf #echo \#include additional_a2billing_iax.conf >> /etc/asterisk/iax.conf #chown -Rf www-data

/etc/asterisk/additional_a2billing_sip.conf

#chown -Rf www-data

/etc/asterisk/additional_a2billing_iax.conf

On installe ensuite les fichiers sons relatifs à a2billing dans les répertoires d'Asterisk :

#/usr/local/src/a2billing/addons/sounds/

install_a2b_sounds_deb.sh

#chown -R asterisk:asterisk /usr/share/asterisk/sounds

On configure ensuite le manager d'Asterisk pour qu'il accepte d'être « piloté » par a2billing :

#gedit /etc/asterisk/manager.conf &

Rajoutez la section [myasterisk] :

[myasterisk]

secret=mycode

read=system,call,log,verbose,command,agent,user

write=system,call,log,verbose,command,agent,user

On installe ensuite tous les composants AGI (scripts écrits en php) de a2billing qui vont piloter Asterisk :

#mkdir /usr/share/asterisk/agi-bin #chown asterisk:asterisk /usr/share/asterisk/agi-bin #cp -Rf /usr/local/src/a2billing/AGI/* /usr/share/asterisk/agi-bin #chmod +x /usr/share/asterisk/agi-bin/*.php

Enfin, pour finir, on copie au bon endroit (Document Root du serveur apache2 = /var/www) toutes les pages web de l'interface Web de a2billing :

#mkdir /var/www/a2billing #chown www-data:www-data /var/www/a2billing #mkdir -p /var/lib/a2billing/script #mkdir -p /var/run/a2billing #cp -rf /usr/local/src/a2billing/admin

/var/www/a2billing

#cp -rf /usr/local/src/a2billing/agent

/var/www/a2billing

#cp -rf /usr/local/src/a2billing/customer

/var/www/a2billing

#cp -rf /usr/local/src/a2billing/common

/var/www/a2billing

#chmod 755 /var/www/a2billing/admin/templates_c #chmod 755 /var/www/a2billing/agent/templates_c #chmod 755

/var/www/a2billing/customer/templates_c

#chown -Rf www-data:www-data

/var/www/a2billing/admin/templates_c

#chown -Rf www-data:www-data

/var/www/a2billing/agent/templates_c

#chown -Rf www-data:www-data

/var/www/a2billing/customer/templates_c

Il ne reste plus qu'à relancer Asterisk pour prendre en compte les modifications :

#/etc/init.d/asterisk restart

A partir de ce niveau, l'installation de a2billing est terminée, et son interface Web doit être opérationnelle. Vous pouvez y accéder grâce aux identifiants de connexion suivants :

http://<@IP du serveur>/a2billing/admin

login = root mot de passe = changepassword