Ein Agentenskript überschreibt die Ereignisse, auf die es
reagieren soll. Alle sind public virtual void; ein Ereignis, das das Skript
nicht überschreibt, schreibt nur eine Zeile ins Protokoll.
Ereignisse zu Konversationen
Jedes Ereignis gibt es zweimal: für alle Konversationen, die der Agent
kennt, und mit My_ davor für die eigenen — die, deren Agent er ist.
conversation ist jeweils vom Typ Struct_Conversation.
| Ereignis | weitere Parameter | tritt ein, wenn … |
|---|---|---|
ConversationRegistered |
– | der Agent eine Konversation kennenlernt |
ConversationUnregistered |
– | eine Konversation endet; das eigene Ereignis auch, wenn dieser Agent ihr voriger Agent war |
ConversationStateChanged |
ConversationState previousState, ConversationState state |
sich ihr Zustand ändert — das am häufigsten genutzte Ereignis |
ConversationAgentChanged |
Struct_Agent agent |
ein anderer Agent sie übernimmt |
ConversationSkillChanged |
Struct_Skill previousSkill, Struct_Skill skill |
sich ihr Wissensgebiet ändert |
ConversationLanguageChanged |
Struct_Language language |
sich ihre Sprache ändert |
ConversationAgentLanguageChanged |
Struct_Language language |
sich die Sprache ändert, in der der Agent sie führt |
ConversationAttachedDataReceived |
Struct_ConversationAttachedData elements |
ihre Zusatzdaten vollständig neu ankommen |
ConversationAttachedDataElementAdded, ConversationAttachedDataElementRemoved |
ConversationDataElement element |
ein Zusatzdatum hinzukommt bzw. entfällt |
ConversationPositionChanged |
int position |
sich ihr Platz im Wartefeld ändert |
ConversationQueueTimeChanged, ConversationStartTimeChanged |
DateTime time |
sich der Zeitpunkt des Einreihens bzw. des Beginns ändert |
ConversationQuickPicked |
Struct_Agent agent |
ein Agent sie heranholt; das eigene Ereignis, wenn dieser Agent es war |
ConversationSenderChanged, ConversationRecipientChanged |
string sender bzw. string recipient |
sich der Name des Absenders bzw. Empfängers ändert |
ConversationContactIdChanged |
string previousContactId, string contactId |
sich ihre Kontaktkennung ändert |
ConversationTypeChanged |
ConversationType previousType, ConversationType type |
sich ihr Konversationstyp ändert |
ConversationVIPClassChanged |
Struct_VIPClass vipClass |
sie eine VIP-Klasse bekommt |
ConversationPbxSettingsChanged |
Struct_PbxSettings previous, Struct_PbxSettings pbxSettings |
sich ihre Telefonanlage ändert |
ConversationRecordingPermissionChanged |
bool permitted |
sich ändert, ob sie aufgezeichnet werden darf |
ConversationRecordingChanged |
alle: Struct_Agent agent vor conversation; beide: bool isRecording |
ein Mitschnitt beginnt oder endet |
Nur für alle Konversationen gibt es außerdem
ConversationTranscribingChanged(Struct_Agent agent, Struct_Conversation conversation, bool isTranscribing)
— eine Transkription beginnt oder endet — und ConversationsReplaced(): Der
Agent hat die Liste aller Konversationen neu geladen.
Ereignisse zu allen Agenten
Der erste Parameter ist jeweils der betroffene Agent, Struct_Agent agent.
| Ereignis | weitere Parameter | tritt ein, wenn … |
|---|---|---|
AgentLogon, AgentLogoff |
bei AgentLogoff: AgentLogoffReason reason |
sich ein Agent an- bzw. abmeldet |
AgentWrapupChanged |
bool state |
ein Agent in die Nacharbeit geht oder sie beendet |
AgentWrapupUntil |
DateTime until |
feststeht, wann seine dynamische Nacharbeit endet |
AgentWrapupTerminated |
– | seine dynamische Nacharbeit endet |
AgentActivityChanged |
bool state, Struct_Activity activityType |
ein Agent eine Tätigkeit beginnt oder beendet |
AgentPresenceStateChanged |
RichPresenceState richPresenceState |
sich seine Präsenz ändert |
AgentMicrophoneMuteChanged |
bool muteState |
er sein Mikrofon stumm- oder zurückschaltet |
AgentConfigChanged |
– | sich seine Einstellungen ändern |
AgentPbxSettingsChanged |
string pbx |
sich seine Telefonanlage ändert |
Ereignisse zum eigenen Agenten
| Ereignis | Parameter | tritt ein, wenn … |
|---|---|---|
My_AgentLogon, My_AgentLogoff |
bei My_AgentLogoff: AgentLogoffReason reason |
sich der Agent an- bzw. abmeldet |
My_AgentConnected, My_AgentDisconnected |
bei My_AgentDisconnected: UnregisterReason reason |
die Verbindung zum Server steht bzw. abbricht |
My_AgentIdleChanged |
bool state |
der Agent frei oder beschäftigt wird |
My_AgentWrapupChanged |
bool state |
er in die Nacharbeit geht oder sie beendet |
My_AgentWrapupUntil |
DateTime until |
feststeht, wann seine dynamische Nacharbeit endet |
My_AgentWrapupTerminated |
– | seine dynamische Nacharbeit endet |
My_AgentMaxWrapupTimeElapsed |
– | die Höchstdauer seiner dynamischen Nacharbeit abgelaufen ist |
My_AgentActivityChanged |
bool state, Struct_Activity activityType |
er eine Tätigkeit beginnt oder beendet |
My_AgentPresenceStateChanged |
RichPresenceState richPresenceState |
sich seine Präsenz ändert |
My_AgentMicrophoneMuteChanged |
bool muteState |
er sein Mikrofon stumm- oder zurückschaltet |
My_AgentConfigurationChanged |
– | sich seine Einstellungen ändern |
My_AgentPbxSettingsChanged |
string pbx |
sich seine Telefonanlage ändert |
My_AgentConversationDispatched |
Struct_Conversation contact |
ihm eine Konversation zugestellt wird |
My_AgentWarnHandlingTimeReached |
Struct_Conversation conversation |
die Warnzeit der Bearbeitung erreicht ist |
My_AgentActivityPermissionReceived, My_AgentWrapupPermissionReceived, My_AgentLogoffPermissionReceived, My_AgentSkillChangePermissionReceived, My_AgentLanguageChangePermissionReceived |
ConstraintReason permission |
der Server auf eine Anfrage nach Tätigkeit, Nacharbeit, Abmeldung oder einem Wechsel von Wissensgebiet oder Sprache antwortet, siehe Beschränkungen |
My_AgentChatMessageReceived |
string conversationId, string message |
eine Chatnachricht ankommt; message ist HTML |
My_AgentChatFeedReceived |
string conversationId, IEnumerable<ChatMessage> feed |
der Verlauf eines Chats ankommt |
My_AgentMimeMessageReceived |
MimeMessage mimeMessage |
eine angeforderte E-Mail ankommt, siehe Request_MimeMessage |
My_AgentPOPUPMessageReceived |
string head, string body |
eine Mitteilung für das Hinweisfenster ankommt |
My_AgentStatisticsReceived |
RealtimeAgentStatistics statistics |
seine Echtzeitstatistik ankommt |
My_RecordingSummaryReceived |
RecordingSummary recordingSummary |
ein Mitschnitt abgeschlossen ist; enthält u. a. FilePath, FileTotalTime und FileSize |
Eigenschaften
| Eigenschaft | Inhalt |
|---|---|
Agent |
der eigene Agent (Struct_Agent), u. a. mit Name, Id, Extension, Wrapup, Activity, Idle |
AgentConversations |
die Konversationen des eigenen Agenten |
Conversations |
alle Konversationen, die der Agent kennt; Teilmengen wie Calls, Emails, Chats und InboundCalls |
Trace |
das Protokoll des Skripts: Trace.Info(…), Trace.Warning(…), Trace.Error(…), Trace.Verbose(…) |
Befehle
| Befehl | Wirkung |
|---|---|
BrowseTo(string url, bool openInNewTab = false) |
öffnet die Adresse im Modul Browser — im aktiven Reiter oder in einem neuen |
Show(Form form) |
zeigt ein eigenes Fenster über dem Hauptfenster des Agenten |
AcceptConversation(Struct_Conversation conversation) |
nimmt einen Anruf am Softphone des Agenten an; andere Kanäle nimmt der Befehl nicht an |
TerminateConversation(Struct_Conversation conversation) |
beendet die Konversation |
HangupActiveCall() |
legt alle angenommenen Anrufe am Softphone auf, auch gehaltene |
HangupAllCalls() |
legt alle Anrufe am Softphone auf |
Wrapup(bool state) |
true fragt die Nacharbeit an, mit denselben Prüfungen wie von Hand; false beendet sie |
TerminateDynamicWrapup() |
beendet die laufende dynamische Nacharbeit |
Activity(false) |
beendet die laufende Tätigkeit |
Logoff() |
fragt die Abmeldung an wie der Agent von Hand; ist sie erlaubt, meldet er sich ab und das Programm schließt |
CreateEMail(string subject, string to), CreateEMail(string subject, string to, string skill, string language) |
legt eine neue E-Mail an; Wissensgebiet und Sprache mit Namen |
CreateFax(string subject, string to), CreateFax(string subject, string to, string skill, string language) |
fordert eine neue Fax-Konversation an; to enthält die Faxnummer, Wissensgebiet und Sprache werden mit Namen gewählt — siehe Fax-Konversation anlegen |
Request_MimeMessage(Struct_Conversation conversation) |
fordert die E-Mail der Konversation an; sie kommt mit My_AgentMimeMessageReceived |
SendMail(MimeMessage email, string conversationId) |
sendet die Nachricht als Antwort in einer bestehenden E-Mail-Konversation |
ShowBusyLight(ConversationState state), ShowBusyLight(RichPresenceState state), SetBusyLightOff() |
steuert eine angeschlossene Statuslampe (Busylight) |
Fax-Konversation anlegen
CreateFax legt eine Fax-Konversation zur Bearbeitung im Agenten an. Der
Aufruf versendet noch keine Datei; er ist von SendMail zum Versenden einer
vorbereiteten Nachricht zu unterscheiden. Verwenden Sie unter to die
Faxnummer des Empfängers. Der Faxversand braucht einen eingerichteten
Faxserver.
Die Fassung mit zwei Parametern verwendet das private Wissensgebiet und die private Sprache. Die Fassung mit vier Parametern sucht Wissensgebiet und Sprache über ihre Namen. Fehlt ein Name, fällt sie ebenfalls auf den privaten Eintrag zurück; sie legt kein neues Wissensgebiet und keine neue Sprache an. Verwenden Sie deshalb vorhandene Namen.
Beide Fassungen geben keinen Rückgabewert zurück. Der Aufruf sendet eine Anforderung an den Server; eine erfolgreiche Rückkehr bestätigt noch keine Zustellung beim Faxempfänger. Das Agentenskript muss die Voraussetzungen erfüllen.
In der Oberfläche gibt es keinen Befehl für ein neues Fax. Ein Skript kann die Fax-Konversation dennoch anfordern — siehe Faxe.
Daten einer Konversation
Die wichtigsten Eigenschaften von Struct_Conversation:
| Eigenschaft | Inhalt |
|---|---|
Id, TicketId |
Kennung der Konversation und ihres Tickets |
State, PreviousState |
Zustand und voriger Zustand |
ConversationType, ChannelType |
Konversationstyp und Kanal |
IsCall, IsInboundCall, IsEmail, IsChat |
Art der Konversation |
Skill, SkillName, Language |
Wissensgebiet und Sprache |
Agent |
der Agent der Konversation |
SenderName, SenderNumber, SenderMailAddress |
Name, Nummer und Adresse des Absenders |
CallerNumber, CalledNumber |
Nummer des Anrufers und die gewählte Nummer |
Subject |
Betreff |
AttachedData |
die Zusatzdaten |
Zusatzdaten lesen Sie mit conversation.AttachedData.StringValue("Schlüssel")
— ohne Unterschied zwischen Groß- und Kleinschreibung, bei fehlendem Schlüssel
ein leerer Text. Das Skript liest Zusatzdaten nur; ändern kann es sie nicht.
Namensräume
| Namensraum | Typen |
|---|---|
ilogixx.Agent |
MyCCAgentScript |
ilogixx.SharedFiles.GeneralDefinitions |
Struct_Conversation, Struct_Agent, Struct_Skill, Struct_Language, Struct_Activity, Struct_VIPClass, Struct_PbxSettings, Struct_ConversationAttachedData, ConversationDataElement |
ilogixx.SharedFiles.GeneralEnums |
ConversationState, ConversationType, ChannelType, RichPresenceState |
ilogixx.SharedFiles |
ConstraintReason, ChatMessage, RealtimeAgentStatistics |
ilogixx |
AgentLogoffReason, UnregisterReason |
ilogixx.General.Shared |
RecordingSummary |
MimeKit |
MimeMessage |
System.Windows.Forms |
Form |
Das Skript kann alle Bibliotheken nutzen, die im Programmordner des Agenten
liegen — also auch .NET selbst, etwa System.Net.Http für Webdienste oder
System.Diagnostics.Process, um Programme zu starten.