In der
queues.conf
werden Warteschlangen
definiert und entsprechende Einstellungen vorgenommen. Die Datei ist
– wie Sie das schon kennen – in Abschnitte
unterteilt.Unter
[general]
stellen wir nur
persistentmembers = yes
ein, damit beim Neustart von Asterisk
die Agenten automatisch wieder in ihre Schlangen aufgenommen
werden.Jede Warteschleife stellt einen eigenen Abschnitt dar. Wir legen
bespielsweise eine Warteschlange im Abschnitt
[support]
an.
Folgende Parameter stehen zur Verfügung:16.3.1. musiconhold
Legt die in
musiconhold.conf
definierte
Musikklasse der Warteschleife fest. Wir wählen die oben angelegte Klasse
default
:musiconhold = default
16.3.2. announce
Legt eine Audiodatei fest, die einem Agenten vor dem Beantworten
eines Anrufs vorgespielt wird. Dies dient dazu, dass ein Agent, der auf
mehreren Warteschlangen Anrufe entgegennimmt, weiß, um welche
Warteschlange es sich handelt, und z. B. den Anrufer entsprechend
begrüßen kann.
;announce = schlange-supportWenn Sie diese Einstellung verwenden, müssen Sie daran denken, auch eine entsprechende Audiodatei im
sounds/
-Verzeichnis
anzulegen, also z. B. schlange-support.gsm
.16.3.3. strategy
Legt fest, in welcher Weise und Reihenfolge die Agenten bei einem
Anruf angeklingelt werden sollen:
ringall
- Alle anklingeln, bis einer antwortet. (Default)
roundrobin
- Der Reihe nach alle anklingeln, bis einer antwortet.
leastrecent
- Das Interface anklingeln, bei dem der letzte Anruf am längsten zurückliegt.
fewestcalls
- Den anklingeln, der am wenigsten Anrufe in dieser Warteschlange abgearbeitet hat.
random
- Ein zufällig gewähltes Interface anklingeln.
rrmemory
- Round-Robin mit Gedächtnis. Beginnt die Reihe bei dem, der nach dem letzten Anruf an der Reihe ist.
Beachten Sie, dass Agenten, für die ein niedrigerer Malus
(penalty) festgelegt wurde, immer Agenten mit
höherem Malus vorgezogen werden.
strategy = ringallDie Einstellung ist abhängig von Ihren Gegebenheiten:
ringall
ist vielleicht lästig; die anderen Werte verursachen zusätzliche
Wartezeit für den Anrufer, falls Agenten nicht ans Telefon gehen.16.3.4. servicelevel
Legt die Zeit (in Sekunden) fest, in der Anrufe beantwortet sein
sollen. Nur für statistische Auswertungen interessant („Wie viele
Anrufe wurden innerhalb der Service-Zeit von x Sekunden
beantwortet?“).
servicelevel = 60
16.3.5. context
Hier kann ein Context angegeben werden, in dem ein Anrufer, wenn
er eine Extension mit nur einer Ziffer drückt, aus
der Warteschlange genommen und zu dieser Extension in diesem Context
weitergeleitet wird.
context = supportschlange-Context ; so könnten wir es einstellen ; aber wir lassen das erst mal weg, also auskommentiert: ;context = supportschlange-Context
16.3.6. timeout
Legt fest, wie lange (in Sekunden) ein Telefon klingeln soll, bis
wir es als nicht besetzt (also Timeout) betrachten.
timeout = 15
16.3.7. retry
Bestimmt, wie lange (in Sekunden) gewartet werden soll, bevor
erneut alle Agenten angeklingelt werden.
retry = 5
16.3.8. weight
Das Gewicht (Wichtigkeit) der Warteschlange, relativ zu anderen
Warteschlangen. Wenn ein Agent auf mehreren Warteschlangen ist, werden
ihm zuerst Anrufe von Warteschlangen mit höherem Gewicht durchgestellt.
So könnte z. B. einer Notfallschlange ein höheres Gewicht gegeben
werden.
weight = 0
16.3.9. wrapuptime
Die Wartezeit (in Sekunden), bevor ein Agent, der gerade einen
Anruf beendet hat, erneut einen Anruf erhält (Default:
0).
; wir lassen unseren Agenten eine kleine Verschnaufpause, um ; einen Schluck Wasser zu trinken: wrapuptime = 10
16.3.10. maxlen
Maximale Anzahl der in der Warteschlange wartenden Anrufer
(Default: 0 für unbegrenzt).
maxlen = 0
16.3.11. announce-frequency
Bestimmt, in welchen Abständen (in Sekunden) den Anrufern ihre
Position in der Warteschlange und/oder die geschätzte Wartezeit angesagt
werden soll (0 für aus).
announce-frequency = 90
16.3.12. announce-holdtime
Bestimmt, ob die geschätzte Wartezeit in den Ankündigungen nach
der Position genannt werden soll. Mögliche Werte sind
yes
(ja), no
(nein) oder once
(nur
einmal).announce-holdtime = yes
16.3.13. announce-round-seconds
Rundungsschritte der Sekunden. Mit der Einstellung 0 werden nur
die Minuten, nicht die Sekunden angesagt. Andere mögliche Werte sind: 0,
1, 5, 10, 15, 20 und 30.[84] (Mit 30 würde beispielsweise eine geschätzte Wartezeit von
2:34 auf 2:30 gerundet.)
announce-round-seconds = 0
16.3.14. Sprachbausteine
Die folgenden Parameter stellen ein, welche Sprachbausteine für
die Ansagen der Position und Wartezeit verwendet werden. In der Regel
sind hier keine Veränderungen notwendig:
queue-youarenext = queue-youarenext ; "You are now first in line." queue-thereare = queue-thereare ; "There are" ... queue-callswaiting = queue-callswaiting ; ... "calls waiting." queue-holdtime = queue-holdtime ; "The current est. holdtime is" ... queue-minutes = queue-minutes ; ... "minutes" queue-seconds = queue-seconds ; ... "seconds" queue-thankyou = queue-thankyou ; "Thank you for your patience." queue-lessthan = queue-less-than ; ... "less than" ... queue-reporthold = queue-reporthold ; "Hold time" ... periodic-announce = queue-periodic-announce ; "All reps busy, wait for next"Wenn diese Parameter nicht angegeben werden (also auskommentiert sind), gelten diese Default-Werte.
16.3.15. periodic-announce-frequency
Bestimmt, in welchen Abständen (in Sekunden) den Anrufern die
periodische Ankündigung (
periodic-announce
, s.o.,
„Zur Zeit[85] sind alle Mitarbeiter im Gespräch, bitte warten
Sie.“) angesagt werden soll.periodic-announce-frequency = 60
16.3.16. monitor-format
Die Angabe dieses Parameters schaltet die Aufzeichnung von
Gesprächen ein (wie mit der
Monitor()
-Applikation) und
bestimmt das Aufzeichnungsformat. (Bei auskommentiertem
monitor-format
werden keine Mitschnitte gemacht.) Geben Sie
hier also gsm
, wav
(große Dateien!) oder
wav49
an.; wenn Sie Aufzeichnungen wollen, diese Zeile einkommentieren: ;monitor-format = gsm
Per Default werden die Dateien (eine
-in
und eine -out
) nach ${UNIQUEID}
benannt. Sie können das bei Bedarf verändern, indem Sie im Dialplan vor
dem Queue()
-Aufruf
Set(MONITOR_FILENAME=dateiname
)
angeben. Wir nehmen aber im Beispiel keine Veränderung vor.Weitere Informationen über Mitschnitte siehe Abschnitt C.100, „
Monitor()
“16.3.17. monitor-join
Kombiniert die beiden durch einen Gesprächsmitschnitt erzeugten
Dateien
...
-in
und
...
-out
zu einer Datei.
Werte: yes
oder no
.monitor-join = yesZu weiteren Informationen über Mitschnitte siehe: Abschnitt C.100, „
Monitor()
“16.3.18. joinempty
Legt fest, ob Anrufer in eine Warteschleife ohne Agenten
eingereiht werden.Sollte ein Anrufer nicht in eine Warteschlange
aufgenommen werden, ist die
yes
- Anrufer können in eine Schleife ohne Agenten oder von nur nicht-verfügbaren Agenten eingereiht werden.
no
- Anrufer können nicht in eine Schleife ohne Agenten eingereiht werden.
strict
- Anrufer können nicht in eine Schleife ohne Agenten eingereiht werden (aber in eine Warteschlange mit nur nicht-verfügbaren Agenten)."Nicht-verfügbar" ist nicht zu verwechseln mit "im Gespräch" (busy). Ein Agent ist nicht verfügbar, wenn er zwar der Warteschlange zugewiesen, aber tatsächlich nicht am System registriert ist (siehe auch Abschnitt 16.3.27, „
member
“). Achtung: Statisch definierte Mitglieder (siehe Abschnitt 16.3.27, „member
“) gelten immer als verfügbar!
Queue()
-Applikation beendet,
und der Dialplan wird fortgesetzt.joinempty = no ; wir wollen unsere Anrufer nicht unnötig warten lassen
16.3.19. leavewhenempty
Legt fest, ob Anrufer aus einer Warteschlange entfernt werden,
sobald sich alle Agenten ausgeloggt haben. Zu den möglichen Werten siehe
joinempty
. Nach dem Verlassen der Warteschlange wird der
Dialplan fortgesetzt.leavewhenempty = strict ; Anrufer nicht unnötig warten lassen
16.3.20. eventwhencalled
Stellt ein (
yes
|no
), ob unter anderem
die folgenden Events für das Manager-Interface erzeugt werden:
AgentCalled
, AgentDump
,
AgentConnect
,
AgentComplete
.eventwhencalled = yes
16.3.21. eventmemberstatus
Stellt ein (
yes
|no
), ob
QueueMemberStatus-Events im Manager-Interface erzeugt werden (das können
viele sein!).eventmemberstatus = no
16.3.22. reportholdtime
Legt fest (
yes
|no
), ob dem Agenten die
Wartezeit des Anrufers angesagt werden soll, bevor dieser zu ihm
durchgestellt wird. (Geschmacksfrage)reportholdtime = no
16.3.23. memberdelay
Stellt ein, wie lange (in Sekunden) der Anrufer Stille hört, bevor
er mit einem Agenten verbunden wird.
memberdelay = 1
16.3.24. timeoutrestart
Bestimmt, ob der Antwort-Timeout eines Agenten bei einem Besetzt-
oder Leitung-überlastet-Signal zurückgesetzt wird. Das kann nützlich für
Agenten sein, die die Berechtigung haben, einen Anruf
abzuweisen.
timeoutrestart = yes
16.3.25. autopause
Dieser Parameter legt fest, ob ein Agent, der einen Anruf nicht
beantwortet, automatisch pausiert werden soll.
autopause = no
16.3.26. ringinuse
Legt fest, ob auch solche Agenten angeklingelt werden sollen, von
denen bekannt ist, dass sie gerade im Gespräch sind. Der bisher einzige
Channel-Driver, der diesen Status übermittelt, ist SIP.
ringinuse = no
16.3.27. member
Es ist möglich, direkt in der
queues.conf
Agenten statisch in der
Formmember =>– also z. B.Technologie
/Ressource
[,Malus
]
member => Zap/2
– anzulegen
(darf mehrmals verwendet werden, siehe
queues.conf
). Das kann jedoch zu Problemen mit
joinempty
und leavewhenempty
führen, da diese
Agenten immer als verfügbar angesehen werden, auch
wenn sie in Wirklichkeit nicht an ihrem Apparat sind. Zudem hat es den
Nachteil, dass ein Agent immer fest einem Apparat zugeordnet ist und
sich nicht von einem anderen Apparat aus anmelden kann.Wir verwenden daher lieber die dynamische Form und ordnen unserer Warteschlange
support
in der Formmember => Agent/AgentenNr
zwei
Agenten 1001
und 1002
zu:member => Agent/1001 member => Agent/1002Diese Agenten müssen wir noch in der
agents.conf
definieren (siehe unten).[86] Die AgentenNr
ist eine frei wählbare Nummer,
die jeden Agenten eindeutig identifiziert. Sie hat nichts mit den
Extensions zu tun, die die Agenten eventuell verwenden.