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 Schlange im Abschnitt [support]
an.
Folgende Parameter stehen zur Verfügung:
Legt die in musiconhold.conf
definierte
Musikklasse der Warteschleife fest. Wir wählen die oben angelegte Klasse
default
:
musiconhold = default
Legt eine Audiodatei fest, die einem Agenten vor dem Beantworten eines Anrufs vorgespielt wird. Dies dient dazu, dass ein Agent, der auf mehreren Schlangen Anrufe entgegennimmt, weiß, um welche Schlange es sich handelt und z.B. den Anrufer entsprechend begrüßen kann.
;announce = schlange-support
Wenn
Sie diese Einstellung verwenden, denken Sie daran, auch eine
entsprechende Audiodatei im sounds/
-Verzeichnis
anzulegen, also z.B. schlange-support.gsm
.
Legt fest, in welcher Weise und Reihenfolge die Agenten bei einem Anruf angeklingelt werden sollen:
ringall
roundrobin
leastrecent
fewestcalls
random
rrmemory
Es ist zu beachten, dass Agenten, für die ein niedrigerer Malus (penalty) festgelegt wurde, immer Agenten mit höherem Malus vorgezogen werden.
strategy = ringall
Die
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.
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
Hier kann ein Context angegeben werden, in dem, wenn der Anrufer eine Extension mit nur einer Ziffer drückt, aus der Schlange rausgenommen 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
Legt fest, wie lange (in Sekunden) ein Telefon klingeln soll, bis wir es als nicht besetzt (also Timeout) betrachten.
timeout = 15
Bestimmt, wie lange (in Sekunden) gewartet werden soll, bevor erneut alle Agenten angeklingelt werden.
retry = 5
Das Gewicht (Wichtigkeit) der Schlange, relativ zu anderen Schlangen. Wenn ein Agent auf mehreren Schlangen ist, werden ihm zuerst Anrufe von Schlangen mit höherem Gewicht durchgestellt. So könnte z.B. einer Notfallschlange ein höheres Gewicht gegeben werden.
weight = 0
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
Maximale Anzahl der in der Schlange wartenden Anrufer (Default: 0 für unbegrenzt).
maxlen = 0
Bestimmt, in welchen Abständen (in Sekunden) den Anrufern ihre Position in der Schlange und/oder die geschätzte Wartezeit angesagt werden soll (0 für aus).
announce-frequency = 90
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
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.[67] (Mit 30 würde beispielsweise eine geschätzte Wartezeit von 2:34 auf 2:30 gerundet.)
announce-round-seconds = 0
Die folgenden Parameter stellen ein, welche Sprachbausteine für die Ansagen der Position und Wartezeit verwendet werden. I.d.R 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.
Bestimmt, in welchen Abständen (in Sekunden) den Anrufern die
periodische Ankündigung (periodic-announce
, s.o.,
„Zur Zeit sind alle Mitarbeiter im Gespräch, bitte warten
Sie.“) angesagt werden soll.
periodic-announce-frequency = 60
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=
angeben. Wir nehmen aber im Beispiel keine Veränderung vor.dateiname
)
Weitere Informationen über Mitschnitte siehe „Monitor()
“
Kombiniert die beiden durch einen Gesprächs-Mitschnitt erzeugten
Dateien
und
...
-in
zu einer Datei.
Werte: ...
-outyes
oder no
.
monitor-join = yes
Weitere
Informationen über Mitschnitte siehe „Monitor()
“
Legt fest, ob Anrufer in eine Warteschleife ohne Agenten eingereiht werden.
yes
no
strict
Anrufer können nicht in eine Schleife ohne Agenten eingereiht werden (aber in eine Schlange 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
Schlange zugewiesen, aber tatsächlich nicht am System
registriert ist (siehe auch „member
“). Achtung: Statisch definierte
Mitglieder (siehe „member
“) gelten
immer als verfügbar!
Sollte ein Anrufer nicht in eine Schlange aufgenommen
werden, ist die Queue()
-Applikation beendet, und der
Dialplan wird fortgesetzt.
joinempty = no ; wir wollen unsere Anrufer nicht unnötig warten lassen
Legt fest, ob Anrufer aus einer Schlange entfernt werden, sobald
sich alle Agenten ausgeloggt haben. Mögliche Werte wie bei
joinempty
. Nach dem Verlassen der Schlange wird der
Dialplan fortgesetzt.
leavewhenempty = strict ; Anrufer nicht unnötig warten lassen
Stellt ein (yes
|no
), ob u.a. die
folgenden Events für das Manager-Interface erzeugt werden:
AgentCalled
, AgentDump
,
AgentConnect
,
AgentComplete
.
eventwhencalled = yes
Stellt ein (yes
|no
), ob
QueueMemberStatus-Events im Manager-Interface erzeugt werden (das können
viele sein!).
eventmemberstatus = no
Legt fest (yes
|no
), ob dem Agenten die
Wartezeit des Anrufers angesagt werden soll, bevor dieser zu ihm
durchgestellt wird. (Geschmacksfrage)
reportholdtime = no
Stellt ein, wie lange (in Sekunden) der Anrufer Stille hört, bevor er mit einem Agenten verbunden wird.
memberdelay = 1
Bestimmt, ob der Antwort-Timeout eines Agenten bei einem Besetzt- oder Leitung-überlastet-Signal zurückgesetzt wird. Kann nützlich für Agenten sein, die die Berechtigung haben, einen Anruf abzuweisen.
timeoutrestart = yes
Dieser Parameter legt fest, ob ein Agent, der einen Anruf nicht beantwortet, automatisch pausiert werden soll.
autopause = no
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
Es ist möglich, direkt in der queues.conf
Agenten statisch in der
Form
member =>Technologie
/Resource
[,Malus
]
-
also z.B. 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 Schlange
support
in der Form
member => Agent/AgentenNr
zwei
Agenten 1001
und 1002
zu:
member => Agent/1001 member => Agent/1002
Diese Agenten müssen wir noch in der
agents.conf
definieren (s.u.)[68]. Die AgentenNr
ist eine frei wählbare Nummer,
die jeden Agenten eindeutig identifiziert. Sie hat nichts mit den
Extensions zu tun, die die Agenten evtl. verwenden.