-
Question de mise en place de dialplan
Bonjour à tous,
Ceci est ma première implémentation d'un réseau TOIP et je tâtonne un peu (beaucoup). J'ai pour l'instant réalisé les appels entrants/sortants via notre provider et je continue par mon dialplan.
Petite présentation du projet: j'ai besoin de créer 3 Groupes d'appels pour 3 entités avec une gestion différenciée de ces groupes.
Voici l'implémentation faite à ce jour:
#########################---------------------------------------------------------------#############################
/etc/asterisk/extensions.conf
;Contexte des appels entrants
[incoming]
;Pour l'exemple le numéro XXXXXXXXXX sera dirigé vers la macro "mamacro"
exten => XXXXXXXXXX,1,Macro(mamacro,14,SIP/14,20)
;Contexte appliqué aux utilisateurs
[work]
exten => _1X,1,Macro(std,${EXTEN},SIP/${EXTEN},30)
include => parkedcalls
include => recording-context
include => voicemail-context
include => test-context
;En sortie Anonyme
exten => _9.,1,Set(CALLERID(all)="Anonymous" <Anonymous>)
exten => _9.,2,Dial(SIP/provider-out/${EXTEN:1})
;En sortie normale
exten => _0.,1,GotoIf($["${CALLERID(num)}" = "11"]?dial11)
exten => _0.,n(dial11),Set(CALLERID(num)="04XXXXXXXX")
exten => _0.,n,Set(CALLERID(name)="${CALLERID(name)}")
exten => _0.,n,Dial(SIP/provider-out/${EXTEN:1})
exten => _0.,n,Hangup()
--------------------------------------------------------------------------------------------------------------------------------
;Une des macros utilisée pour un des trois groupes. Il y a deux autres macro similaires pour les autres groupes
[macro-mamacro]
;On joue la presentation et on attends l'utilisateur
exten => s,1,Answer
exten => s,2,Background(/var/lib/asterisk/sounds/admin/accueil)
exten => s,3,WaitExten()
;Le problème est bien visible là: si j'appuie sur 1 ou 2 cela ne renvoi pas vers "s-pepi1" ou "s-pepi1" mais pars dans le contexte [work]
;pbx.c:6693 __ast_pbx_run: Invalid extension '1', but no rule 'i' or 'e' in context 'work'
exten => 1,4,1,GoTo(mamacro,s-pepi1,1)
exten => 2,4,1,GoTo(mamacro,s-pepi2,1)
exten => s,5,Hangup
exten => s-pepi1,1,Dial(SIP/11,tTx,30)
exten => s-pepi1,2,VoiceMail(11@main-voicemail,u)
exten => s-pepi1,3,Hangup
exten => s-pepi2,1,Dial(SIP/11,tTx,30)
exten => s-pepi2,2,VoiceMail(12@main-voicemail,u)
exten => s-pepi2,3,Hangup
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => a,1,VoicemailMain(${ARG1}) ; Si * alors renvoi sur la boite vocale
exten => s-NOANSWER,1,Voicemail(${ARG1}@main-voicemail,u)
exten => s-NOANSWER,n,Playback(vm-goodbye)
exten => s-NOANSWER,n,Hangup()
exten => s-CHANUNAVAIL,1,Voicemail(${ARG1}@main-voicemail,b)
exten => s-CHANUNAVAIL,n,Playback(vm-goodbye)
exten => s-CHANUNAVAIL,n,Hangup()
exten => s-BUSY,1,Voicemail(${ARG1}@main-voicemail,b)
exten => s-BUSY,n,Playback(vm-goodbye)
exten => s-BUSY,n,Hangup()
--------------------------------------------------------------------------------------------------------------------------------
; Un autre contexte utilisé par tous qui a les extensions # et 2 pour valider l'enregistrement
[recording-context]
exten => 100,1,Set(CHANNEL(musicclass)=mp3files)
exten => 100,2,Set(CHANNEL(language)=fr)
exten => 100,3,Playback(/var/lib/asterisk/sounds/admin/message-closed-accueil)
exten => 100,4,Record(/var/lib/asterisk/sounds/admin/message-closed:ulaw)
exten => 100,5,Wait(1)
exten => 100,6,Playback(/var/lib/asterisk/sounds/admin/message-closed)
exten => 100,7,Background(/var/lib/asterisk/sounds/admin/validation_attente)
exten => 100,8,WaitExten(2)
exten => #,1,GoTo(s-finish-accueil,1)
exten => 2,1,GoTo(100,3)
exten => s-finish-accueil,1,Playback(/var/lib/asterisk/sounds/admin/message_enregistre) ; message recorded !
exten => s-finish-accueil,2,Hangup
;la deuxième extension utilise aussi "#" et "2" :-(
exten => 111,1,Set(CHANNEL(musicclass)=mp3files)
exten => 111,2,Set(CHANNEL(language)=fr)
exten => 111,3,Playback(/var/lib/asterisk/sounds/admin/pepi1_accueil)
exten => 111,4,Record(/var/lib/asterisk/sounds/admin/pepi1:ulaw)
exten => 111,5,Wait(1)
exten => 111,6,Playback(/var/lib/asterisk/sounds/admin/pepi1)
exten => 111,7,Background(/var/lib/asterisk/sounds/admin/validation_attente)
exten => 111,8,WaitExten(2)
exten => #,1,GoTo(s-finish-pepi1,1)
exten => 2,1,GoTo(111,3)
exten => s-finish-pepi1,1,Playback(/var/lib/asterisk/sounds/admin/message_enregistre) ; message recorded !
exten => s-finish-pepi1,2,Hangup
--------------------------------------------------------------------------------------------------------------------------------
/etc/asterisk/users.conf
;Les users crés le sont à partir de cette base:
[template1](!)
type=friend
host=dynamic
dtmfmode=Auto
disallow=all
allow=ulaw
allow=alaw
context=work
language=fr
callgroup=1
pickupgroup=1
[template2](!)
type=friend
host=dynamic
dtmfmode=Auto
disallow=all
allow=ulaw
allow=alaw
context=work
language=fr
callgroup=2
pickupgroup=2
[template3](!)
type=friend
host=dynamic
dtmfmode=Auto
disallow=all
allow=ulaw
allow=alaw
context=work
language=fr
callgroup=3
pickupgroup=3
#########################---------------------------------------------------------------#############################
Mon plus gros problème est de trouver comment avoir des extensions similaires utilisées dans plusieurs macro/contextes. En effet par exemple l'extension "#" est utilisée pour valider un enregistrement de message mais est aussi utilisée par plusieurs extensions dans [recording-context] donc je me retrouve avec ceci pour les suivants:
[May 1 04:22:10] WARNING[13044]: pbx.c:9869 add_priority: Unable to register extension '#' priority 1 in 'recording-context', already in use
[May 1 04:22:10] WARNING[13044]: pbx.c:9869 add_priority: Unable to register extension '2' priority 1 in 'recording-context', already in use
Par exemple lors de l'utilisation de ceci:
exten => 1,4,1,GoTo(mamacro,s-pepi1,1)
au lieu d'être redirigé vers l'extension suivante:
exten => s-pepi1,1,Dial(SIP/11,tTx,30)
exten => s-pepi1,2,VoiceMail(11@main-voicemail,u)
exten => s-pepi1,3,Hangup
Cela retourne dans le contexte work ce que je ne veux pas:
pbx.c:6693 __ast_pbx_run: Invalid extension '1', but no rule 'i' or 'e' in context 'work'
pbx.c:6693 __ast_pbx_run: Invalid extension '4', but no rule 'i' or 'e' in context 'work'
De plus si je déclare par exemple ceci:
exten => #,4,1,GoTo(mamacro,s-pepi2,1)
Le # renverra vers la première extensions déclarée (celle concernant la validation d'un enregistrement) et pas vers l'extension "s-pepi2".
Le truc c'est que j'ai des messages d'accueil du type "taper 1 pour..., taper 2 pour..." sur plusieurs macro, donc comment avoir ces extensions (1,2) à différents endroits sans que ça pose problème ?
Bref, j'espère que j'ai été assez clair, et sûrement que je n'utilise pas la bonne "technique" pour arriver à mes fins. Toute aide sera donc grandement appréciée !!!
Merci de m'avoir lu, Bon codage à tous, Cordialement.
[EDIT] SI j'ajoute ceci dans le contexte utilisateur [work] je suis bien redirigé correctement mais comment utiliser les mêmes numéros (1,2,3,4) pour d'autres fonctions/Numéros SIP ?
exten => 1,1,Dial(SIP/11)
exten => 2,1,Dial(SIP/12)
En fait on pourrait résumer ma question: comment passer de
exten => 1,4,GoTo(mamacro,s-pepi1,1)
à
exten => s-pepi1,1,Dial(SIP/11,tTx,30)
en appuyant sur "1" sans passer par le contexte [work] mais en restant dans la macro...
Dernière modification par exaju ; 09/05/2014 à 23h43.
Les tags pour cette discussion
Règles de messages
- Vous ne pouvez pas créer de nouvelles discussions
- Vous ne pouvez pas envoyer des réponses
- Vous ne pouvez pas envoyer des pièces jointes
- Vous ne pouvez pas modifier vos messages
-
Règles du forum