Warteschlange Freizeichen

Moin Moin,

ich versuche gerade folgendes mit einer Warteschlange zu erreichen und komme nicht weiter.

-Freizeichen signalisieren, wenn ein Mitglied verfügbar ist, also nicht besetzt oder ausgebucht.
-Wenn kein Agent verfügbar ist, soll eine Musik mit eingebauter Ansage abgespielt werden, bis ein Agent verfügbar ist, oder der Timeout abgelaufen ist (geht dann auf die Mailbox)

Der Abwurf nach dem Timeout ist kein Problem, geht ja schön über Extern/Nacher. Nur scheiter ich im Moment an der Musik und dem Freizeichen. Als Wartemusik muss ja -Freizeichen- gesetzt sein, aber wie bekomme ich die Ansage/Musik zum laufen während der Anrufer warten muss? Wenn ich das ganze über Extern/Vorher mache, dann spielt er die Ansage ja komplett durch bevor es weiter geht.

Hab ich hier ein Brett vorm Kopf?!? :rolleyes:

Edit: Mobydick Version 7.14.0…

So, ich habe noch selber ein wenig weiter gesucht. Dabei bin ich auf den Thread mit dem Hinweis auf eine zweite Warteschlange gestoßen. Dies Funktioniert grundsätzlich auch.

Nun stellt sich aber folgendes Problem:

Wenn ein Agent Frei ist, dann ist das ganze kein Problem, klingelt mit Freizeichen. Ist der Agent (im Test halt nur einer) Besetzt kommt die Musik, legt der Agent dann auf kommt der Anrufer aus der nun zweiten Warteschleife durch.
Wenn der Agent allerdings sein Telefon auf DND stellt, gilt er noch immer als Verfügbar (im Asterisk Log kommt ein Busy). Dadurch erhält der anrufer nun doch ein Freizeichen, in diesem Falle wäre aber der Abwurf auf die zweite Warteschlange fällig…

Als Abwurfbedingung verwende ich die Asterisk Expression “$${QUEUE_MEMBER(“Testwarteschlange”,free)} = 0]”. Wie gesagt dies Funktionier ja Grundsätzlich.

Die Agenten sollen sich nicht speziell an einer Warteschlange anmelden müssen, was bei zwei ja auch ein nerviges Problem ist, es sei denn man bekommt die Anmeldung mit nur einer BLF Taste hin. Also soll bei Abwesenheit schlicht kurz DND gedrückt werden. Nur sieht er den DND Teilnehmer als noch Verfügbar…

Irgendeine Idee?

Hi,

DND würde ich bei Agenten nicht verwenden, vielmehr gibt es die Möglichkeit, dass dynamische Agenten sich ein-/ausbuchen bzw. pausieren. Sprich möchte der Agent keine Anrufe mehr entgegen nehmen, dann pausiert er einfach oder bucht sich aus.

Gruß
Markus

Moin,

das Problem mit Ein/Ausbuchen ist ja leider, das ich hier zwei Warteschlangen paralell habe, da müsste man sich an den beiden anmelden, leider nicht so wirklich praktikabel :frowning:

*99#Durchwahl bucht den Agenten in allen ihm zugewiesenen Warteschlangen ein.
Daher geht das mit einem BLF.

Wir haben auch zwei Warteschlangen aus einem ähnlichen Grund.
Mich nervt diese Tatsache hauptsächlich aus zwei Gründen:

  1. Queuemetrics wird unübersichtlich
  2. Ich kann kein Telefon zwei unterschiedlichen! Warteschlangen zuteilen.
    Damit wäre das Telefon ja in 4 Warteschlangen und das *99# kann ich nur nutzen um mich in alle einzubuchen, nicht aber in einzelne.

Hallo,

kleiner Einwurf: Es ist durchaus möglich, sich via eines *-Codes in eine einzelne Warteschlange ein- und auszubuchen, siehe auch die Dokumentation.

Grüße,
Jan

Jaaaaaaa, aber halt nicht in “einzelne” Warteschlangen. :smiley:
Bei mir besteht ne einzelne Warteschlange aus zwei Warteschlangen wegen der Freizeichenproblematik.

Wenn jetzt ein Telefon in zwei Warteschlangen sein soll, dann ists bei mir in vier.
So war das gemeint :wink:

Hallo,

mit Boardmitteln ist das leider nicht so einfach bis gar nicht umsetzbar und ein/mehrere Skript(e) hierfür zu pflegen ist auch nicht Sinn der Sache. Sollte es aber nur um die Freizeichen/Wartemusik Thematik gehen, kann man die Queue auch mit folgendem Parameter aufrufen:
R - Ring instead of playing MOH when a member channel is actually ringing.

D.h. solange kein Agent frei ist würde man die Wartemusik hören und sobald ein Agent frei wird und klingelt hört der Anrufer das Freizeichen.
Dann könnte man aus den 2 Queues wieder eine machen.
Bei anderen Anforderungen kann man mittlerweile durch das Skillbased Routing auch häufig aus mehreren “eng verbundenen” Queues eine einzige machen. So könnte man anstelle des Abwurfes auf die 2. Queue einfach die Skill requirements so abändern, das beim 2. Betreten der gleiche Queue der entsprechend angepasste Personenkreis angerufen wird.

Grüße,
Steve

Moin,

es geht für uns eigentlich genau dadrum, wenn die Agenten alle besetzt oder nicht da sind, die Ansage abzuspielen. Das bekommt man ja auch soweit hin, allerdings nur über zwei Warteschlangen, und da kommt dann das Anmeldeproblem zum zuge, ich möchte es den Leuten nicht zumuten sich an zwei Warteschlangen anmelden zu müssen. Also eigentlich würde eine Möglichkeit reichen, sich mit einer BLF Taste an beiden anzumelden, dann sollte das klappen…

Das bekomme ich leider nur (noch) nicht alleine hin, bin da im Moment noch nicht tief genug drin…

Hallo @Steve
k
annst Du mir etwas genauer sagen, was ich da wo einstellen muss? Habe aktuell für einen Kunden auch die Anforderung, dass es grundsätzlich keinen Text vor Melden geben soll und auch keine Wartemusik sondern lediglich ein Freizeichen. Bis dahin also Standard. Nun tritt der Fall ein, dass kein Team-Mitglied frei ist und in dem Fall möchte ich direkt mit einer Ansage beginnen und dann Wartemusik einspielen.

Derzeit löse ich das auch mit einem zweiten Team, in dem die Mitglieder fest eingeloggt sind. Das hat aber mehr Nach- als Vorteile. Und dynamisch ist auch keine Lösung wegen der zwei oder mehr Teams, in denen man sich dann einloggen müsste. Mit *99#… in alle Teams ist keine Alternative, weil der Sinn von dynamischen Teams ja ist, ja nach Anrufaufkommen in den einzelnen Teams gezielt personell verstärken zu können. Damit scheidet pauschal anmelden in allen Team kategorisch aus.

Gruß
Michael

Hi,

in der Systemeinstellung sys.asterisk.configure.queues.dialoptions kann man global die Parameter beim Queue Aufruf ändern (Achtung dadurch wird z.B. auch das Call Completed Elsewhere Verhalten übersteuert). Man konnte hier glaube auch ${MDC_LABEL-x} angeben und dann das Lebel in den vorher Aktionen setzen, bin mir aber leider nicht mehr sicher.
Welche Parameter es gibt kann man hier nachsehen: https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+Application_Queue

Wenn Ihr aber vorher prüfen wollt, ob überhaupt angemeldete Agenten frei sind, könnt ihr auch ein Dialplanscript davor setzen welches das prüft. Das sollte ca so aussehen:

; set queue to check
exten => s,1,Set(CHECKQUEUE=WS_Zentrale)
exten => s,n,Verbose(--> QUEUE CHECK FOR QUEUE ${CHECKQUEUE})
  
; queue check
exten => s,n,Set(QUEUEFREE=${QUEUE_MEMBER(${CHECKQUEUE},free)})
exten => s,n,Set(QUEUELOGGED=${QUEUE_MEMBER(${CHECKQUEUE},logged)})
exten => s,n,Set(QUEUECOUNT=${QUEUE_MEMBER(${CHECKQUEUE},count)})
exten => s,n,Set(QUEUEREADY=${QUEUE_MEMBER(${CHECKQUEUE},ready)})
exten => s,n,Set(QUEUEWAIT=${QUEUE_WAITING_COUNT(${CHECKQUEUE})})
exten => s,n,Set(QUEUEPAUSE=${QUEUE_MEMBER(${CHECKQUEUE},paused)})
  
exten => s,n,Verbose(--> QUEUEFREE: ${QUEUEFREE} -- QUEUELOGGED: ${QUEUELOGGED} -- QUEUECOUNT: ${QUEUECOUNT} -- QUEUEREADY: ${QUEUEREADY} -- QUEUEWAIT: ${QUEUEWAIT})
  

;no agent logged on?
;exten => s,n,GoToIf($[ "${QUEUECOUNT}" = "0" ]?s-empty,1)
  
;no available agent logged on?
;exten => s,n,GoToIf($[ "${QUEUELOGGED}" = "0" & "${QUEUEFREE}" = "0" ]?s-noavailable,1)
  
;no agent free?
exten => s,n,Set(QUEUEFREE=${MATH(${QUEUEFREE} - ${QUEUEPAUSE},i)})
exten => s,n,GoToIf($[ "${QUEUEFREE}" = "0" ]?s-noavailable,1)
  
;more than n callers waiting?
;exten => s,n,GoToIf($[ ${QUEUEWAIT} > 10 ]?s-full,1)
  
; back to queue
exten => s,n,Return()
  
  
exten => s-noavailable,1,NoOp(kein Agent frei)
exten => s-noavailable,n,Hangup()
; alternative go on with post context of queue (replace extension of the team)
;exten => s-noavailable,n,GoSub(sub_suffix-111,${MDC_DIALDESCENT},1)

in dem s-noavailable Abschnitt könnt ihr dann auch ein Playback usw. unterbringen, je nachdem welches Verhalten hier gewünscht ist.

Das betätigen der DND Taste am Telefon wird jedoch von der Anlage nicht registriert, dieser Agent ist also weiterhin “NOT_INUSE” also erreichbar markiert. Hier sollte nicht dnd gentutz werden, sondern der Funktionscode um sich zu pausieren, es sollte ja nichts dagegensprechen sich in allen Queues zu pausieren.

Grüße,
Steve

Hallo zusammen,

das Thema ist zwar schon etwas älter, aber mich tritt gerade selbige Herausforderung:
Gibt es mittlerweile einen Weg, ohne selber zu Skripten oder die Systemeinstellungen (mit für Laien nicht ganz absehbaren Folgen) anzugehen?

Meine Anforderung geht dort hin:
Ein Anrufer hört Wartemusik, solang kein Agent frei ist. Sobald einer frei wird, bei dem der Anruf aufläuft, soll der Anrufer ein Freizeichen hören (damit nach mehreren Warteminuten sich keiner “erschreckt”, dass plötzlich jemand drangeht).
Danke schon mal für hoffentlich neue Erkenntnisse.

Vg
Philip

Hallo Philip,

wenn das Verhalten bezüglich aller Teams gleich sein soll (auch bezogen auf completed elsewhere) dann kannst du in den Systemeinstellungen unter
sys.asterisk.configure.queues.dialoptions
den Inhalt
CR
setzen. C steht dabei für das completed elsewhere und R sorgt für das Frei-/Rufzeichen sobald tatsächlich ein Zustellungsversuch zu einem freien Teammitglied erfolgt.
Vermutlich könnte man hier auch eine Variable eintragen, da bin ich mir gerade aber leider nicht sicher (falls du das je nach Team anders handhaben willst).
Alle möglichen Optionen findest du hier:
https://wiki.asterisk.org/wiki/display/AST/Asterisk+16+Application_Queue

Grüße,
Steve

Hallo Steve,

danke erstmal für Deine Antwort. Ich werds bei nächster Gelegenheit testen und kurzes Feedback geben :slight_smile:

Gruß Philip

Hallo Steve,
erster Test war erfolgreich. Danke nochmals!