Voici quelques lignes pour rappeler les bases des extensions dans le fichier extensions.conf....

Pour rappel, les extensions sont la première parties dans les lignes présentes dans le fichier extensions.conf (en rouge dans les exemples suivant) :

Code:
exten = 1234,1,Dial(SIP/1234)
exten = _XXXX,1,Dial(IAX2/${EXTEN})
exten = s,1,NoOp(Test)
exten = h,1,Hangup()

Alors, commençons par la base, une extension peut être composée de Chiffre, ou de Lettre (Moins pratique pour composer depuis un GSM ) Elle correspondent a ce que l'appelant compose pour joindre quelqu'un, par exemple :

Si je souhaite joindre le compte sip 1234 sur mon serveur lorsque l'on compose le 1234, je mettrais la ligne suivante :

Code:
exten = 1234,1,Dial(SIP/${EXTEN})
Et ainsi de suite pour les comptes suivant par exemple :

Code:
exten = 1234,1,Dial(SIP/${EXTEN})
exten = 1234,1,Dial(SIP/${EXTEN})
exten = 1234,1,Dial(SIP/${EXTEN})
exten = 1234,1,Dial(SIP/${EXTEN})
exten = 1234,1,Dial(SIP/${EXTEN})
exten = 1234,1,Dial(SIP/${EXTEN})
exten = 1234,1,Dial(SIP/${EXTEN})
exten = 1234,1,Dial(SIP/${EXTEN})
Facile, vite fais, enfin presque mais quand est-il pour des installations comprenant plusieurs dizaines, voir centaines de comptes Sip ?

Et bien la, on utilise les templates...... Kesako Une ancienne torture chinoise ? Une nouvelle drogue ? .....

Et non, c'est tout simple, et cela permet des faire matcher des extensions en une seule ligne..... voici comment les utiliser :

Les templates, commence toujours par le sigle :
Code:
_
Et on les composes, avec les caractères suivants :

X, Z, N, [], ., !

Voici comment les utiliser :
Code:
X Correspond à un chiffre entre 0 et 9

Y Correspond à un chiffre entre 1 et 9

Z Correspond à un chiffre entre 2 et 9

[1247-9] Correspond à un chiffre dans la liste suivante : 1,2,4,7,8,9

. Correspond à un chiffre/lettre et plus

! Correspond à un chiffre/lettre et plus, ou à rien
Ci-dessous quelques exemples :

Code:
_XX = 12, 34, 45, 68, 25, 43,00, 01,...
_ZX = 12, 24, 34, 64, 44, 45,.... (Mais pas par exemple 01,02,03,04,...,09)
_NN = 22, 33, 23, 45, 68, ... (Mais pas par exemple 01,02,03,04,...,09, 11, 15, 17, 19)
_[7-9]X = 71,78,91,85,81, (Mais pas par exemple 01,02,03,04,...,09, 11, 15, 17, 19,54,68)
_[a-z] = Correspond à toutes lettre entre a et z en minuscule
_. = Attention peut être dangereux, il donne accès à tout ce qui correspond à un chiffre, ou une lettre au moins (Utiliser plutôt : _X.)
Ainsi pour notre exemple précédent, pour nos connexions, nous pouvons utiliser la ligne suivante :

Code:
exten = _XXXX,1,Dial(SIP/${EXTEN})
ou 
exten = _12XX,1,Dial(SIP/${EXTEN})

Continuons sur quelques extensions particulière :

h : Correspond à l'extension qui est appelée dans le contexte lors d'un hangup (Pour faire un traitement lors du raccrochement)
i : Correspond à l'extension qui est appelée lorsque l'appelant compose une extension invalide (Par exemple une extension non présente dans le contexte)
s : Correspond à l'extension appelée, lorsque l'on a pas d'information sur le numéro appelé, dans un contexte (Appel entrant, sur une ligne analogique par exemple)
t : Correspond à l'extension appelée, lorsque l'appelant arrive à un timeout, après un fichier son par exemple dans un menu vocal, sans action de la part de l'appelant.

fax : extension utilisée pour la détection de fax arrivant sur un canal DAHDI.

a : Extension appelée lors de la pression de la touche *

Et pour finir, ce petit rappel, vous pouvez utiliser pour vos extensions, des match aussi sur le callerid(num) de l'appelant avec le caractère : / :
Code:
exten = 9876,1,NoOp(Ne Sert A Rien Du Tout)
exten = 9876/1234,n,NoOp(1234 est le meilleur)
exten = 9876,n,Hangup()
On peut bien entendu utiliser des templates, pour les correspondances sur le callerid(num), par exemple :

Code:
exten = s,1,NoOp(Appel Entrant)
exten = s/_0041XX.,n,Set(CALLERID(name)=Suisse)
exten = s/_0033XX.,n,Set(CALLERID(name)=France)
exten = s,n,Set(CALLERID(name)=Autre)
exten = s,n,Dial(SIP/Support)
Voilà, j'espère que cela pourras vous aider un peu