I had my first exposure to CUIC last week and was glad to finally see this product and get to play with it. For the most part it looks just like CUIS, except for the whole appliance model. The UI is a little more streamlined, but what I remember from CUIS, it’s all there. Now, one big change is that with CUIC, reports are cut down to a standard set (20 if I remember correctly) as opposed to the dozens of reports available through WebView. This created some initial confusion as you try to familiarize yourself with what kind of data the new reports have. Perhaps the best feature is the ability to remove columns from reports and just display the data you want to see.
One report which comes up all the time is an agent real time report showing the agent’s current not ready reason code. I have an SQL query I use to get this data myself, but now that CUIC is supposed to make it easier to create your own reports, I wanted to give it a shot and create my very first custom report.
First, let’s start with the SQL query which joins the real time agent states as well as reason code tables.
1: SELECT [awdb].[dbo].[t_Agent_Real_Time].[SkillTargetID]
2: ,[awdb].[dbo].[t_Agent].[EnterpriseName]
3: ,[DateTime]
4: ,[SkillGroupSkillTargetID]
5: ,[ServiceSkillTargetID]
6: ,[AgentState]
7: ,'Agent State' =
8: CASE
9: WHEN [AgentState] = 2 THEN 'Not Ready'
10: WHEN [AgentState] = 3 THEN 'Ready'
11: WHEN [AgentState] = 4 THEN 'Talking'
12: WHEN [AgentState] = 5 THEN 'Wrap Up'
13: END
14: ,[awdb].[dbo].[t_Agent_Real_Time].[ReasonCode]
15: ,[awdb].[dbo].[t_Reason_Code].[ReasonText]
16: ,[Extension]
17: ,[DateTimeLastStateChange]
18: FROM [awdb].[dbo].[t_Agent_Real_Time]
19: JOIN [awdb].[dbo].[t_Reason_Code] ON ([awdb].[dbo].[t_Agent_Real_Time].[ReasonCode]=[awdb].[dbo].[t_Reason_Code].[ReasonCode])
20: JOIN [awdb].[dbo].[t_Agent] ON [awdb].[dbo].[t_Agent_Real_Time].[SkillTargetID] = [awdb].[dbo].[t_Agent].[SkillTargetID]
21: GO
Now, don’t judge me on a) the poor SQL writing skills or b) my affinity to spacing. It’s important to understand what the above query is doing to ensure you know where your reason codes are coming from.
Second, you will need to create a new report definition based on the stock Agent Real Time report definition. You will need to extract the SQL of the report query shown below.
SELECT Agent.EnterpriseName, full_name=(Person.LastName + ‘, ‘ + Person.FirstName) , Skill_Group.EnterpriseName as SkillName, Agent.SkillTargetID, Agent_Real_Time.DateTime, Datepart(yy, Agent_Real_Time.DateTime) as Year, Datepart(mm, Agent_Real_Time.DateTime) as Month, Datepart(ww, Agent_Real_Time.DateTime) as Week, Datepart(dy, Agent_Real_Time.DateTime) as DOY, Datepart(dw, Agent_Real_Time.DateTime) as DOW, CONVERT(char(10),Agent_Real_Time.DateTime,101) as DATE, Agent_Real_Time.SkillGroupSkillTargetID, ServiceName = Service.EnterpriseName, Media = Media_Routing_Domain.EnterpriseName, CASE Agent_Real_Time.AgentState WHEN 0 THEN ‘Logged Out’ WHEN 1 THEN ‘Logged On’ WHEN 2 THEN ‘Not Ready’ WHEN 3 THEN ‘Ready’ WHEN 4 THEN ‘Talking’ WHEN 5 THEN ‘Work Not Ready’ WHEN 6 THEN ‘Work Ready’ WHEN 7 THEN ‘Busy Other’ WHEN 8 THEN ‘Reserved’ WHEN 9 THEN ‘Unknown’ WHEN 10 THEN ‘Hold’ WHEN 11 THEN ‘Active’ WHEN 12 THEN ‘Paused’ WHEN 13 THEN ‘Interrupted’ WHEN 14 THEN ‘Not Active’ ELSE CONVERT(VARCHAR, Agent_Real_Time.AgentState) END AgentState, CASE Agent_Real_Time.PhoneType When 0 THEN ‘Not Mobile’ WHEN 1 THEN ‘Call By Call’ WHEN 2 THEN ‘Nailed Connection’ Else ‘Not Applicable’ END phonetypetext, remotephonenumber = Agent_Real_Time.RemotePhoneNumber, ReasonCode = CASE WHEN Agent_Real_Time.ReasonCode = 0 THEN ‘NONE’ ELSE CONVERT(VARCHAR, Agent_Real_Time.ReasonCode) END , Agent_Real_Time.Extension, Agent_Real_Time.DateTimeLastStateChange, Agent_Real_Time.DateTimeLogin, CASE WHEN RequestedSupervisorAssist = 1 THEN ‘Yes’ ELSE ‘No’ END RequestedSupervisorAssist, CASE Agent_Real_Time.Destination WHEN 1 THEN ‘ACD’ WHEN 2 THEN ‘Direct’ WHEN 3 THEN ‘Auto Out’ WHEN 4 THEN ‘Reserve’ WHEN 5 THEN ‘Preview’ ELSE ‘Not Applicable’ END Destination, CASE Agent_Real_Time.Direction WHEN 1 THEN ‘In’ WHEN 2 THEN ‘Out’ WHEN 3 THEN ‘Other’ ELSE ‘Not Applicable’ END Direction, CASE WHEN Agent_Real_Time.OnHold = 1 THEN ‘Yes’ ELSE ‘No’ END OnHold, Agent_Real_Time.NetworkTargetID, Agent_Real_Time.AgentStatus, Agent_Real_Time.CustomerPhoneNumber, Agent_Real_Time.CustomerAccountNumber, Agent_Real_Time.CampaignID, Agent_Real_Time.QueryRuleID, Duration = DATEDIFF(ss, Agent_Real_Time.DateTimeLastStateChange, CASE WHEN (DATEDIFF(ss, Agent_Real_Time.DateTimeLastStateChange, (SELECT NowTime from Controller_Time (nolock))) <= 0 ) THEN Agent_Real_Time.DateTimeLastStateChange ELSE(SELECT NowTime FROM Controller_Time (nolock)) END), CASE WHEN Agent_Real_Time.Routable = 1 THEN ‘Yes’ ELSE ‘No’ END RoutableText,Agent_Real_Time.DateTimeLastModeChange, Agent_Real_Time.CallInProgress, Agent_Real_Time.MaxTasks, CASE WHEN Agent_Real_Time.AvailableInMRD = 0 THEN ‘No’ WHEN Agent_Real_Time.AvailableInMRD = 1 THEN ‘Yes_ICM’ WHEN Agent_Real_Time.AvailableInMRD = 2 THEN ‘Yes_APP’ ELSE ‘No’ END AvailInMRDText, Agent_Real_Time.DateTimeTaskLevelChange, Agent_Real_Time.RouterCallsQueueNow, Agent_Real_Time.RouterLongestCallQ FROM Agent (nolock), Person (nolock), Media_Routing_Domain (nolock), Agent_Real_Time (nolock) LEFT JOIN Service (nolock) ON Agent_Real_Time.ServiceSkillTargetID = Service.SkillTargetID, Skill_Group WHERE ( Agent_Real_Time.SkillGroupSkillTargetID = Skill_Group.SkillTargetID) and Agent.PersonID=Person.PersonID and Media_Routing_Domain.MRDomainID = Agent_Real_Time.MRDomainID and ( Agent.SkillTargetID = Agent_Real_Time.SkillTargetID ) UNION SELECT Agent.EnterpriseName, full_name=(Person.LastName + ‘, ‘ + Person.FirstName) , convert(varchar,’Not Applicable’), Agent_Real_Time.SkillTargetID, Agent_Real_Time.DateTime, Datepart(yy, Agent_Real_Time.DateTime) as Year, Datepart(mm, Agent_Real_Time.DateTime) as Month, Datepart(ww, Agent_Real_Time.DateTime) as Week, Datepart(dy, Agent_Real_Time.DateTime) as DOY, Datepart(dw, Agent_Real_Time.DateTime) as DOW, CONVERT(char(10),Agent_Real_Time.DateTime,101) as DATE, Agent_Real_Time.SkillGroupSkillTargetID, ServiceName = Service.EnterpriseName, Media=Media_Routing_Domain.EnterpriseName, CASE Agent_Real_Time.AgentState WHEN 0 THEN ‘Logged Out’ WHEN 1 THEN ‘Logged On’ WHEN 2 THEN ‘Not Ready’ WHEN 3 THEN ‘Ready’ WHEN 4 THEN ‘Talking’ WHEN 5 THEN ‘Work Not Ready’ WHEN 6 THEN ‘Work Ready’ WHEN 7 THEN ‘Busy Other’ WHEN 8 THEN ‘Reserved’ WHEN 9 THEN ‘Unknown’ WHEN 10 THEN ‘Hold’ WHEN 11 THEN ‘Active’ WHEN 12 THEN ‘Paused’ WHEN 13 THEN ‘Interrupted’ WHEN 14 THEN ‘Not Active’ ELSE CONVERT(VARCHAR, Agent_Real_Time.AgentState) END AgentState, CASE Agent_Real_Time.PhoneType When 0 THEN ‘Not Mobile’WHEN 1 THEN ‘Call By Call’ WHEN 2 THEN ‘Nailed Connection’ Else ‘Not Applicable’ END phonetypetext, remotephonenumber = Agent_Real_Time.RemotePhoneNumber, ReasonCode = CASE WHEN Agent_Real_Time.ReasonCode = 0 THEN ‘NONE’ ELSE CONVERT(VARCHAR, Agent_Real_Time.ReasonCode) END , Agent_Real_Time.Extension, Agent_Real_Time.DateTimeLastStateChange, Agent_Real_Time.DateTimeLogin, CASE WHEN RequestedSupervisorAssist = 1 THEN ‘Yes’ ELSE ‘No’ END RequestedSupervisorAssist, CASE Agent_Real_Time.Destination WHEN 1 THEN ‘ACD’ WHEN 2 THEN ‘Direct’ WHEN 3 THEN ‘Auto Out’ WHEN 4 THEN ‘Reserve’ WHEN 5 THEN ‘Preview’ ELSE ‘Not Applicable’ END Destination, CASE Agent_Real_Time.Direction WHEN 1 THEN ‘In’ WHEN 2 THEN ‘Out’ WHEN 3 THEN ‘Other’ ELSE ‘Not Applicable’ END Direction, CASE WHEN Agent_Real_Time.OnHold = 1 THEN ‘Yes’ ELSE ‘No’ END OnHold, Agent_Real_Time.NetworkTargetID, Agent_Real_Time.AgentStatus, Agent_Real_Time.CustomerPhoneNumber, Agent_Real_Time.CustomerAccountNumber, Agent_Real_Time.CampaignID, Agent_Real_Time.QueryRuleID, Duration=DATEDIFF(ss, Agent_Real_Time.DateTimeLastStateChange, CASE WHEN (DATEDIFF(ss, Agent_Real_Time.DateTimeLastStateChange, (SELECT NowTime from Controller_Time (nolock))) <= 0 ) THEN Agent_Real_Time.DateTimeLastStateChange ELSE (SELECT NowTime FROM Controller_Time (nolock)) END), CASE WHEN Agent_Real_Time.Routable = 1 THEN ‘Yes’ ELSE ‘No’ END RoutableText , Agent_Real_Time.DateTimeLastModeChange, Agent_Real_Time.CallInProgress, Agent_Real_Time.MaxTasks, CASE WHEN Agent_Real_Time.AvailableInMRD = 0 THEN ‘No’ WHEN Agent_Real_Time.AvailableInMRD = 1 THEN ‘Yes_ICM’ WHEN Agent_Real_Time.AvailableInMRD = 2 THEN ‘Yes_APP’ ELSE ‘No’ END AvailInMRDText, Agent_Real_Time.DateTimeTaskLevelChange, Agent_Real_Time.RouterCallsQueueNow, Agent_Real_Time.RouterLongestCallQ FROM Agent (nolock), Person (nolock), Media_Routing_Domain (nolock), Agent_Real_Time (nolock) LEFT JOIN Service (nolock) ON Agent_Real_Time.ServiceSkillTargetID = Service.SkillTargetID WHERE ((Agent_Real_Time.SkillGroupSkillTargetID = 0) OR (Agent_Real_Time.SkillGroupSkillTargetID IS NULL)) and Agent.PersonID=Person.PersonID and Media_Routing_Domain.MRDomainID = Agent_Real_Time.MRDomainID and ( Agent.SkillTargetID = Agent_Real_Time.SkillTargetID )
Third, modify the SQL query. Also, it helps a lot to actually arrange the above query and break it down section by section.
1:
2: SELECT
3: Agent.EnterpriseName,
4: full_name=(Person.LastName + ', ' + Person.FirstName),
5: Skill_Group.EnterpriseName as SkillName,
6: Agent.SkillTargetID,
7: Agent_Real_Time.DateTime,
8: Datepart(yy, Agent_Real_Time.DateTime) as Year,
9: Datepart(mm, Agent_Real_Time.DateTime) as Month,
10: Datepart(ww, Agent_Real_Time.DateTime) as Week,
11: Datepart(dy, Agent_Real_Time.DateTime) as DOY,
12: Datepart(dw, Agent_Real_Time.DateTime) as DOW,
13: CONVERT(char(10),Agent_Real_Time.DateTime,101) as DATE, Agent_Real_Time.SkillGroupSkillTargetID,
14: ServiceName = Service.EnterpriseName,
15: Media = Media_Routing_Domain.EnterpriseName,
16: CASE Agent_Real_Time.AgentState
17: WHEN 0 THEN 'Logged Out'
18: WHEN 1 THEN 'Logged On'
19: WHEN 2 THEN 'Not Ready'
20: WHEN 3 THEN 'Ready'
21: WHEN 4 THEN 'Talking'
22: WHEN 5 THEN 'Work Not Ready'
23: WHEN 6 THEN 'Work Ready'
24: WHEN 7 THEN 'Busy Other'
25: WHEN 8 THEN 'Reserved'
26: WHEN 9 THEN 'Unknown'
27: WHEN 10 THEN 'Hold'
28: WHEN 11 THEN 'Active'
29: WHEN 12 THEN 'Paused'
30: WHEN 13 THEN 'Interrupted'
31: WHEN 14 THEN 'Not Active'
32: ELSE CONVERT(VARCHAR, Agent_Real_Time.AgentState)
33: END AgentState,
34: CASE Agent_Real_Time.PhoneType
35: When 0 THEN 'Not Mobile'
36: WHEN 1 THEN 'Call By Call'
37: WHEN 2 THEN 'Nailed Connection'
38: Else 'Not Applicable'
39: END phonetypetext,
40: remotephonenumber = Agent_Real_Time.RemotePhoneNumber,
41: ReasonCode = CASE
42: WHEN Agent_Real_Time.ReasonCode = 0
43: THEN 'NONE'
44: ELSE CONVERT(VARCHAR, Agent_Real_Time.ReasonCode)
45: END ,
46: Reason_Code.ReasonText,
47: Agent_Real_Time.Extension,
48: Agent_Real_Time.DateTimeLastStateChange,
49: Agent_Real_Time.DateTimeLogin,
50: CASE
51: WHEN RequestedSupervisorAssist = 1 THEN 'Yes' ELSE 'No'
52: END RequestedSupervisorAssist,
53: CASE Agent_Real_Time.Destination
54: WHEN 1 THEN 'ACD'
55: WHEN 2 THEN 'Direct'
56: WHEN 3 THEN 'Auto Out'
57: WHEN 4 THEN 'Reserve'
58: WHEN 5 THEN 'Preview'
59: ELSE 'Not Applicable'
60: END Destination,
61: CASE Agent_Real_Time.Direction
62: WHEN 1 THEN 'In'
63: WHEN 2 THEN 'Out'
64: WHEN 3 THEN 'Other'
65: ELSE 'Not Applicable'
66: END Direction,
67: CASE
68: WHEN Agent_Real_Time.OnHold = 1 THEN 'Yes'
69: ELSE 'No'
70: END OnHold,
71: Agent_Real_Time.NetworkTargetID,
72: Agent_Real_Time.AgentStatus,
73: Agent_Real_Time.CustomerPhoneNumber,
74: Agent_Real_Time.CustomerAccountNumber,
75: Agent_Real_Time.CampaignID,
76: Agent_Real_Time.QueryRuleID,
77: Duration = DATEDIFF(ss, Agent_Real_Time.DateTimeLastStateChange,
78: CASE
79: WHEN (DATEDIFF(ss, Agent_Real_Time.DateTimeLastStateChange, (SELECT NowTime from Controller_Time (nolock))) <= 0 )
80: THEN Agent_Real_Time.DateTimeLastStateChange
81: ELSE(SELECT NowTime FROM Controller_Time (nolock))
82: END),
83: CASE
84: WHEN Agent_Real_Time.Routable = 1
85: THEN 'Yes' ELSE 'No'
86: END RoutableText,
87: Agent_Real_Time.DateTimeLastModeChange,
88: Agent_Real_Time.CallInProgress,
89: Agent_Real_Time.MaxTasks,
90: CASE
91: WHEN Agent_Real_Time.AvailableInMRD = 0 THEN 'No'
92: WHEN Agent_Real_Time.AvailableInMRD = 1 THEN 'Yes_ICM'
93: WHEN Agent_Real_Time.AvailableInMRD = 2 THEN 'Yes_APP'
94: ELSE 'No'
95: END AvailInMRDText,
96: Agent_Real_Time.DateTimeTaskLevelChange,
97: Agent_Real_Time.RouterCallsQueueNow,
98: Agent_Real_Time.RouterLongestCallQ
99: FROM
100: Agent (nolock),
101: Person (nolock),
102: Media_Routing_Domain (nolock),
103: Agent_Real_Time (nolock) LEFT JOIN Service (nolock) ON Agent_Real_Time.ServiceSkillTargetID = Service.SkillTargetID
104: JOIN Reason_Code ON Agent_Real_Time.ReasonCode = Reason_Code.ReasonCode,
105: Skill_Group
106: WHERE ( Agent_Real_Time.SkillGroupSkillTargetID = Skill_Group.SkillTargetID)
107: and Agent.PersonID=Person.PersonID
108: and Media_Routing_Domain.MRDomainID = Agent_Real_Time.MRDomainID
109: and ( Agent.SkillTargetID = Agent_Real_Time.SkillTargetID )
110: UNION SELECT
111: Agent.EnterpriseName,
112: full_name=(Person.LastName + ', ' + Person.FirstName) ,
113: convert(varchar,'Not Applicable'),
114: Agent_Real_Time.SkillTargetID,
115: Agent_Real_Time.DateTime,
116: Datepart(yy, Agent_Real_Time.DateTime) as Year,
117: Datepart(mm, Agent_Real_Time.DateTime) as Month,
118: Datepart(ww, Agent_Real_Time.DateTime) as Week,
119: Datepart(dy, Agent_Real_Time.DateTime) as DOY,
120: Datepart(dw, Agent_Real_Time.DateTime) as DOW,
121: CONVERT(char(10),Agent_Real_Time.DateTime,101) as DATE,
122: Agent_Real_Time.SkillGroupSkillTargetID,
123: ServiceName = Service.EnterpriseName,
124: Media=Media_Routing_Domain.EnterpriseName,
125: CASE
126: Agent_Real_Time.AgentState
127: WHEN 0 THEN 'Logged Out'
128: WHEN 1 THEN 'Logged On'
129: WHEN 2 THEN 'Not Ready'
130: WHEN 3 THEN 'Ready'
131: WHEN 4 THEN 'Talking'
132: WHEN 5 THEN 'Work Not Ready'
133: WHEN 6 THEN 'Work Ready'
134: WHEN 7 THEN 'Busy Other'
135: WHEN 8 THEN 'Reserved'
136: WHEN 9 THEN 'Unknown'
137: WHEN 10 THEN 'Hold'
138: WHEN 11 THEN 'Active'
139: WHEN 12 THEN 'Paused'
140: WHEN 13 THEN 'Interrupted'
141: WHEN 14 THEN 'Not Active'
142: ELSE CONVERT(VARCHAR, Agent_Real_Time.AgentState)
143: END AgentState,
144: CASE
145: Agent_Real_Time.PhoneType
146: When 0 THEN 'Not Mobile'
147: WHEN 1 THEN 'Call By Call'
148: WHEN 2 THEN 'Nailed Connection'
149: Else 'Not Applicable'
150: END phonetypetext,
151: remotephonenumber = Agent_Real_Time.RemotePhoneNumber,
152: ReasonCode =
153: CASE
154: WHEN Agent_Real_Time.ReasonCode = 0 THEN 'NONE'
155: ELSE CONVERT(VARCHAR, Agent_Real_Time.ReasonCode)
156: END ,
157: Reason_Code.ReasonText,
158: Agent_Real_Time.Extension,
159: Agent_Real_Time.DateTimeLastStateChange,
160: Agent_Real_Time.DateTimeLogin,
161: CASE
162: WHEN RequestedSupervisorAssist = 1 THEN 'Yes'
163: ELSE 'No'
164: END RequestedSupervisorAssist,
165: CASE
166: Agent_Real_Time.Destination
167: WHEN 1 THEN 'ACD'
168: WHEN 2 THEN 'Direct'
169: WHEN 3 THEN 'Auto Out'
170: WHEN 4 THEN 'Reserve'
171: WHEN 5 THEN 'Preview'
172: ELSE 'Not Applicable'
173: END Destination,
174: CASE
175: Agent_Real_Time.Direction
176: WHEN 1 THEN 'In'
177: WHEN 2 THEN 'Out'
178: WHEN 3 THEN 'Other'
179: ELSE 'Not Applicable'
180: END Direction,
181: CASE
182: WHEN Agent_Real_Time.OnHold = 1 THEN 'Yes'
183: ELSE 'No'
184: END OnHold,
185: Agent_Real_Time.NetworkTargetID,
186: Agent_Real_Time.AgentStatus,
187: Agent_Real_Time.CustomerPhoneNumber,
188: Agent_Real_Time.CustomerAccountNumber,
189: Agent_Real_Time.CampaignID,
190: Agent_Real_Time.QueryRuleID,
191: Duration=DATEDIFF(ss, Agent_Real_Time.DateTimeLastStateChange,
192: CASE
193: WHEN (DATEDIFF(ss, Agent_Real_Time.DateTimeLastStateChange,
194: (SELECT NowTime from Controller_Time (nolock))) <= 0 )
195: THEN Agent_Real_Time.DateTimeLastStateChange
196: ELSE (SELECT NowTime FROM Controller_Time (nolock))
197: END),
198: CASE
199: WHEN Agent_Real_Time.Routable = 1 THEN 'Yes'
200: ELSE 'No'
201: END RoutableText ,
202: Agent_Real_Time.DateTimeLastModeChange,
203: Agent_Real_Time.CallInProgress,
204: Agent_Real_Time.MaxTasks,
205: CASE
206: WHEN Agent_Real_Time.AvailableInMRD = 0 THEN 'No'
207: WHEN Agent_Real_Time.AvailableInMRD = 1 THEN 'Yes_ICM'
208: WHEN Agent_Real_Time.AvailableInMRD = 2 THEN 'Yes_APP'
209: ELSE 'No'
210: END AvailInMRDText,
211: Agent_Real_Time.DateTimeTaskLevelChange,
212: Agent_Real_Time.RouterCallsQueueNow,
213: Agent_Real_Time.RouterLongestCallQ
214: FROM
215: Agent (nolock),
216: Person (nolock),
217: Media_Routing_Domain (nolock),
218: Agent_Real_Time (nolock) LEFT JOIN Service (nolock) ON Agent_Real_Time.ServiceSkillTargetID = Service.SkillTargetID
219: JOIN Reason_Code ON Agent_Real_Time.ReasonCode = Reason_Code.ReasonCode
220: WHERE
221: ((Agent_Real_Time.SkillGroupSkillTargetID = 0) OR (Agent_Real_Time.SkillGroupSkillTargetID IS NULL))
222: and Agent.PersonID=Person.PersonID
223: and Media_Routing_Domain.MRDomainID = Agent_Real_Time.MRDomainID
224: and ( Agent.SkillTargetID = Agent_Real_Time.SkillTargetID )
Note line 46 and 104 where the join is made to retrieve the reason text. Also note that you need to duplicate these lines in the Union Select statement.
Finally, create a new report definition, create a new report based off the definition, and test. This posts assumes that you know at least the very basics around CUIC. It doesn’t hurt to know some SQL, personally I know enough to be dangerous, but touch it so seldom that I’m no expert.
Hope this helps others out there as this is a pretty common report and a lot of customer ask for it.
~david
Do you know how to make a summary report for not ready reason codes?
I’m trying to replicate what you have here, but was wondering what version of CUIC you are using here.
Thanks in advance,
Mike
Hi Mike, at the time of this posting I was using 8.5.x, I can’t remember the exact x version, but it was 8.5. Are you having some issues getting this working?
I’m confused. How hard should it be to get a basic report on reason code. Everyone needs this report. I don’t understand the code above. It looks like a lot of work. Is it any easier with cuic premium? I have been told that you can export the reports from CCE’s Cuic software, is this true?
Yes, much easier with Premium, yes you can export the reports and import them into standard. What version are you running I might be able to help you out.
does anyone have the sql code for ms access 2007 agent state detail….the above is for reat time…
What is the problem you’re facing?
I have a odbc connection and I am looking for the sql code for the premium package…..do you have it?
what is the problem you’re facing? answer
I have an odbc connection and I am backing ending the data table, want to only refresh for current data….do you no the sql code for not ready reason codes for premium package?
Yes, that’s what is included in the above post. The SQL is posted in the story.
will i need the entire sql code posted in story? are will i have to extract the parts i need?
will this work?
SELECT
Informix_agentstatedetail.eventdatetime,
Informix_agentstatedetail.reasoncode,
Case ([Informix_agentstatedetail].[reasoncode]),
WHEN ‘1’ THEN ‘Not Ready Default’
WHEN ‘2’ THEN ‘Break’
WHEN ‘3’ THEN ‘Consult Tier’
WHEN ‘4’ THEN ‘Emails’
WHEN ‘5’ THEN ‘GRH’
WHEN ‘6’ THEN ‘Lunch’
WHEN ‘7’ THEN ‘Meeting’
WHEN ‘8’ THEN ‘Not Ready’
WHEN ‘9’ THEN ‘Personal’
WHEN ’10’ THEN ‘Restroom’
WHEN ’11’ THEN ‘Supervisor Coaching’
WHEN ’12’ THEN ‘Testing’
WHEN ’13’ THEN ‘Training’
WHEN ’14’ THEN ‘Trouble Reports’
WHEN ’15’ THEN ‘System Trouble’
WHEN ’16’ THEN ‘Walk-in’
WHEN ’17’ THEN ‘Workstation Maintenance’
WHEN ’18’ THEN ‘Wrap-up’
WHEN ’19’ THEN ‘Projects’
ELSE ‘unknown’
END AS AgentState,
Informix_resource.FirstName AS FirstName,
Informix_resource.LastName AS LastName,
Informix_resource.resourcename AS Agent Name
FROM
agentstatedetail INNER JOIN
agentid ON agentstatedetail.agentid = agentstatedetail.agentid INNER JOIN
Profileid ON agentstatedetail.profileid = agentstatedetail.profileid
ORDER BY
resourcename.Agent Name
in access 2007