.titleBar { margin-bottom: 5px!important; }

Queue Warteschleife

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von fabius83, 19 Sep. 2008.

  1. fabius83

    fabius83 Neuer User

    Registriert seit:
    19 Aug. 2008
    Beiträge:
    41
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo!

    Gibt es eine Applikation, die überprüft ob ein SIP-Client in der Queue angemeldet ist?

    Und zwar habe ich eine Queue in der sich Mitarbeiter von verschiedenen Asterisk-servern anmelden. Die Queue-Mitarbeiter sollen auch direkt Anrufe mit ihren eigenen durchwahlen erhalten können, aber nur wenn sie in der Queue angemeldet sind ansonsten nicht. Gibt es irgendeine Möglichkeit dies zu realisieren?

    Vielen Dank im Vorraus!
     
  2. laureen

    laureen Mitglied

    Registriert seit:
    17 Okt. 2004
    Beiträge:
    369
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    das kann man mit der dialplan function "QUEUE_MEMBER_LIST" realisieren (Asterisk 1.4):
    Code:
    ...
    [context]
    exten = _XX,1.Set(QMLIST=${QUEUE_MEMBER_LIST(meineQueue)})
    ...
    danach hast du in der channel-variable ${QMLIST} die members drinnen und du kannst sie mit der regex function matchen oder anders parsen.

    Code:
    *CLI> core show function QUEUE_MEMBER_LIST
    *CLI> core show function REGEX
    grüße,
    laureen
     
  3. fabius83

    fabius83 Neuer User

    Registriert seit:
    19 Aug. 2008
    Beiträge:
    41
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Danke...

    also ich habe es jetzt so...

    Mitarbeiteranmeldung an der queue (extensions.conf):
    Code:
    exten => *1,1,Answer()
    exten => *1,2,Read(AGENT_NUMBER, agent-user)
    exten => *1,3,AddQueueMember(asterisk1,SIP/${CALLERID(num)})
    exten => *1,4,Set(QMLIST=${QUEUE_MEMBER_LIST(asterisk1)})
    exten => *1,5,Playback(agent-loginok)
    exten => *1,6,Hangup
    
    wenn z.B. ein Anruf für SIP 212 reinkommt, soll überprüft werden ob der SIP-Client an der Queue angemeldet ist. wenn ja zu sip 212 durchstellen wenn nein an die zentrale
    extension.conf
    Code:
    [isdn_incoming]
    include => sip_pruefen
    exten => _2XX,1,Ringing
    exten => _2XX,2,Set(foo=${REGEX("${EXTEN}" ${QMLIST})})
    exten => _2XX,3,Goto [sip_pruefen]
    exten => _2XX,4,Hangup
    
    bei der set Funktion muss was falsch sein, da immer 0 zurückgegeben wird und ich weiss nicht was ich falsch mache... :-(

    im context [sip_pruefen] steht extensions.ael:
    Code:
    context sip_pruefen
    {
        _2XX => {
                       if (${foo} = 1){
                                             Dial(SIP/${EXTEN},25,tT);
                                             Voicemail(${EXTEN});
                                             Hangup();
                                           }
                                    else {
                                             Dial(SIP/111,25,tT);
                                             Voicemail(111);
                                             Hangup();
                                           }
                     };
    };
    
    hier erhalte ich die Notice: No such label '[sip_pruefen]' in extensions '212' in context 'isdn_incoming'
    und die warnung: Priority '[sip_pruefen]' must be a number > 0, or valid label

    Sieht ihr hier ein fehler? ich blicke nicht durch!!!
     
  4. doxon

    doxon Mitglied

    Registriert seit:
    11 Juni 2006
    Beiträge:
    781
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    IT-Systemelektroniker
    Ort:
    Aurich
    #4 doxon, 22 Sep. 2008
    Zuletzt bearbeitet: 22 Sep. 2008
    Wenn du Goto wie oben beschrieben nutzt, sucht er das Label mit dem Namen, welches es bei dir nicht gibt.

    In deinem Fall willst du den Kontext sip_pruefen mit einer bestimmten Extension aufrufen.
    Das geht dann so: Goto(context,extension,priority)
     
  5. fabius83

    fabius83 Neuer User

    Registriert seit:
    19 Aug. 2008
    Beiträge:
    41
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ohhh... danke.

    weiss jemand, was ich bei der REGEX() Anwendung falsch mache? :)