À vrai dire, Asterisk fonctionne quand même avec de la potion magique, parce qu'il fait tout ce que tu peux imaginer, pour un PABX.
Un IPBX, c'est quoi alors ?
Déjà, un IPBX, c'est un PABX qui est juste connecté sur le grand Internet (enfin normalement).
Et un PABX alors ?
J'y viens ! Un PABX, c'est un outil pour que nos Gaulois et Romains puissent mieux gérer leurs communications téléphoniques entre Rome et Lutèce.
Autrement dit : il faut être au moins deux (de toute façon, la téléphonie, seul, même pour Gollum, c'est pas génial).
Mais un PABX permet, par exemple, d'avoir plusieurs numéros de téléphone pour un seul téléphone, de faire une conférence, de décrocher pour toi pour faire répondeur, et plein plein d'autres choses. De toute façon, si tu en veux plus, tu ouvres Encarta Wikipédia et tu cherches PABX dedans.
Tout ça pour dire : Asterisk, c'est un IPBX.
Pourquoi je vais expliquer comment configurer Asterisk en 5 minutes ?
Simplement, parce que j'ai eu à mettre en place ça dans l'entreprise où je suis actuellement (Makina Corpus) et ce n'est absolument pas le cœur de métier de l'entreprise (mais vraiment pas).
En vérité, ça fonctionnait plus ou moins bien avec plusieurs téléphones connectés sur la base DECT du Modem/Routeur du FAI, mais forcément quand une personne utilisait la ligne, l'entreprise ne pouvait plus recevoir d'appels (quand tu es chez toi, ça permet de ne plus recevoir les appels de ton ex/grand-mère/père, mais en entreprise c'est un peu con de plus recevoir les appels de tes clients) ou quand la machin box de chez crétin.fr a des problèmes, tu ne peux que subir.
La téléphonie, ça marchera jamais !
Voilà, ceci était une introduction (oui, ça promet pour la suite, mais j'ai dit Asterisk en 5 minutes, j'ai jamais dit qu'il faudrait 5 minutes pour lire).
Pour suivre ce billet, ça sera beaucoup plus facile si tu as ça :
- Au moins un compte SIP (pour info, Free et SFR ça marche gratuitement si tu es chez eux, les autres, je sais pas — il faut payer) ;
- Un serveur avec Debian (enfin ça fonctionnera avec d'autre distribution, t'auras à adapter) ;
- Des connaissances pour administrer une machine autrement qu'avec une interface graphique ;
- Au moins un téléphone IP (ou un logiciel sur ton PC... enfin n'importe quoi capable de parler le SIP) ;
- Un ami (mais si tu n'en as pas, tu peux t'arranger avec le service vocal des filles de ta région ou adopte un mec).
Ce que l'on va voir, pas forcément dans l'ordre : créer un compte SIP local, se connecter au compte SIP de ton fournisseur SIP, établir un plan de numérotation.
Installation
Avec debian, c'est relativement complexe, accroche-toi bien :
apt-get install asterisk asterisk-core-sounds-fr
Voilà, c'est installé.
Alors, tu liras peut-être qu'il vaut mieux prendre la dernière version à compiler depuis les sources, mais franchement, la version fournie par debian marche très bien.
Configuration
Les fichiers de configuration sont dans le dossier /etc/asterisk, il y en a plein mais on ne va en voir que 3.
sip.conf
C'est le nom du fichier, il doit y avoir plein de commentaires, et un exemple de configuration, le mieux c'est de le garder pour référence et de partir sur un fichier vide.
La syntaxe du fichier correspond à un fichier .ini, c'est-à-dire qu'il y a des sections déclarées avec un mot entre crochet et des options dans chaque section.
Donc, on commence le fichier par la section general, qui correspond aux options standard, j'explique en-dessous les options essentielles qu'il faudra modifier.
[general] bindport=5060 bindaddr=0.0.0.0 srvlookup=yes ; Compte chez cretin.fr register => 0123456789:TheMotDePasse@cretin.fr context=appel-entrant language=fr qualify=yes nat=yes
La ligne register, ça permet de recevoir les appels, tu as le numéro de téléphone de cretin.fr, le mot de passe et l'adresse de ton fournisseur.
[forfait-cretin] type=peer context=cretin secret=TheMotDePasse username=0123456789 fromuser=0123456789 host=cretin.fr domain=cretin.fr nat=yes insecure=invite
Ici, on définit une section pour pouvoir émettre des appels depuis le compte cretin.fr, au milieu des options pour le nom d'utilisateur, le mot de passe, etc. que je te laisse deviner (et adapter), il y a une option context qui est importante, mais on verra ça plus tard.
Ensuite, on définit un compte SIP qu'on utilisera en local avec notre téléphone VoIP.
[1000] type=friend context=phones username=1000 secret=MotDePasse callerid=Poste 0 host=dynamic insecure=port nat=yes
L'ordre des sections dans le fichier n'a pas d'importance, l'ordre des options dans chaque section n'a pas d'importance non plus.
Dans le cas présent, les mots de passe sont écrits en clair, c'est pour ça que le fichier ne doit être lisible que par l'utilisateur asterisk.
Il y a moyen de le mettre en md5 pour qu'ils ne circulent pas en clair, mais pour l'instant, ça sera plus simple et ça évitera des problèmes.
Voilà, si tu as bien fait tes copier-coller, tu as maintenant un compte SIP pour toi et le compte SIP de crétin.fr actif.
C'est bien mais comment recevoir (ou émettre) des appels ?
C'est là qu'arrive le :
Plan de numérotation
Il s'agit de deux fichiers de configuration :
- extensions.ael
- extensions.conf
Je commence par le fichier extensions.conf parce qu'il s'agit de l'ancien format, qui va disparaître un jour prochain.
Donc tu mets ça dedans, je ne t'expliquerai pas pourquoi, pas la peine de me sortir tes yeux de chat potté, ça ne prendra pas avec moi.
[general] static=yes writeprotect=no autofallthrough=yes clearglobalvars=no priorityjumping=no [globals] CONSOLE=Console/dsp
L'autre fichier, c'est extensions.ael et c'est lui va définir les règles pour recevoir et envoyer des appels.
Ce fichier n'est pas avec la syntaxe des autres fichiers, mais la syntaxe Asterisk Extensions Language.
On va commencer par définir un contexte pour recevoir les appels, le contexte correspond à ce qui est défini dans le fichier sip.conf
context appel-entrant { s => { Dial(SIP/1000,15); Hangup(); }; };
Qu'est ce que ça signifie ?
Simplement qu'un appel entrant, qui rentre dans ce contexte, va faire sonner le compte SIP numéro 1000 pendant 15 secondes, et s’il n'y a rien, on raccroche.
Deuxième contexte du fichier sip.conf, cretin. Là, on va simplement lui dire d'inclure le contexte appel-entrant de cette manière.
context cretin { includes { appel-entrant; }; };
À partir de là, tu peux déjà recevoir des appels, mais ça serait mieux de pouvoir en passer aussi.
Alors on va faire un contexte appel-sortant, tu peux l'appeler autrement.
Tu remarqueras aussi que ce contexte n'est pas défini dans le fichier sip.conf
context appel-sortant { 327837 => { Answer(); Set(COUNT=11); start: GotoIf($[${COUNT} > 0]?:goodbye); SayNumber(${COUNT}); Set(COUNT=$[${COUNT} - 1]); Goto(start); goodbye: Hangup(); }; _X. => { Dial(SIP/${EXTEN}@forfait-cretin); Hangup(); }; };
La première partie du fichier, c'est pour les gens désespérés qui n'ont pas d'amis, tu prends ton téléphone/client sip et tu appelles le numéro en question (327837).
Par contre, quand tu as des amis, ou que tu veux appeler les filles de ta région/adopte un mec, tu passes par la deuxième partie.
La première chose, c'est _X. qui définit pour quels numéros on exécute les actions qui suivent. Et dans le cas présent _X. ça signifie tous les numéro de téléphone.
On peut faire plus précis, par exemple, si tu ne veux pas pouvoir téléphoner vers les portables, il faudra mettre ça à la place : _[0-57-9]X. (pour plus de détail, voir la doc).
La commande Dial va ensuite passer un appel via le compte SIP en passant le numéro de téléphone que tu as composé avec le forfait défini dans le fichier sip.conf.
Fin
Voilà, une fois que tu as fait les modifications, tu n'as plus qu'à redémarrer le serveur Asterisk et configurer ton client SIP pour se connecter sur ton compte local.
Tu peux enfin passer et recevoir des appels.
Et là tu te dis « mais pourquoi il y a autant de fichier ?! ».
Il y a deux raisons :
- Le Gaulois, c'est poilu, donc forcément ça laisse des poils partout.
- Asterisk est un outil puissant et, là, on n'utilise quasiment rien de ce qu'est capable de faire Asterisk.
Dans ce qu'il peut être pratique de rajouter, c'est une messagerie, ou la possibilité d'avoir des conférences, changer le répondeur quand il n'y a plus personne, avoir une musique d'attente (et tu n'es pas obligé d'avoir le printemps).
Pour aller plus loin
Je recommande de lire le livre Asterisk The Future of Telephony qui est certes en anglais, mais très bien.