We now have a solution for this which was provided by Genesys Techs. We now have CCPulse showing realtime the NotReady Reason Code and the time in the State. It does reset and starts counting when the NotReady Reason is changed…
Here’s what we had to do…
CCPulseStatServer Options/Filters Section
Setup Filters for your Available Reason Codes… We have 8 - so ours are as follows:
Reason_1=ExtensionReasonCode=1
Reason_2=ExtensionReasonCode=2
Reason_3=ExtensionReasonCode=3
Reason_4=ExtensionReasonCode=4
Reason_5=ExtensionReasonCode=5
Reason_6=ExtensionReasonCode=6
Reason_7=ExtensionReasonCode=7
Reason_8=ExtensionReasonCode=8
CCPulse Template - Section Called NotReadyTimes
with the following
CurrentNotReadyTime1 with filter applied the NotReadyReason (Filters)
should have 8 stats created when done one with each filter for the reason code.
Create Formula with the following:
result.Text = CalculateReason();
function CalculateReason()
{
if (ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 1”)>0)
{
var d = ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 1”);
var h = Math.floor(d / 3600);
var m = Math.floor(d % 3600 / 60);
var s = Math.floor(d % 3600 % 60);
var f = ((h > 0 ? h + “:” : “”) + (m > 0 ? (h > 0 && m < 10 ? “0” : “”) + m + “:” : “0:”) + (s < 10 ? “0” : “”) + s);
return “Training (” + f + “)”;
}
if (ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 2”)>0)
{
var d = ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 2”)
var h = Math.floor(d / 3600);
var m = Math.floor(d % 3600 / 60);
var s = Math.floor(d % 3600 % 60);
var f = ((h > 0 ? h + “:” : “”) + (m > 0 ? (h > 0 && m < 10 ? “0” : “”) + m + “:” : “0:”) + (s < 10 ? “0” : “”) + s);
return “Meeting (” + f + “)”;
}
if (ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 3”)>0)
{
var d = ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 3”)
var h = Math.floor(d / 3600);
var m = Math.floor(d % 3600 / 60);
var s = Math.floor(d % 3600 % 60);
var f = ((h > 0 ? h + “:” : “”) + (m > 0 ? (h > 0 && m < 10 ? “0” : “”) + m + “:” : “0:”) + (s < 10 ? “0” : “”) + s);
return “Coaching (” + f + “)”;
}
if (ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 4”)>0)
{
var d = ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 4”)
var h = Math.floor(d / 3600);
var m = Math.floor(d % 3600 / 60);
var s = Math.floor(d % 3600 % 60);
var f = ((h > 0 ? h + “:” : “”) + (m > 0 ? (h > 0 && m < 10 ? “0” : “”) + m + “:” : “0:”) + (s < 10 ? “0” : “”) + s);
return “Lunch (” + f + “)”;
}
if (ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 5”)>0)
{
var d = ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 5”)
var h = Math.floor(d / 3600);
var m = Math.floor(d % 3600 / 60);
var s = Math.floor(d % 3600 % 60);
var f = ((h > 0 ? h + “:” : “”) + (m > 0 ? (h > 0 && m < 10 ? “0” : “”) + m + “:” : “0:”) + (s < 10 ? “0” : “”) + s);
return “Break (” + f + “)”;
}
if (ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 6”)>0)
{
var d = ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 6”)
var h = Math.floor(d / 3600);
var m = Math.floor(d % 3600 / 60);
var s = Math.floor(d % 3600 % 60);
var f = ((h > 0 ? h + “:” : “”) + (m > 0 ? (h > 0 && m < 10 ? “0” : “”) + m + “:” : “0:”) + (s < 10 ? “0” : “”) + s);
return “Down Time (” + f + “)”;
}
if (ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 7”)>0)
{
var d = ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 7”)
var h = Math.floor(d / 3600);
var m = Math.floor(d % 3600 / 60);
var s = Math.floor(d % 3600 % 60);
var f = ((h > 0 ? h + “:” : “”) + (m > 0 ? (h > 0 && m < 10 ? “0” : “”) + m + “:” : “0:”) + (s < 10 ? “0” : “”) + s);
return “Manual Work (” + f + “)”;
}
if (ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 8”)>0)
{
var d = ccpulse.group(“NotReadyTimes”).statistic(“CurrentNotReadyTime 8”)
var h = Math.floor(d / 3600);
var m = Math.floor(d % 3600 / 60);
var s = Math.floor(d % 3600 % 60);
var f = ((h > 0 ? h + “:” : “”) + (m > 0 ? (h > 0 && m < 10 ? “0” : “”) + m + “:” : “0:”) + (s < 10 ? “0” : “”) + s);
return “Special (” + f + “)”;
}
return “N/A”;
}
Then just hide the colums in the view that have all the filters and you will be left with the final NotReadyReason. Which will display the Reason & the time in that reason.
Hope this helps…