Warteschlangen joinempty=strict

konabi

Mitglied
Mitglied seit
11 Apr 2005
Beiträge
424
Punkte für Reaktionen
0
Punkte
16
Hallo,

ich habe folgende Aufgabenstellung:

Eine kostenpflichtige Warteschlange in der nur max 2 Anrufer gelangen dürfen.

Das kann ich mit

maxlen=2

in der queues.conf lösen.
In der Warteschlange befinden sich mehrere Mitglieder als SIP Clienten
(member => SIP/123)

Wenn kein Member verfügbar ist, darf kein Anruf in Warteschlange gelangen,
also setze ich:

joinempty=strict

Nun ist es aver so:

Wenn kein Mitglied der Warteschlange angemeldet ist, wird der Ruf nicht entgegengenommen.
Wenn alle Mitglieder in der Pause sind (PauseQueueMember(,SIP/123) wird der Ruf nicht entgegengenommen.

Wenn ABER beispielsweise alle Mitglieder der Warteschlangen sprechen, gelang ein eingehender Ruf trotzdem in die Warteschlange, und das soll es nicht, da ja das Warten den Anrufer Geld kostet.

Queue Status:

1. Member ist nicht angeneldet:
SIP/604 (Unavailable) has taken no calls yet

2. Member ist in Pause:
SIP/603 (paused) (Not in use) has taken no calls yet

3. Member spricht gerade:
SIP/602 (In use) has taken no calls yet

4. Member ist frei:
SIP/602 (Not in use) has taken 1 calls (last was 2 secs ago)


Hat da jemand eine andere Lösung?



Danke Sven
 
Du könntest z.B. die Agents bei An- und Abmelden mitzählen, und bevor die Anrufer in die Queue kommen, mittels GROUPCOUNT überprüfen, ob noch ein Agent frei ist.
 
Hallo Hupe,

ich verwende keine Agents, sonden nur feste Mitglieder als SIP Clienten.

Diese werden fest der Warteschlange zugeordnet alo keine An - und Abmeldung mit AddQueueMember oder RemoveQueueMember.


Wenn zwei Anrufer in die Warteschlange sind kommt auch kein dritter mehr rein. Das funktioniert.

Problem ist daß ein sprechendes, also besetztes Warteschlangenmitglied
(in use) nicht als "nicht verfügbar" erkannt wird.

Also wenn
SIP/604 (Unavailable) oder SIP/603 (paused) oder SIP/602 (In use) dann ruf nicht annehmen.


Oder einfacher wenn status von mindestens ein Warteschlangenmitglied ==
(Not in use) dann betrete die Warteschlange.

Aber wie?

Gruß Sven

 
Naja, an und abmelden tun sie sich ja trotzdem (wobei in die Pause gehen und wiederkommen ja das selbe sind). Und wenn Du die maximal verfügbaren Channels zählst, dann kannst Du diese auch entsprechend begrenzen.
 
Hallo Hupe,
ich greife diesen Thread noch einmal auf.
Die An- und Abmeldungen der Agenten zählen ist kein Problem.
Auch die eingehenden Rufe auf den Channel der in die Warteschlange geht zählen ist kein Problem.

Ich könnte dann auch steuern daß die Anzahl der reinkommenden Rufe kleiner sein muß als die Anzahl der Agenten.

Nur habe ich das Problem das es sein kann daß alle Agenten sprechen. Queuememberstatus (in use). In diesem Fall kommt der Ruf in die Warteschlange und der Anrufer muß warten, was aber nicht sein darf, da dies eine kostepflichtige Hotline ist.


Also, gibt es eine Möglichkeit dern Status der Agenten vor Eintritt in der Warteschlange zu prüfen? Dann könnte ich Anhand des Staus prüfen ob der Ruf in die Warteschlange geht oder ob der Ruf abgewiesen wird.


Code:
exten => 1008,1,Goto(check-agents,s,1)   
exten => 1008,n,Set(CALLERID(name)=0900 Deutschland)
exten => 1008,n,Ringing
exten => 1008,n,Queue(germany-0900)


[check-agents]
?????

Danke für Deine Hilfe.

Sven
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

Themen
247,830
Beiträge
2,274,415
Mitglieder
376,821
Neuestes Mitglied
ub666