Agent scripts receive product objects in their events. Agent also provides
access to the current agent. The tables below describe the scalar values
of data structures useful in scripts: text, numbers, booleans, time values
and enumerations.
Type names are the actual C# identifiers. Despite their names,
Struct_Conversation and Struct_Agent are classes, not C# struct
value types. A variable holding such an object is therefore a reference to
product data, not an independent copy.
Access and use
| Access | Product data |
|---|---|
conversation parameter of conversation events |
Struct_Conversation |
Agent and the agent parameter |
Struct_Agent |
conversation.Sender, conversation.Recipient |
Participant, possibly CallParticipant or MailParticipant |
conversation.Skill and skill events |
Struct_Skill |
conversation.Language and language events |
Struct_Language |
Agent.ActivityType and activity events |
Struct_Activity |
element parameter when additional data is added or removed |
ConversationDataElement |
vipClass parameter when the VIP class changes |
Struct_VIPClass |
| PBX settings supplied by events | Struct_PbxSettings |
| individual message in a chat history | ChatMessage |
recordingSummary parameter when recording finishes |
RecordingSummary |
References may be absent, for example the agent of a conversation still
waiting. Check them before access or use ?.. The agent API is not yet
assigned in the script constructor; use these data in the intended events.
Use product objects to read the current state. A public setter does not mean that assigning a value requests a business operation on the Server. Use the provided script commands for accepting, forwarding, wrap-up and other actions. See Agent script and Events.
Struct_Conversation — conversation
Namespace: ilogixx.SharedFiles.GeneralDefinitions.
Selected scalar properties:
| Property | Type | Meaning |
|---|---|---|
Id |
string |
conversation identifier |
RoutedConversationId |
string |
routed conversation identifier |
ConversationType |
ConversationType |
conversation type |
ChannelType |
ChannelType |
channel derived from the type |
State |
ConversationState |
current state |
PreviousState |
ConversationState |
previous state |
StateChangeTime |
DateTime |
time of the state change |
AgentChangeTime |
DateTime |
time of the agent change |
Position |
int |
reported queue position |
SkillName |
string |
skill name, or empty if there is no skill |
SkillId |
int |
skill identifier |
LanguageId |
int |
language identifier; 0 without a language |
SenderName |
string |
sender name; empty without a sender |
SenderNumber |
string |
effective number of a phone sender; otherwise empty |
SenderMailAddress |
string |
email address of an email sender; otherwise empty |
RecipientName |
string |
recipient name; empty without a recipient |
RecipientNumber |
string |
effective number of a phone recipient; otherwise empty |
RecipientMailAddress |
string |
email address of an email recipient; otherwise empty |
Subject |
string |
subject |
CcMailAddresses, BccMailAddresses |
string |
additional email recipients |
Classification |
string |
classification |
TicketId |
int |
associated ticket identifier |
RecordingPermitted |
bool |
permission to record |
IsRecording |
bool |
recording active |
IsTranscribing |
bool |
transcription active |
IsManuallyCreated |
bool |
created manually |
IsConnected |
bool |
connected, connected internally/externally, or on hold |
WasConnected |
bool |
has previously been connected |
IsChat, IsEmail, IsFax, IsCall |
bool |
checks derived from the conversation type |
IsInboundCall, IsOutboundCall |
bool |
inbound or outbound call |
IsVirtualCallback, IsVirtualDialIn |
bool |
virtual callback or dial-in |
IsThreateningCall |
bool |
call marked as threatening |
TotalWaitTime, TotalActiveTime, TotalHoldTime |
TimeSpan |
accumulated time in the respective states |
State == ConversationState.Connected and IsConnected are different
checks: IsConnected also includes hold and internally or externally
connected states. WasConnected describes the past. Use SenderNumber or
RecipientNumber directly for a phone number; this avoids checking the
participant type yourself.
Struct_Agent — agent
Namespace: ilogixx.SharedFiles.GeneralDefinitions.
Agent refers to the current agent. An event parameter named agent may
instead refer to another agent.
| Property | Type | Meaning |
|---|---|---|
Id, Name |
string |
agent identifier and name |
IsLogin |
bool |
logged in |
Active |
bool |
active flag |
Activity |
bool |
activity active |
Wrapup |
bool |
normal wrap-up active |
DynamicWrapup |
bool |
dynamic wrap-up time has not expired |
IsPausing |
bool |
wrap-up, activity or remaining wrap-up time |
RichPresenceState |
RichPresenceState |
presence state; offline without a presence object |
RichPresenceText |
string |
presence text; empty without a presence object |
EffectiveState |
ConversationState |
effective state of the determining conversation |
EffectiveCallState |
ConversationState |
effective state of the determining call |
IsTalking |
bool |
effective call state is connected or on hold |
Extension |
string |
first public number, falling back to the first internal number |
InternalNumberString, PublicNumberString |
string |
internal or public numbers combined into text |
PBXName, PBXStandby |
string |
primary or standby PBX name |
TotalNumberOfConversations |
int |
conversations currently handled by the agent |
MicrophoneMuted |
bool |
microphone muted |
CurrentMissedConversations, CurrentRejectedConversations |
int |
current counters of missed or rejected conversations |
LastStateChangeTime, ActivityStartTime, WrapupStartTime |
DateTime |
times of the respective changes |
WrapupTimeSpan, WrapupTillTimeSpan |
TimeSpan |
elapsed or remaining wrap-up time according to the respective properties |
ActivityTimeSpan, LoginTimeSpan |
TimeSpan |
activity or login duration |
UnavailableForPhoneCallUntil |
DateTime |
time until which telephony availability is blocked |
Active, IsLogin and availability for distribution are different pieces
of information. Do not derive a complete distribution decision from a single
boolean field. See also Agent symbols and availability
for the state display.
Participant, CallParticipant and MailParticipant — participants
Namespace: ilogixx.SharedFiles.GeneralDefinitions.
| Type | Property | Value type | Meaning |
|---|---|---|---|
Participant |
Identifier |
string |
participant identifier |
Participant |
Name |
string |
participant name |
CallParticipant |
EffectiveNumber |
string |
effective, possibly normalized phone number |
CallParticipant |
SipRealm |
string |
SIP realm |
CallParticipant |
CountryCode |
int |
detected country calling code |
CallParticipant |
LocaleCode, Location |
string |
detected location information |
CallParticipant |
NumberType |
PhoneNumberType |
detected phone number type |
MailParticipant |
MailAddress |
string |
email address or address information |
Both derived types also have Identifier and Name. Read phone numbers
through EffectiveNumber: the getter of CallParticipant.Number is
private and cannot be read in the script.
Struct_Skill and Struct_Language — skill and language
Namespace: ilogixx.SharedFiles.GeneralDefinitions.
Both types have these scalar values:
| Property | Type | Meaning |
|---|---|---|
Id |
int |
identifier |
Name, Description |
string |
name and description |
Deleted |
bool |
marked as deleted |
IsPrivate |
bool |
private entry |
Key |
string |
identifier as text |
Struct_Skill additionally has Color (int, stored color value) and
IsQualified (bool, not private). Additional properties of Struct_Language:
| Property | Type | Meaning |
|---|---|---|
MailReplyTag, MailForwardTag |
string |
tags for replies and forwarding |
DictionaryName |
string |
culture for spell checking and resource translation |
FemaleVoice, MaleVoice |
string |
configured voices |
Distinguish qualification levels
A named level such as “Expert” is different from an agent assignment
to a language or skill. All the following product types are in the namespace
ilogixx.SharedFiles.GeneralDefinitions.
Struct_LanguageQualification and Struct_SkillQualification describe
the levels created in Administration. Both have these scalar properties:
| Property | Type | Meaning |
|---|---|---|
| Id | int | identifier of the named level, not of the language or skill |
| Qualification | int | qualification level number |
| Name | string | level name |
| Key | string | level identifier as text |
A smaller valid level number means a better qualification.
The KnowledgeLevel class defines these values:
| Value | Meaning |
|---|---|
KnowledgeLevel.None = -1 |
not qualified |
KnowledgeLevel.Best = 1 |
best level |
KnowledgeLevel.Worst = int.MaxValue |
upper numeric limit of valid levels, not the number of configured levels |
KnowledgeLevel.IsQualified(level, requirement) checks whether the level
is at least 1 and at most the requirement. For a requirement of 2, levels
1 and 2 are sufficient; 3, 0 and -1 are not. For creating and moving named
levels, see Qualification levels in Administration.
Struct_LanguageQualificationEntry — language qualification
This object describes the assignment to one language. An agent’s
currently effective assignments are in EffectiveLanguages.
| Property | Type | Meaning |
|---|---|---|
| Id | int | assignment entry identifier |
| LanguageId | int | assigned language identifier |
| Qualification | int | language qualification level or KnowledgeLevel.None |
The setter of Qualification accepts valid level numbers from 1 upwards;
other values become KnowledgeLevel.None. An existing entry therefore
does not by itself mean that the agent is qualified. IsQualified() checks
for a valid level; IsQualified(requirement) checks for a level sufficient
for the specified requirement.
In the script, Agent.GetLanguageQualification(languageId) directly
returns the scalar int value of the currently effective assignment.
If the language is missing from those assignments, it returns
KnowledgeLevel.None. Other overloads accept a Struct_Language or a
Struct_Conversation. Agent.HasLanguageQualification(languageId, requirement)
returns the corresponding check as a bool.
Struct_SkillQualificationEntry — skill qualification
This object describes the assignment to one skill. An agent’s currently
effective assignments are in EffectiveSkills.
| Value | Type | Meaning |
|---|---|---|
| Id | int | assignment entry identifier |
| SkillId | int | assigned skill identifier |
| Qualification[qualificationType] | int | level for a particular conversation type or KnowledgeLevel.None |
Qualification itself is not an int: it is a
Struct_SkillQualificationLevel. Its indexer returns the scalar value for
the selected SkillQualificationType from the namespace
ilogixx.SharedFiles.GeneralEnums:
| Qualification type | Meaning |
|---|---|
InboundCall |
inbound call |
VirtualCall |
virtual call |
Fax |
fax |
EMail |
|
Chat |
chat |
WebCallback |
callback requested through the website |
VoiceRecording |
voicemail |
A missing type and Undefined return KnowledgeLevel.None. The skill
assignment alone is therefore not enough: an agent may be qualified for
calls in a skill but not for chat. The old properties QualificationInbound,
QualificationOutbound, QualificationFax, QualificationEMail and
QualificationChat are marked obsolete in the code. For new scripts, use
the indexer or the agent methods.
Agent.GetSkillQualification(skillId, qualificationType) returns the
currently effective level as an int; a missing assignment returns
KnowledgeLevel.None. An overload accepts a Struct_Skill instead of its
identifier. Agent.GetSkillQualification(conversation) uses the
conversation’s skill and qualification type.
Agent.HasSkillQualification(skillId, qualificationType, requirement)
returns the corresponding check as a bool.
Skills and Languages describe the configured assignments;
EffectiveSkills and EffectiveLanguages describe the currently effective
state. The agent methods above use the effective state. A qualification
check alone still does not replace a full check of login, availability and
distribution conditions.
Struct_Activity — activity
Namespace: ilogixx.SharedFiles.GeneralDefinitions.
| Property | Type | Meaning |
|---|---|---|
Id |
int |
activity identifier |
Name, Description |
string |
name and description |
Duration |
int |
configured duration in seconds |
DurationTimeSpan |
TimeSpan |
the same duration as a time span |
IsBusyTime |
bool |
count as busy time |
AllowCalls |
bool |
allow calls during the activity |
AnswerBySupervisor |
bool |
supervisor answering provided for |
AutomaticRelease |
bool |
automatic release provided for |
SkipInEscalation |
bool |
skip during escalation |
Key |
string |
identifier as text |
ConversationDataElement — individual additional data item
Namespace: ilogixx.SharedFiles.GeneralDefinitions.
| Property | Type | Meaning |
|---|---|---|
Key |
string |
additional data name |
Value |
string |
stored value |
Position |
int |
position |
IsVisible |
bool |
visibility flag, enabled by default |
Value is always text. For calculations, explicitly parse a number or date
stored in it using the appropriate format. An event for an individual item
does not supply a collection of all additional data. See Events.
Struct_VIPClass — VIP class
Namespace: ilogixx.SharedFiles.GeneralDefinitions.
| Property | Type | Meaning |
|---|---|---|
Id |
int |
identifier |
Name, Description |
string |
name and description |
Priority |
int |
priority |
ARGBColor |
int |
stored ARGB color value |
Key |
string |
identifier as text |
Struct_PbxSettings — PBX reference
Namespace: ilogixx.SharedFiles.GeneralDefinitions.
These fields can be used for a simple reference to the PBX:
| Property | Type | Meaning |
|---|---|---|
Tag |
string |
PBX settings identifier |
Master, Standby |
string |
primary and standby server |
PBXType |
PBXType |
PBX type |
PBXProtocol |
Protocol |
protocol |
SipRealm |
string |
SIP realm |
ExternalLinePrefix |
string |
outside line prefix |
SipBasePort, SipPortRange |
uint |
start and size of the SIP port range |
ChatMessage — individual chat message
Namespace: ilogixx.SharedFiles.
| Property | Type | Meaning |
|---|---|---|
Id, Key |
string |
message identifier |
Time |
DateTime |
message time |
ParticipantName |
string |
participant name |
ParticipantType |
ParticipantType |
participant type |
HtmlMessage |
string |
message text with possible HTML formatting |
IntrusionMode |
IntrusionMode |
intrusion mode |
RecordingSummary — completed recording
Namespace: ilogixx.General.Shared. The My_RecordingSummaryReceived
event supplies this object.
| Property | Type | Meaning |
|---|---|---|
FilePath |
string |
recording file path |
FileTotalTime |
TimeSpan |
total duration |
FileSize |
long |
file size |
FileType |
AudioFileType |
audio file type |
RecordingType |
RecordingType |
recording type |
Evaluate types correctly
Compare enumerations with named values such as ConversationState.Connected
instead of guessing numbers. Phone numbers and identifiers remain string:
a phone number is not a numeric value. TimeSpan is a duration; DateTime
is a point in time. For display and calculation, TimeSpan.TotalSeconds
and TimeSpan.TotalMinutes are useful; Seconds contains only the seconds
component.
The tables describe the product version in use. Collections, conversation histories and complex administration objects require more advanced access and are not listed here as scalar values.