PureConnect

 View Only
Discussion Thread View
  • 1.  IceLib C# performance issue with retrieving workgroup statistics

    Posted 10-06-2022 15:41

    All,

    We're running 2021 R4 Patch 20 and we are looking to build an IceLib application that polls for ACD Workgroup data (very similar to how Int. Marquee works today). We are basing our code off the example found at https://help.genesys.com/developer/cic/docs/icelib/webhelp/html/37E33069-65FE-4538-96C7-9614879FE5FE.htm#E2

    What we're noticing is our query is taking a very long time to complete, like 4 to 5 minutes to get one set of data back. Have any of you attempted to listen/monitor for workgroup statistics via IceLib and been able to get back workgroup results within seconds?

    Fingers crossed that someone here has went down this path before and has some suggestions. I can directly engage our developer if you need any additional information.

    As an example, here is one set of code we're using with some sample statistics: (I've only included a small snippet of some of the code and can provide the entire section of code if necessary).

    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;

    using ININ.IceLib.Connection;
    using ININ.IceLib.Statistics;

    using MarqueeData;
    using MarqueeData.Workgroup;

    namespace IceLibExtension
    {
    public class AdvancedWorkgroupDataManager
    {
    Session session;
    public AdvancedWorkgroupDataManager(String host)
    {
    IceConnection iceConnection = new IceConnection();
    session = iceConnection.GetSession(host);

    switch (watchedKey.Identifier.Uri)

                                    {

                                        case "ININ.Workgroup:NumberAvailableForACDInteractions":

                                            workgroupStats_Workgroup.Workgroup_NumberAvailableForACDInteractions = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:InteractionsWaiting":

                                            workgroupStats_Workgroup.Workgroup_InteractionsWaiting = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:OnInboundACDInteractions":

                                            workgroupStats_Workgroup.Workgroup_OnInboundACDInteractions = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:InteractionsConnected":

                                            workgroupStats_Workgroup.Workgroup_InteractionsConnected = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:TotalAgents":

                                            workgroupStats_Workgroup.Workgroup_TotalAgents = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:AgentsAvailable":

                                            workgroupStats_Workgroup.Workgroup_AgentsAvailable = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:LongestAvailable":

                                            workgroupStats_Workgroup.Workgroup_LongestAvailable = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:LongestOutboundACDInteraction":

                                            workgroupStats_Workgroup.Workgroup_LongestOutboundACDInteraction = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:AgentsLoggedIn":

                                            workgroupStats_Workgroup.Workgroup_AgentsLoggedIn = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:AgentsLoggedInAndActivated":

                                            workgroupStats_Workgroup.Workgroup_AgentsLoggedInAndActivated = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:OnOutboundACDInteractions":

                                            workgroupStats_Workgroup.Workgroup_OnOutboundACDInteractions = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:OnOutboundACW":

                                            workgroupStats_Workgroup.Workgroup_OnOutboundACW = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:LongestWaitTime":

                                            workgroupStats_Workgroup.Workgroup_LongestWaitTime = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:LoggedIn":

                                            workgroupStats_Workgroup.Workgroup_LoggedIn = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:LongestInboundACDInteraction":

                                            workgroupStats_Workgroup.Workgroup_LongestInboundACDInteraction = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:LongestNonACDInteraction":

                                            workgroupStats_Workgroup.Workgroup_LongestNonACDInteraction = statValue.GetDisplayString();

                                            break;

                                        case "ININ.Workgroup:LongestTalkTime":

                                            workgroupStats_Workgroup.Workgroup_LongestTalkTime = statValue.GetDisplayString();

                                            break;

                                    }


    #ArchitectureandDesign
    #Reporting/Analytics

    ------------------------------
    Thanks,
    Shane
    ------------------------------


  • 2.  RE: IceLib C# performance issue with retrieving workgroup statistics

    Posted 29 days ago
    Hi all,

    Reaching back out again, is anyone using IceLib to retrieve Workgroup statistics such as those available in Marquee? We're attempting to use a Windows service to do this.

    We're also using C# and have gotten it down to taking roughly 90 seconds to retrieve the workgroups statistics we're looking for, but we're hoping to get that under 30 seconds to be more real-time.

    Interestingly enough the Agent and Service Level statistics both seem much faster and taking < 30 seconds for the same number of workgroups.

    As mentioned previously, we're hoping someone has ventured down this IceLib / Windows service path before and has some suggestions. We need to retire ININ Marquee very soon due to Silverlight.

    We greatly appreciate any input or suggestions you may have.

    Regards,
    Shane

    ------------------------------
    Shane
    ------------------------------



  • 3.  RE: IceLib C# performance issue with retrieving workgroup statistics

    Posted 29 days ago
    Hi Shane,

    I did develop an application for statistics monitoring and visualizing with IceLib, it was a window desktop app so similar. It works with in a few installations and I don't remember anybody reporting this kind of delays. The question is are these installations comparable.
    So how many workgroups are you monitoring?  Are you polling the values periodically or working on events?

    Cheers
    Łukasz

    ------------------------------
    Lukasz Zwierko
    DAMOVO POLSKA SP Z O O
    ------------------------------



  • 4.  RE: IceLib C# performance issue with retrieving workgroup statistics

    Posted 29 days ago
    I developed an application that runs as a service to do similar statistics collection and display. My application is based on watching the statistics you are interested in and updating an in memory dictionary. It is very responsive. We are monitoring about 100 workgroups and 800 agents. Contact me if you would like more information.

    ------------------------------
    Melinda Thompson
    Ameren Corporation
    ------------------------------



  • 5.  RE: IceLib C# performance issue with retrieving workgroup statistics

    Posted 29 days ago
    Thanks Lukasz and Melinda.

    Melinda, I reached out to you hoping to learn more about how your application works. Sounds like our goals are very similar. I spoke to our developer and she is very interested in learning how you did it.

    I also confirmed we're watching roughly 80+ workgroups and should be just shy of 800 agents. We are attempting to poll the values periodically.
    Fingers crossed there is potentially a more efficient way to do this.

    Thanks again.

    ------------------------------
    Shane
    ------------------------------