Vous êtes sur la page 1sur 32

Installation et configuration

IPBX
1. Installation d’Asterisk
2. Configuration d’Asterisk
• sip.conf
• extensions.conf
• Prise en compte des configurations
3. Ajout de fonctions
• Transfert d’appel
• Mise en attente
• Messagerie vocale
• Configuration du MTA pour la messagerie vocale
• Administration d’Asterisk :
– La console
– Les fichiers de configuration
• La console se lance avec la commande suivante :
– asterisk –r
• Il est possible de placer le paramètre « v » à la fin
de la commande.
• De cette manière la console s’ouvrira en mode
verbeux.
• Plus nous plaçons de « v » à la fin de la
commande, plus nous obtiendrons de debug.
– asterisk -rvvv
• La configuration d’Asterisk se fait dans les
fichiers de configuration.
• Ces fichiers sont placés dans le répertoire
suivant :
/etc/asterisk/
• Pour que les modifications des fichiers soient
prises en compte, il faut relancer Asterisk. Ou
au moins le module concerné.

– asterisk –rv
– sip reload
– reload
Création d’utilisateur
• La configuration des utilisateurs est à faire
dans le fichier users.conf (dans /etc/asterisk/)

• Afin de simplifier la création d’utilisateur, nous


pouvons placer les paramètres communs dans
un Template.

• Les utilisateurs feront alors référence au


Template.
Création d’un Template.

[default_template](!)  ; Nom du template . Le « ! » indique qu’il s’agit d’un


Template
type=friend                   ; Type d'objet SIP (friend = utilisateur)
host=dynamic                  ; L’utilisateur n’est pas associé à une IP fixe
dtmfmode=rfc2833               ; Mode DTMF
disallow=all                   ; Interdit tous les codecs
allow=ulaw                     ; Autorise le codec ulaw
nat=never                      ; L'utilisateur ne se trouve pas derrière un NAT
hassip=yes                     ; L’utilisateur possède un compte SIP
hasiax=no                   ; L’utilisateur ne possède pas de compte iax
callwaiting = yes              ; L’utilisateur peut mettre des appels en attente
transfer=yes                  ; L’utilisateur peut transférer des appels
canpark=yes                   ; L’utilisateur peut mettre des appels dans le parking
hasvoicemail=yes              ; L’utilisateur possède une boîte vocale
deny=0.0.0.0/0.0.0.0          ; Range d’IP non-autorisées pour le client
permit=192.168.1.0/255.255.255.0   ; Range d’IP autorisées pour le client
qualify=yes                        ; Permet le monitoring
• Le type d’objet SIP peut prendre 3 valeurs :
Peer
User
Friend

• Le Peer est un objet auquel nous pouvons envoyer


des appels (exemple : le Trunk vers l’ITSP).

• L’User est un objet qui ne peut qu’appeler.

• Le Friend est à la fois Peer et User. Il peut envoyer et


recevoir des appels (exemple : un utilisateur)
Création des utilisateurs 

[100](default_template) ; Numéro SIP et Template utilisé


fullname = Marc Aubert  ; Nom complet de l'utilisateur
username = maubert      ; Nom d'utilisateur
secret=password               ; Mot de passe
mailbox = 100                  ; N° de boîte vocale
context=dept_1                 ; Contexte de l’utilisateur
Configuration des Voicemails
• Les Voicemails permettent de laisser des messages
aux utilisateurs lorsce que ceux-ci ne sont pas
disponibles. Il s’agit donc de leur messagerie vocale.

• Pour se connecter à leur messagerie, les utilisateurs


devront composer un certain numéro, puis entrer
un mot de passe.

• Le fichier à éditer est /etc/asterisk/voicemail.conf


Au début du fichier, une section générale définira les paramètres
généraux des Voicemails.
 
Exemple :
[general]
maxmsg=100  ; Nombre max de message sur la Voicemail.
Si elle est pleine, il n'est pas possible de rajouter des
messages
maxsecs=0; Durée max d'un message. "0" = pas de limite
minsecs=2 ; Durée minimum d'un message
maxlogins=3  ; Nombre max d'erreur de login
review=no   ; Permet à l'appelant de réécouter son message avant
de le transmettre à la Voicmail. Accessible en
terminant le message par #
saycid=no      ; Dicte le numéro de l'appelant avant de jouer le
message qu'il a laissé
Dans la suite du fichier, nous définirons les utilisateurs.
[dept_1_vm]
100 => 1234, Marc Aubert
101 => 1234, Alain Aldric
 
[dept_2_vm]
200 => 1234, Leon Morgan

Ici, “1234” correspond au mot de passe de la Voicemail de


l’utilisateur.
 
Il est possible de désactiver l’utilisation du mot de passe, en ne
spécifiant rien avant la virgule.
200 => , Leon Morgan
N’oubliez pas de relancer Asterisk pour prendre
en compte les modifications.
asterisk –rv
reload

Ou au moins la configuration des Voicemails.


asterisk –rv
voicemail reload
Le DialPlan
• Le DialPlan est ce qui va définir le routage des
appels à travers le serveur.

• La configuration du DialPlan est contenue


dans le fichier suivant :
/etc/asterisk/extensions.conf
Dans le fichier extensions.conf, nous devrons définir le comportement
d’Asterisk vis-à-vis des appels.

Par exemple, que ce passe-t-il lors-ce-que Asterisk reçoit un appel à destination du


numéro 100 ?
• Nous allons définir une règle qui dit qu’il faut faire sonner le téléphone de
l’utilisateur 100,
• et ce pendant 30 secondes,
• avant de renvoyer l’appelant sur la messagerie de l’utilisateur 100.

De même, pour permettre à un utilisateur de consulter sa messagerie, nous définirons


un numéro associés à la messagerie du groupe d’utilisateur.
Par exemple, pour les utilisateurs 100 à 190, s’ils composent le numéro 199, ils
tomberont sur leur messagerie.
Etc…

exten => 100,1,Dial(SIP/${EXTEN},30)


exten => 100,2,Voicemail(${EXTEN}@dept_1_vm)
exten => 199,3,VoiceMailMain(${EXTEN}@dept_1_vm)
Fonctionnement du fichier extensions.conf
Les contextes:
• le DialPlan est agencé sous forme de contexte.
• Chaque utilisateur appartient à un contexte, d’après le fichier user.conf
• Quand un utilisateur lance un appel, Asterisk va chercher, dans le
contexte associé à l’utilisateur, les actions à effectuer.
• Les contextes sont définis entre crochet.

[dept_1]
exten => _1[0-8]X,1,Dial(SIP/${EXTEN},30)
exten => _1[0-8]X,2,Voicemail(${EXTEN}@dept_1_vm)
 
[dept_2]
exten => _2[0-8]X,1,Dial(SIP/${EXTEN},30)
exten => _2[0-8]X,2,Voicemail(${EXTEN}@dept_2_vm)
Les Extensions:
• Les entrées dans le fichier extension.conf sont appelées
des extensions.
• Elles se composent comme ceci :
exten => Numéro,Priorité, Applications ()

• Le mot clé « Exten => » marque le début d’une extension.


• Le numéro correspond au numéro de téléphone pris en
compte par l’extension.
• La priorité définie l’ordre des actions de l’extension.
• En effet, nous spécifierons toujours plusieurs actions
dans une extension (voir exemple précédent).
• L’application définit ce que le serveur va faire.
Les numéros:
– Nous pouvons spécifier un numéro bien précis.
exten => 199,1,Answer()
– Ou bien, nous pouvons spécifier un pattern. Le but ici est
de prendre en compte plusieurs numéros. Tout d’abord,
un pattern doit commencer par un « _ ». Ensuite, nous
pouvons utiliser les caractères suivants :
• « X » : correspond aux chiffres de 0 à 9
• « Z » : correspond aux nombres de 1 à 9
• « N » : correspond aux nombres de 2 à 9
• « . » : correspond à un ou plusieurs chiffres
• « ! » : correspond à zéro ou plusieurs chiffres
Nous pouvons aussi utiliser les crochets.
• [1-5] correspond aux nombre de 1 à 5.
• [123] correspond aux nombres 1, 2 ou 3.
Exemples :
exten => _[123].[7-9],1,Answer()
Cette extension englobe tous les numéros
commençant par 1, 2 ou 3, et qui finissent par 7, 8 ou 9.

exten => _0XXXXXXXXX,1, Answer()


Cette extension correspond à tous les numéros à 10
chiffres, qui commencent par 0.

exten => _1[0-8]X,1,Answer()


Cette extension englobe tous les numéros de 100 à
189. Ainsi nous pouvons garder les 10 derniers numéros
comme numéros spéciaux (Voicemail, Conférence, etc…).
Les applications:
Les applications définissent ce que doit faire le serveur.
Ces applications peuvent prendre un ou plusieurs paramètres.

• Answer() : permet de décrocher l’appel


• HangUp() : permet de raccrocher l’appel
• Dial(type/identifier,timeout) :
permet de composer un numéro, avec un timeout en cas
de non-réponse
• VoiceMail(user@context) :
permet de joindre la messagerie de l’utilisateur spécifié
• VoiceMailMain(user@context) :
permet de consulter la messagerie de l’utilisateur
spécifié
Les applications:

• Playback(sound-file) : permet de jouer un son


• SetMusicOnHold(class) : permet de jouer une musique
d’attente
• Goto(contexte,extension,priorité):
permet de se rendre à un
contexte précis, à une certaine extension, à une
certaine priorité

En paramètre de ces applications, nous pouvons utiliser des


variables.
• Les variables:

• ${EXTEN} : Renvoie l’extension actuellement


appelée
• ${CONTEXT} : Renvoie le contexte actuel
• ${CALLERID(name)} : Renvoie le nom de la personne qui
appel
• ${CALLERID(num)} : Renvoie le numéro de la personne qui
appel
• ${DATETIME} : Renvoie la date actuelle au format
DDMMYYYY-HH:MM:SS
• ${PRIORITY} : Renvoie la priorité actuelle de
l’extension
Les variables:

Exemples :
exten => _1[0-8]X,1,Dial(SIP/${EXTEN},30)
exten => _1[0-8]X,2,Voicemail(${EXTEN}@dept_1_vm)
 
Le « ${EXTEN} » de la  priorité 1 fait référence au numéro composé par
l’appelant, ce qui permet de joindre le numéro qui a été composé.

Le « ${EXTEN} » de la  priorité 2 permet de joindre la Voicemail.

exten => 199,1,Answer()


exten => 199,2,VoiceMailMain(${CALLERID(num)}@dept_1_vm)
 
Le ${CALLERID(num)} fait référence au numéro de l’appelant, et lui
permet de joindre sa Voicemail.
Les extensions spéciales:
Il existe aussi certaines extensions spéciales.

L’extension « I »
Correspond à l’extension qui est appelée quand l’appelant
compose une extension qui n’existe pas dans le contexte ou dans
l’IVR (standard auto avec choix au clavier).

L’extension « t »
Correspond à l’extension qui est appelée lors d’un timeout. Par
exemple, si l’utilisateur ne choisit pas d’option dans un IVR.

L’extension « h »
Correspond à l’extension qui est appelée lors-ce-que l’utilisateur
raccroche.
Les extensions spéciales:

L’extension « s »
Correspond à l’extension qui est appelée lorsceque le serveur
n’a pas d’information sur le numéro appelé (cas typique d’un
appel sur une ligne analogique).

Par exemple, dans le contexte d’un IVR, si l’utilisateur ne fait


pas de choix, nous pouvons raccrocher.
exten => t,1,Hangup()
 
Ou encore, en cas de choix invalide, nous pouvons jouer un
son.
exten => i,1,Playback(invalid)
Configuration du DialPlan
Autorisons les appels internes au contexte dept_1 et dept_2, et permettons la consultation de
la messagerie.
 
[dept_1]
 
exten => _1[0-8]X,1,Dial(SIP/${EXTEN},40)
exten => _1[0-8]X,2,Voicemail(${EXTEN}@dept_1_vm)
 
exten => 199,1,Answer()
exten => 199,2,VoiceMailMain(${CALLERID(num)}@dept_1_vm)
 
[dept_2]
exten => _2[0-8]X,1,Dial(SIP/${EXTEN},40)
exten => _2[0-8]X,2,Voicemail(${EXTEN}@dept_2_vm)
 
exten => 299,1,Answer()
exten => 299,2,VoiceMailMain(${CALLERID(num)}@dept_2_vm)
A présent, il nous faut autoriser les utilisateurs de contexte
différents à s’appeler.
(ajouter les extensions dans le contexte indiqué)

[dept_1]
exten => _2XX,1,Goto(dept_2,${EXTEN},1)
 
[dept_2]
exten => _1XX,1,Goto(dept_1,${EXTEN},1)
 
Scénario :

Si un utilisateur appel le numéro 100, et qu’il n’y a pas de


réponse au bout de 30 secondes, l’appel est redirigé vers
le 101. Si ce dernier ne répond pas non plus, l’appelant
tombe sur la boite vocale du 100.
Voici la configuration à mettre en place
dans extensions.conf :

[dept_1]
exten => 100,1,Dial(SIP/100,30)
exten => 100,2,Dial(SIP/101,30)
exten => 100,3,Voicemail(${EXTEN}@dept_1_vm)
À vos claviers maintenant . . .

Vous aimerez peut-être aussi