Dernière mise à jour : 07/12/2005
Asterisk est un logiciel vous permettant d'emuler completement un système téléphonique (PBX) et ce de façon logicielle avec les téléphones internet (VoIP) ainsi que l'intégration possible avec des PBX matériels si vous désirez ajouter des fonctionalités à votre existant. Cet article va vous permettre de mettre en place un serveur VoIP avec des téléphones IP physiques ou logiciels. Donc si vous ne connaissez pas encore le site officiel d'Asterisk, un petit passage s'impose par ici : http://www.asterisk.org. Le système décrit ici a été installé sur Debian Linux mais il est tout à fait possible d'utiliser toute autre plateforme.
Donc commencez par installer les paquets suivants : asterisk asterisk-h323 asterisk-sound-files. Il faut ensuite editer le fichier /etc/asterisk/sip.conf . Dans cet exemple, on utilise des adresses internet publiques. Prenons en exemple : 193.120.133.0/24. Le serveur sera en 193.120.133.166 et les clients commencent Ă .1. Voici donc le fichier de configuration :
; SIP Configuration for Asterisk [general] ; Port to bind to port = 5060 ; Address to bind to bindaddr = 0.0.0.0 ; remplacez ici le nom et le mot de passe avec celui que ; votre fournisseur SIP vous a donne. Le fournisseur_sip ; represente le serveur SIP distant Ă contacter. Le numero ; 33766... represente le numero de telephone sur lequel on ; peut contacter le serveur. register => nom_utilisateur_srv_sip:mot_de_passe_srv_sip@fournisseur_sip/33766123456 [101] type=friend callerid=(utilisateur1) username=utilisateur1 secret=mot_de_passe_utilisateur1 host=dynamic defaultip=193.120.133.1 context=internal canreinvite=yes dtmfmode=rfc2833 mailbox=101@default [fournisseur_sip] type=peer secret=mot_de_passe_srv_sip username=nom_utilisateur_srv_sip host=fournisseur_sip fromuser=nom_utilisateur_srv_sip fromdomain=votre_domaine nat=yes ; la ligne ci-dessous defini un contexte qui est ; parametre dans le fichier extensions.conf context=depuis-fournisseur_sip [vers-fournisseur_sip] type=peer ; remplacer par l'adresse du fournisseur SIP host=fournisseur_sip context=default
Il faut à présent définir les extensions. Pour ce faire, éditez le fichier /etc/asterisk/extensions.conf. L'exemple ci-dessous considère que l'on vous a alloué un numéro de téléphone pour joindre le serveur (33766123456), le 33 defini le code international pour la France (il est conseillé de l'utiliser). L'extension 666 est utilisée pour un système de conférence (dont je parle plus bas). Enfin vous définissez chacune des extensions avec les fonctionalités souhaitées. Ici dans l'ordre, le serveur fait sonner l'extension et si le téléphone ne réponds pas ou est occupé, redirige vers le système de messagerie.
; Extensions configuration for Asterisk [general] static=yes writeprotect=no [globals] ; Define global variables here PHONE1=SIP/101 [internal] include => default [default] ; les 5 lignes dessous servent a aiguiller le ; numero entrant vers une extension interne exten => 33766123456,1,Answer() exten => 33766123456,2,Wait,2 exten => 33766123456,3,Background(vm-extension) exten => 33766123456,4,DigitTimeout,10 exten => 33766123456,5,ResponseTimeout,10 ; la ligne dessous declare l'extension pour les conferences exten => 666,1,Meetme,54321 ; les 5 lignes ici declarent la premiere extension ; du reseau qui reponds au numero 101 exten => 101,1,Dial(${PHONE1},40,t) exten => 101,2,Answer() exten => 101,3,Voicemail,u221 exten => 101,103,Voicemail,b221 exten => 101,4,Hangup() ; les 2 lignes servent a declarer le serveur de ; messagerie qui est accessible a l'extension 171 exten => 171,1,VoiceMailMain2 exten => 171,2,Hangup ; les utilisateurs peuvent faire le 0 pour composer ; n'importe quel numéro de téléphone exten => _0.,1,Dial(SIP/${EXTEN:1}@fournisseur_sip,30,r)
Il faut ensuite éditer /etc/asterisk/voicemail.conf pour définir les boites vocales de vos utilisateurs. Ce fichier nécessite très peu de configuration, il suffit d'éditer deux zones : zonemessages et default. Dans la zone default, on declare l'utilisateur 101 qui a l'adresse email utilisateur1@votre_domaine et pour lequel on decide qu'il est dans la zone de paris, que le serveur n'attachera pas le message au mail et qu'il recevra un message email si un message vocal a été laissé sur le serveur. Le mot de passe de la boite vocale est ici 101999666.
; on declare le fuseau horaire ici [zonemessages] paris24=Europe/Paris|'vm-received' Q 'digits/at' R ; on declare ici la boite vocale des utilisateurs [default] 101 => 101999666, Utilisateur1, utilisateur1@votre_domaine,,tz=paris|attach=no|saycid=yes|dialout=fromvm|callback=fromvm|review=yes|operator=yes|envelope=yes
Il faut ensuite éditer /etc/asterisk/zapata.conf pour définir la boite vocale de vos utilisateurs. Il suffit pour ceci d'ajouter la ligne suivante sous la section [channels]. Ce n'est pas dur mais sans cette ligne, pas de messagerie ...
mailbox=101@default
Nous passons à présent à une partie intéressante d'Asterisk, la possibilité de faire des conférences redirigées vers un seul numéro (dans notre exemple 666). Pour la petite histoire, il faut normalement installer une carte digium pour gérer les conférences. Il existe néanmoins un module kernel qui utilise le gestionnaire d'interruptions de votre bus USB. Il est donc nécessaire d'avoir un serveur avec l'USB correctement configuré et chargé.
Une fois que vous avez vérifié ce point, installez les paquets suivants : zaptel-source libnewt-dev zaptel. Il vous faudra également les kernel-headers de votre version en cours. Une fois installés, il vous faut compiler le module. Décompactez le paquet et allez dans /usr/src/modules/zaptel/ et éditez le Makefile. Cherchez le mot ztdummy puis décommentez-le. Il ne vous reste plus alors qu'à compiler le paquet. Sous Debian, utilisez la commande m-a build zaptel. Il devrait alors sans erreur vous créer un paquet dans /usr/src. Chargez alors les modules avec la commande : modprobe zaptel ztdummy. S'il ne vous insulte pas, vous avez votre timer de conférence !
Editez ensuite /etc/asterisk/meetme.conf et ajoutez la ligne : conf => 54666. Dans cet exemple, on lie une conférence au numéro 54666. Il est possible de restreindre la conférence par un mot de passe en ajoutant : conf => 54321,666999. Ici 666999 est le mot de passe à entrer.
Voilà pour l'introduction à l'installation d'un serveur Asterisk. Je n'ai pas parlé de l'intégration d'un serveur PBX existant vu que je n'en ai pas eu besoin. Je rajouterais bientôt des commandes pour l'intégration de numéros SIP vers le serveur. Si vous avez des questions, je vous conseille l'excellent site http://www.voip-info.org. Vous pouvez bien entendu envoyer un email si vous avez des questions.