Affichage des résultats 1 à 2 sur 2

Discussion: Question de mise en place de dialplan

  1. #1
    Membre Junior
    Date d'inscription
    avril 2014
    Messages
    12
    Downloads
    0
    Uploads
    0

    Lightbulb 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 ; 10/05/2014 à 00h43.

  2. #2
    Membre Junior
    Date d'inscription
    avril 2014
    Messages
    12
    Downloads
    0
    Uploads
    0

    Smile Solution

    Bon après plusieurs recherches j'ai finalement utilisé trois "contextes" différents pour mes trois entités. Ceci permet d'avoir les mêmes extensions (par exemple 100,101,102 pour les trois entités) avec des comportements différents sur ces extensions; juste ce que je voulais.

    Je pense que c'était un problème de conception et qu'il faut utiliser les fonctions données par Asterisk au lieu d'essayer de le faire à sa manière...

    Merci de m'avoir lu, Cordialement...

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
  •