Queue Warteschleife

fabius83

Neuer User
Mitglied seit
19 Aug 2008
Beiträge
41
Punkte für Reaktionen
0
Punkte
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!
 

laureen

Mitglied
Mitglied seit
17 Okt 2004
Beiträge
369
Punkte für Reaktionen
0
Punkte
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
 

fabius83

Neuer User
Mitglied seit
19 Aug 2008
Beiträge
41
Punkte für Reaktionen
0
Punkte
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!!!
 

doxon

Mitglied
Mitglied seit
11 Jun 2006
Beiträge
781
Punkte für Reaktionen
0
Punkte
0
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)
 
Zuletzt bearbeitet:

fabius83

Neuer User
Mitglied seit
19 Aug 2008
Beiträge
41
Punkte für Reaktionen
0
Punkte
0
ohhh... danke.

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

Zurzeit aktive Besucher

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
232,341
Beiträge
2,021,281
Mitglieder
349,891
Neuestes Mitglied
Kla4Taste