Page 3 sur 4 PremièrePremière 1234 DernièreDernière
Affichage des résultats 21 à 30 sur 35

Discussion: Changement du CALLERID en fonction du champ From dans l'entête SIP

  1. #21
    Membre Association Avatar de quintana
    Date d'inscription
    août 2010
    Localisation
    Québec
    Messages
    1 084
    Downloads
    0
    Uploads
    0
    Si tu n'utilises pas de lib, mais je te conseil d'en utiliser pour aller plus vite, c'est un simple print avec les commandes et variables qui vont bien.

    https://wiki.asterisk.org/wiki/displ...d_set+variable
    Découvrez Wazo sous licence GPLv3 et accessible pour tous : http://www.wazo.community
    Blog Wazo : http://blog.wazo.community
    Wazo est un fork de XiVO.
    Suivez moi sur Twitter !

  2. #22
    Membre Senior
    Date d'inscription
    janvier 2011
    Localisation
    Villejuif 94
    Messages
    337
    Downloads
    0
    Uploads
    0
    Si j'ai bien compris le besoin, pour moi il ne semble pas nécessaire de faire appel à l'agi. Si Xivo permet d'ajouter des variables personnalisées aux comptes sip.
    J'ajoute 4 variables à mes comptes sip pour gérer les droits d'accès vers l'extérieur.
    sip.conf :
    Code:
    [8362-aaaaaaaaaaaaa](aastra)
    secret=qqsfddddddddddddqsd
    callerid="John John" <8362>
    subscribecontext=blf_serv
    mailbox=8362@default
    allowsubscribe=yes
    accountcode=sarl/serv
    setvar=INTERNATIONAL=0
    setvar=HUIT=0
    setvar=MOBILE=1
    setvar=NATIONAL=1
    que je récupère et teste dans le dialplan (en ael)

    Code:
            Set(_MOBILE=${SIPPEER(${soft:4},chanvar[MOBILE])});
            Set(_NATIONAL=${SIPPEER(${soft:4},chanvar[NATIONAL])});
            Set(_HUIT=${SIPPEER(${soft:4:17},chanvar[_HUIT])});
            Set(_INTERNATIONAL=${SIPPEER(${soft:4},chanvar[INTERNATIONAL])});
    Code:
        _00. => {
            switch(${INTERNATIONAL}) {
            case 0:
                Playback(unavailable);
                Hangup();
                break;
            case 1:
    je préfère limiter les appels à des ressources externes au dialplan

  3. #23
    Membre Junior
    Date d'inscription
    novembre 2015
    Messages
    16
    Downloads
    0
    Uploads
    0
    Sylvain,

    En reprenant ton code et en relisant quelque truc sur Internet, j'ai vu que l'argument à utiliser est le deuxième.
    Je pense que le problème vient de la pour mon script, le premier argument étant le chemin du script.
    Ça doit faire planter la logique derrière vu que la variable ne contient pas les bonnes informations.
    Je test ça ce soir.

    Bonjour olppp,

    Je te remercie pour ta participation. En fait le but est juste de changer le CallerID pour les différentes personnes qui vont appeler.
    Les postes du site 1 sortent avec tel SDA, les postes du site 2 sortent avec tel SDA et ils ont les extensions raccourcies en commun.
    Je ne vois pas trop comment réutiliser ton code pour l'adapter à mes besoins par contre.
    Aussi tu me fais réfléchir par rapport à l'utilisation de l'ael, plus évolué, je pense que je pourrais faire l'équivalent de l'agi directement en ael.
    Ce sera pour le weekend prochain

    A+
    Cordialement,

  4. #24
    Membre Senior
    Date d'inscription
    janvier 2011
    Localisation
    Villejuif 94
    Messages
    337
    Downloads
    0
    Uploads
    0
    L'ael ne fait pas plus que l'extension.conf. Asterisk génère en interne un dialplan type extension.conf à partir d'extension.ael. J'ai adopté ael car je trouve la syntaxe plus lisible et facile à documenter. Elle dépayse moins mes collègues sysadmin quand je suis en vacances et qu'il doivent intervenir.

    exemple de code produit
    Code:
    toip1% asterisk -x 'dialplan show service'                       /etc/asterisk
    [ Context 'service' created by 'pbx_ael' ]
      '7004' =>         1. Set(CDR(amaflags)=DOCUMENTATION)           [pbx_ael]
                        2. Goto(ivr_system,s,1)                       [pbx_ael]
      '7009' =>         1. Set(CDR(amaflags)=DOCUMENTATION)           [pbx_ael]
                        2. Answer()                                   [pbx_ael]
                        3. Playback(vm-nobodyavail)                   [pbx_ael]
                        4. Hangup()                                   [pbx_ael]
      '7010' =>         hint: SIP/accueil&SIP/7010-00085d10a3fc&SIP7010-00264430ae29 [pbx_ael]
                        1. Noop()                                     [pbx_ael]
      '7019' =>         1. Set(CDR(amaflags)=DOCUMENTATION)           [pbx_ael]
                        2. Answer()                                   [pbx_ael]
                        3. SetMusicOnHold(default)                    [pbx_ael]
                        4. Queue(dfi,,,,55)                           [pbx_ael]
                        5. Voicemail(${EXTEN})                        [pbx_ael]
      '7022' =>         1. Set(CDR(amaflags)=DOCUMENTATION)           [pbx_ael]
                        2. Answer()                                   [pbx_ael]
                        3. Playback(urgence_dsi)                      [pbx_ael]
                        4. GotoIf($["${CALLERID(name)}" =~ "SALLE.*" | "${CALLERID(name)}" =~ "AMPHI.*"]?5:10) [pbx_ael]
    Pour chaque poste/extension interne , tu as un compte sip et tu connais sa sda de sortie.

    dans sip.conf :
    Code:
    setvar=SDA=0123456789
    dans extensions.ael:
    Code:
    _12345. => {
        Set(CALLERID(num)=${CHANNEL(SDA)})
        DIAL(...
    mais pas testé
    pour une base utilisateur realtime, tu peux ajouter une colonne au nom de la variable dans le schéma sql.

    A+
    Dernière modification par olppp ; 30/11/2015 à 17h34.

  5. #25
    Membre Junior
    Date d'inscription
    novembre 2015
    Messages
    16
    Downloads
    0
    Uploads
    0
    Hello,

    J'ai entre-aperçu la fonction switch/case dans l'ael, on peut le faire dans un fichier de conf normal ?

    Autrement Sylvain, j'ai repris ton code, un gros merci car ça marche nickel.
    Voila le code pour mes tests :

    Code:
    #!/usr/bin/env python 
    
    import sys 
    from xivo import agi 
    
    sipacc = sys.argv[1] 
    
    agi = agi.AGI()
    
    hashnum = {
    	"elfjwz":4000, 
    	"vta462":4120
    	}
    
    numint = hashnum.get(sipacc)
    
    if 4000 <= numint <= 4099:
        agi.set_callerid('0450667788') 
    
    if 4100 <= numint <= 4199:
        agi.set_callerid('0450778899') 
    
    sys.exit()
    Me reste plus qu'a trouver comment remplir le hash à partir d'un fichier ou csv et je suis au top.
    Python adopté

  6. #26
    Membre Senior
    Date d'inscription
    janvier 2011
    Localisation
    Villejuif 94
    Messages
    337
    Downloads
    0
    Uploads
    0
    Hello,

    Le case d'ael génère des If dans le dialplan et n'a pas d'équivalent dans extensions.conf. switch dans extensions.conf sert à diriger les appels vers un autre serveur Asterisk.

    python dispose d'un module csv lecture, écriture

    A+

  7. #27
    Membre Association Avatar de quintana
    Date d'inscription
    août 2010
    Localisation
    Québec
    Messages
    1 084
    Downloads
    0
    Uploads
    0
    Pourquoi tu ne passes pas tout simplement le callerid comme argument au lieu de te faire un dict avec les peer sip ? A mon avis cela serait plus simple ...
    Découvrez Wazo sous licence GPLv3 et accessible pour tous : http://www.wazo.community
    Blog Wazo : http://blog.wazo.community
    Wazo est un fork de XiVO.
    Suivez moi sur Twitter !

  8. #28
    Membre Junior
    Date d'inscription
    novembre 2015
    Messages
    16
    Downloads
    0
    Uploads
    0
    Citation Envoyé par quintana Voir le message
    Pourquoi tu ne passes pas tout simplement le callerid comme argument au lieu de te faire un dict avec les peer sip ? A mon avis cela serait plus simple ...
    Hello,

    Je me sent con sérieux... Bah ouai ce sera beaucoup plus simple.
    Plus de cerveau en ce moment..
    Je fait les modifs ce soir.

    Merci

  9. #29
    Membre Junior
    Date d'inscription
    novembre 2015
    Messages
    16
    Downloads
    0
    Uploads
    0
    Re moi, en galère...

    Quelle est la bonne syntaxe pour récupérer la variable callerid envoyée par asterisk ?

    calleridin = agi.env['agi_callerid'] ou calleridin = agi.get_variable('callerid') ou calleridin = agi.env['callerid'] ?
    J'ai essayé avec les trois, pas moyen.

    Le code suivant n'a pas l'air de marcher :

    Code PHP:
    #!/usr/bin/env python 

    import sys 
    from xivo import agi 

    agi 
    agi.AGI()
    callerIdIn agi.env['callerid']

    if 
    4000 <= callerIdIn <= 4099:
        
    agi.set_callerid('0450667788'

    if 
    4100 <= callerIdIn <= 4199:
        
    agi.set_callerid('0450778899'

    sys.exit() 
    le Dial Plan associé pour test :

    Code PHP:
    exten => 8500,1,Answer()
    same => n,agi(callerid.agi)
    same => n,Noop(le callerid est ${CALLERID(num)}) 
    la sortie en console avec le debug agi :

    Code:
    [Dec  1 21:51:02]   == Using SIP RTP CoS mark 5
    [Dec  1 21:51:02]     -- Executing [8500@default:1] Answer("SIP/elfjwz-0000001a", "") in new stack
    [Dec  1 21:51:02]        > 0x9e7a100 -- Probation passed - setting RTP source address to 10.250.250.10:4052
    [Dec  1 21:51:02]     -- Executing [8500@default:2] AGI("SIP/elfjwz-0000001a", "callerid.agi") in new stack
    [Dec  1 21:51:02]     -- Launched AGI Script /usr/share/asterisk/agi-bin/callerid.agi
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_request: callerid.agi
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_channel: SIP/elfjwz-0000001a
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_language: fr_FR
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_type: SIP
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_uniqueid: 1449003062.26
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_version: 13.5.0
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_callerid: 4000
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_calleridname: TEST EOL
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_callingpres: 0
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_callingani2: 0
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_callington: 0
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_callingtns: 0
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_dnid: 8500
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_rdnis: unknown
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_context: default
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_extension: 8500
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_priority: 2
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_enhanced: 0.0
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_accountcode:
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> agi_threadid: -1226732688
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >>
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Rx << GET VARIABLE "agi_callerid"
    [Dec  1 21:51:02] <SIP/elfjwz-0000001a>AGI Tx >> 200 result=0
    [Dec  1 21:51:02]     -- <SIP/elfjwz-0000001a>AGI Script callerid.agi completed, returning 0
    [Dec  1 21:51:03]     -- Executing [8500@default:3] NoOp("SIP/elfjwz-0000001a", "le callerid est 4000") in new stack
    Helpppppp

  10. #30
    Membre Senior
    Date d'inscription
    janvier 2011
    Localisation
    Villejuif 94
    Messages
    337
    Downloads
    0
    Uploads
    0
    Hello,

    Je n'utilise pas la librairie python_xivo, mais il me semble que tu devrais passer le ${CALLERID(num)} dans ton appel à l'agi

    agi(callerid.agi,callerIdNum:${CALLERID(num)})

    A+

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
  •