Optimale Einstellungen für kaskadierten Rufablauf

Hallo zusammen,

wir wollen einen kaskadierten Rufablauf realisieren. Es sollen also nach einer gewissen Zeit immer mehr Agenten angeklingelt werden:
Sekunde 1-60 -> Personenkreis X
Sekunde 60-120 -> Personenkreis X + Personenkreis Y
Ab Sekunde 120 -> Personenkreis X + Personenkreis Y + Personenkreis Z

Mein bisheriger Plan war es einfach mehrere Teams mit den jeweiligen Mitgliedern zu erstellen und dann entsprechend nach Ablauf der Zeit über ein Timeout auf das jeweils nächste Team abzuwerfen.
Dies hat jedoch folgende Nachteile:

  • Anrufer haben die Chance sich vorzudrängeln wenn sie genau im Moment des Abwurfs anrufen
  • Die ASA wird verfälscht da sie bei jedem Abwurf wieder auf 0 gesetzt wird (anstatt z.B. bei 61 weiter zu zählen)
  • Auf dem Dashboard lässt sich die Wartezeit eines Anrufers nicht optimal darstellen, da ja auch hier die Zeit bei jedem Abwurf auf 0 gesetzt wird obwohl der Anrufer u.U. bereits zwei Minuten wartet.

Habt ihr solche Rufabläufe schonmal gebaut? Wie seid ihr vorgegangen um diese Probleme zu umgehen?

Viele Grüße
Lukas

Hallo,

Wäre es eventuell eine Option den Timer Warten für Teams in den Follow Me Einstellungen zu verwenden, um die zusätzlichen Agenten nach einer gewissen Zeit erst dazu zu schalten?

Lg
Thomas

Hallo,

Wir haben das mit queuerules gelöst: http://www.asteriskdocs.org/en/3rd_Edition/asterisk-book-html-chunk/ACD_id288932.html
Die queuerules.conf muss man zwar per Console erstellen, dann einem Team über die Optionen zuweisen und dann die Agenten mit unterschiedliche Penalty einloggen (machen wir per REST-API).

Das funktioniert stabil und auch, wenn die Agenten in mehreren Teams eingeloggt ist.

Grüße Johannes

Ich hatte den Wunsch auch schon zwei mal bei einem Kunden und habe das dann mit kaskadierten Teams gemacht. Die Sache mit der Auswertung interessiert den Kunden nicht. Es gibt dabei aber ein anderes unschönes Problem. Beispiel: Ein Agent X ist in Team A und in Team B. Zuerst wird der Ruf an Team A signalisiert. Nach dem Timeout wird auf Team B abgeworfen. Wenn Agent X zufällig genau zu dem Zeitpunkt des Abwurfs von Team A nach Team B abnimmt dann hat er keine Chance mehr den Anruf zu bekommen. Im Team A ist der Anruf nicht mehr und für Team B klingelt es bei ihm nicht. Das liegt daran, dass die Signalisierung für Team A gestoppt wird und dann wir für Team B neu signalisiert. Nimmt man gerade in der “Pause” ab hat man verloren.

Es war auch mal so (und ich habe das auch noch so, ob es jetzt ohne, geht weiss ich nicht) dass man auf jeden Fall im extern nachher per Inline-Script wait(1) vor dem Abwurf ins nächste Team setzen musste, da es sonst bei den Agenten die in Team A und B eingebucht waren nach dem Abwurf auf Team B nicht weiter geklingelt hat, da die Telefone noch nicht wieder “bereit” waren einen neuen Call anzunehmen aber die Anlage sofort wieder mit dem Telefon sprechen wollte.

Schon deshalb ist der Ansatz von @pitsol-jheidenreich sicher der bessere und ich meine das ist auch nichts außergewöhnliches und es wäre einen Featurerequest wert.

Stehe aktuell auch vor der Herausforderung, weil halt Anrufe bei der Zentrale nicht bei allen Teammitgliedern gleichzeit klingeln soll. “Warten” kommt nicht in Frage, weil Benutzer in mehreren Teams sind und dann ja immer verzögert gerufen werden.

Und die Rufstrategien funktionieren alle irgendwie nicht wie gewünscht ‘mem-nacheinander-sortiert’ ruft überwiegend den gleiche Benutzer und nur selten andere etc.

Daher schließe ich mich hier einem Feature-Request gerne an.

Danke für die Antworten. Manchmal sieht man den Wald vor lauter Bäumen nicht. Wir werden das erstmal mit den FollowMe-Einstellungen versuchen!

So, zu früh gefreut. Leider ist FollowMe doch nicht praktikabel. Das hat vor allem zwei Gründe:

  1. Man kann im Client keine Verzögerung > 20 Sekunden einstellen.
  2. Die Verzögerung zählt erst ab dem Moment ab dem der Anruf wirklich signalisiert wird. Das ist ab dem Moment der Fall in dem der Anrufer den ersten Platz in der Warteschlange einnimmt. So kann es also vorkommen, dass ein Anrufer 4 Minuten in der Warteschlange hängt, ohne, dass es jemals bei Personenkreis Y oder Z klingelt.

Wir versuchen das gerade mit der Idee von @pitsol-jheidenreich wobei wir da aktuell daran scheitern, dass der Agent mit der höheren Penalty einfach nicht angeklingelt wird.
Wir haben aktuell ein Team mit drei Mitgliedern. Penalty jeweils 0, 1 und 2. Selbst wenn ich die min Penalty 0 und max Penalty auf 1 setze klingelt nur der Agent mit der Penalty von 0. So kann man dann natürlich gar nicht erst testen ob die Regel in queuerules.conf funktioniert. Hat da jemand evtl. eine Idee?
Viele Grüße
Lukas

Hallo Lukas,

wir setzen im Vorher-Skript die Min und Max jeweils auf 100 (Set(QUEUE_MIN_PENALTY=100)) und senken dann die Min-Penalty (penaltychange => 10,100,90 | penaltychange => 20,100,80). Wichtig ist, dass du die Penalty bei den Agenten beim Einloggen auch mitsetzt (geht soweit ich weiß nur per REST). In meinen Tests wurden die Werte, die man in der Warteschlange einem Mitglied zuweist nicht berücksichtigt.

Grüße
Johannes