Affichage des résultats 1 à 2 sur 2

Discussion: Question de mise en place de dialplan

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  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 ; 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
  •