Formulas calculate with lists — the running conversations, the agents, the
skills and others. Each entry of a list has fields, for example Name or
State. The filters of the display element limit the lists; how
to query lists is described in Formulas. Points in time are
server time in UTC, see
Time and time zones.
Lists
| List | Contains |
|---|---|
Conversations |
all running conversations |
PhoneCalls |
calls, inbound and outbound |
InboundCalls |
inbound calls, including callbacks, web callbacks and dial-ins |
OutboundCalls |
outbound calls: preview, predictive, broadcast and manual |
EMails, InboundEMails, OutboundEMails |
emails, all of them or only inbound or outbound ones |
Faxes, InboundFaxes, OutboundFaxes |
faxes, likewise |
Chats |
chats |
Agents |
all configured agents, logged in or not |
Skills |
skills |
ACDs |
the distribution rules of the skills with their metrics |
Languages |
languages |
SkillQualifications, LanguageQualifications |
the qualification levels |
Alarms |
the active alarms |
TimeStamps |
the intervals of the real-time statistics |
ConversationStates |
the states of running conversations |
ConversationTypes |
the conversation types |
Bins |
the bins of the real-time statistics |
ConversationStatistics, AgentStatistics |
the real-time statistics |
Configuration |
the display element shown, with Name and Description |
The rows of a table come from the matching list: an agent table from
Agents, a time table from TimeStamps, a histogram table from Bins and so
on. Older formulas use Contacts; the name means the same as
Conversations.
Conversation
The entries of Conversations and its sublists, the rows of the conversation
table:
| Field | Meaning |
|---|---|
Id |
the ID of the conversation |
ConversationType, ChannelType |
conversation type and channel, see States and types |
State, PreviousState |
the current and the previous state |
StartTime, StartedTimeSpan |
start and duration since then |
QueueTime, QueuedTimeSpan |
entry into the queue and duration since then |
StateChangeTime |
the last change of state |
Position |
the position in the queue |
PickTime |
the time until it was accepted |
TotalWaitTime, TotalAlertingTime, TotalActiveTime, TotalHoldTime |
the time in the states Waiting, Alerting, Connected and On hold, added up |
Skill, SkillName, SkillId |
the skill — as an entry with Skill.Name, as a name, as a number |
ACD |
the distribution rule of the skill |
Language |
the language, with Language.Name |
Agent, PreviousAgent |
the handling and the previous agent, with Agent.Name; empty if there is none |
IsConnected |
currently connected, also on hold |
WasConnected |
has already been connected |
Abandoned |
the customer hung up before being connected |
IsInboundCall, IsOutboundCall, IsCall, IsEmail, IsFax, IsChat |
the kind of conversation |
IsManuallyCreated |
started by the agent |
IsRecording, IsSupervised |
is being recorded, is being listened in on |
VIPClass |
the VIP class, with VIPClass.Name |
CallerNumber, CalledNumber |
the phone numbers of the caller and of the called party |
Subject, SenderName, SenderMailAddress, RecipientMailAddress |
subject, sender and recipient |
CallbackTime, TimeSpanUntilCallback |
the scheduled callback and the time until then |
AttachedData.StringValue("key") |
a value of the attached data; empty if it does not exist |
StateStartTime("state") |
the start of the last segment in this state |
CycleContains("state") |
has already been in this state |
Agent
The entries of Agents, the rows of the agent table:
| Field | Meaning |
|---|---|
Id, Name |
ID and name |
IsLogin |
logged in |
LoginTime, LoginTimeSpan |
login and duration since then; for logged-off agents empty or 0 |
Extension |
the extension |
Idle, IdleStartTime |
free — without conversation, wrap-up and activity — and since when |
Wrapup, WrapupStartTime, WrapupTimeSpan |
in wrap-up, since when, for how long |
WrapupTillTimeSpan |
the remaining time of an automatic wrap-up |
Activity, ActivityType, ActivityStartTime, ActivityTimeSpan |
in an activity, which one (ActivityType.Name), since when, for how long |
IsPausing |
in wrap-up or in an activity |
IsTalking |
a call is connected or on hold |
EffectiveCallState, EffectiveState |
the state of the agent’s most important call or conversation |
LastStateChangeTime, LastStateChangeTimeSpan |
the last change and the time since then |
Agents also contains logged-off agents. Agents.Count(IsLogin) counts the
logged-in ones; in an agent table, the row formula IsLogin shows only them.
Skills and distribution rules
The entries of Skills — and the rows of the skill table — have Id,
Name, Description and IsPrivate. The metrics are in the distribution
rules, the entries of ACDs. Each distribution rule has the same Id and the
same Name as its skill; in a skill table, you reach it with
ACDs.First(Id = Row.Id).
| Field | Meaning |
|---|---|
Open |
open: open according to the calendar, opened manually and not a holiday |
CalendarOpen, ManualOpen, Holiday |
the three conditions individually |
LoggedInAgents |
logged-in agents qualified for the skill |
AvailableAgents |
of these, the free ones — without conversation, wrap-up and activity |
CurrentConversations, CurrentCalls, CurrentEMails, CurrentFaxes, CurrentChats |
running inbound conversations of the skill |
WaitingConversations, WaitingCalls, WaitingEMails, WaitingFaxes, WaitingChats |
of these, the ones not yet connected |
TotalCalls, ConnectedCalls, AbandonedCalls |
calls of the real-time statistics: all, connected, abandoned before being connected |
CallAVGWait, CallAVGHandling |
the average wait time per call and the average talk time per connected call |
TotalConversations, ConnectedConversations, ConversationAVGWait, ConversationAVGHandling |
the same for all channels |
Calls here are inbound calls, callbacks, web callbacks and manual outbound calls of the skill.
Further entries
| Entries | Fields |
|---|---|
Language (Languages) |
Id, Name, Description |
| Qualification level | Name, Qualification — the level, 1 is the best |
Alarm (Alarms) |
Name of the performance indicator; SourceName — the agent, conversation or skill it applies to; Severity.Name and Severity.SeverityLevel; State; RaiseTime, ChangeTime and CloseTime, each DateTime.MinValue as long as the point in time does not exist |
Interval (TimeStamps) |
Time, the start of the interval in local time |
Bin (Bins) |
Index from 0; Lower and Upper, the boundaries in seconds |
States and types
In formulas, you write the value in quotation marks, for example
State = "Waiting"; tables and labels show the display text.
Conversation states
| Value | Display |
|---|---|
Inactive |
Inactive — for example while the flow is running |
Waiting |
Waiting |
Alerting |
Alerting |
Connected |
Connected |
OnHold |
On hold |
Transfer, Transferring |
Transferring, transferring |
TransferringOnHold |
on hold during a transfer |
Transferred |
Transferred |
Disconnected |
Disconnected |
Dialing |
Dialing |
Busy |
Busy |
Knocking |
Secondary call |
Rejected |
Call rejected |
Announcement |
Announcement |
Voicemail |
Voicemail |
DTMF |
DTMF input |
NLP |
Recognition |
AutomaticAnswer |
Automatic answer |
Park |
Parked |
Private |
Private Queued |
Terminate |
Terminating |
TimeOut |
Time out |
TooManyWaiting |
Too many waiting calls |
TooLongWaiting |
Too long waiting time |
NoAgentLoggedIn |
No agent logged in |
NoAgentAvailable |
No agent available |
Closed |
Closed |
ManualClosed |
Manual closed |
CalendarClosed |
Calendar closed |
HolidayClosed |
Holiday closed |
Banned |
Banned |
AgentSearching |
Agent searching |
AgentDialing |
Agent dialing |
AgentAlerting |
Agent alerting |
AgentConnected |
Agent connected |
DialPending |
Dial pending |
CustomerConnected |
Connected to contact |
DataSent |
Data sent |
DataAccepted |
Data accepted |
DataTransferToClient |
Data transfer to client |
DataTransferToServer |
Data transfer to server |
VirtualCallback |
Virtual callback |
VirtualDialIn |
Virtual dial in |
SendingAnswer |
Sending answer |
SendingAnswerPending |
Sending answer pending |
SendingEmail |
Sending email |
WaitForReply |
Wait for reply |
WaitForInformation |
Wait for information |
WaitingForReview |
Wait for review |
Reviewing |
Reviewing |
WaitingForCorrections |
Wait for corrections |
Correcting |
Correcting |
InvalidRecipients |
Invalid receiver(s) |
CodecMismatch |
No matching codec |
PBXPick |
Picked via PBX |
PBXPush |
Pushed via PBX |
CCPick |
Picked via CC |
AlertingExternal, ConnectedExternal, HandledExternal |
Alerting External, Connected External, Handled External |
AlertingInternal, ConnectedInternal, HandledInternal |
Alerting Internal, Connected Internal, Handled Internal |
RecordingListening |
Listening to recording |
VoicemailListening |
Listening to voicemail |
Conversation types
| Value | Display |
|---|---|
InboundCall |
Inbound call |
Callback |
Callback |
WebCallback |
Web Callback |
DialIn |
Dial in |
PreviewDialer |
Preview call |
PredictiveDialer |
Predictive call |
PredictiveBroadcast |
Predictive broadcast call |
ManualOutboundCall |
Manual outgoing call |
InboundEMail, OutboundEMail |
Inbound Email, Outbound Email |
InboundFax, OutboundFax |
Inbound Fax, Outbound Fax |
Chat |
Chat |
Voicemail |
Voicemail |
RecordingPlaybackCall, VoicemailPlaybackCall |
Recording Playback, Voicemail Playback |
Channels and alarm states
| Value | Display |
|---|---|
PhoneCall, EMail, Fax, Chat |
Call, Email, Fax, Chat — the channels (ChannelType) |
Raised, Changed |
Raised, Changed — the state of an alarm |
ClosedManually, Closed |
Closed manually, Closed |
Real-time statistics
The server counts the finished conversations in a time grid; you count the running ones via the lists. How far back the statistics go, how wide an interval is and which bins there are is set in the server configuration under Internal histogram — the defaults are 12 hours in intervals of 15 minutes. Each conversation counts in the interval in which it began.
Conversations
ConversationStatistics.Function(…) counts conversations:
| Function | Counts the finished conversations that … |
|---|---|
Received |
all |
Connected |
were connected |
Abandoned |
were abandoned before being connected |
Rejected |
were rejected, for example because the skill was closed or too many were waiting |
Unhandled |
exceeded the wait time |
Transferred, Picked, Pushed |
were transferred, picked or pushed |
ConversationStatistics.Duration("state", …) returns the time they spent in
the given state, added up.
All arguments in the parentheses are optional, but must be in this order: interval, state, conversation type, skill, language and finally an upper bound in seconds — which can be preceded by a lower bound. You write state and type as text:
ConversationStatistics.Received("InboundCall")
ConversationStatistics.Connected("InboundCall", 20)
ConversationStatistics.Duration("Connected", "InboundCall")
If the order is wrong, the designer does not find a matching function and reports an error.
Agents
AgentStatistics.Function(…) counts what agents experienced in the
statistics period:
| Function | Counts |
|---|---|
Presented, Connected, Rejected |
offered, accepted and rejected conversations |
Transferred, Picked, OnHold |
transferred, picked and held ones |
UniqueConnected etc. |
the same, with each conversation counted only once |
ConnectedDuration etc. |
the time for it |
Wrapup, Activity, Idle |
wrap-ups, activities and free periods |
WrapupDuration, ActivityDuration, IdleDuration |
the time in them |
The arguments in the parentheses follow the order interval, agent,
conversation type, skill, language; for Wrapup, Activity and Idle only
interval and agent. In an agent table, you pass the row:
AgentStatistics.UniqueConnected(Row).
In tables
| Table | Typical columns |
|---|---|
| Time | Row.Time with the format pattern HH:mm; ConversationStatistics.Received(Row); ConversationStatistics.Connected(Row, "InboundCall") |
| Histogram | Row.Lower, Row.Upper; ConversationStatistics.Connected(Row.Lower, Row.Upper) |
| Conversation state | Row — the state; Conversations.Count(State = Row) |
| Conversation Type | Row — the type; Conversations.Count(ConversationType = Row); ConversationStatistics.Received(Row) |
| Skill | Name; ConversationStatistics.Received(Row) |