myContactCenterManual

Product data in agent scripts

Scalar fields of product data structures for conversations, agents, participants, skills, languages, activities, additional data, chat and recordings in agent scripts.

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 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.

    ↑ ↓ select · Enter open · Esc close