« Back to CTIOS Toolkit Questions

Filtering call events in Monitor Mode using SkillGroupNumber

Combination View Flat View Tree View
Threads [ Previous | Next ]
Hi,
 
I need to monitor events related to the calls belonging to the particular skillgroups. Same goes for agentStateChange events. When I subscribe to the events using the following filter
 
MessageID =30, 37, 9, 10, 13, 16, 19, 21, 23, 24, 25;SkillGroupNumber=6001,6002,6003,8500
 
AgentStateChange events are received as expected but the call related events (Begin,Delivered, Established and Terminate) does not contain some of the information for example I extract the Call Object using CallObjectUniqueID, and use that object to retrieve RouterCallDay and RouterCallKey. When I do not use SkillGroupNumber then these values are retrieved as expected.
 
I am using the following code to retreive RouterCallDay
 
m_oCTIOSClient.GetCTISessionObject().GetObjectFromObjectID(strCallUOID, out oCtiOsObject);
                if (oCtiOsObject != null)
                {
                    Call oCallFromSession = (Call)oCtiOsObject;
                    if (oCallFromSession.IsValid(Enum_CtiOs.CTIOS_ROUTERCALLKEYDAY))
                    {
                        int iVal;
                        if (oCallFromSession.GetValueInt(Enum_CtiOs.CTIOS_ROUTERCALLKEYDAY, out iVal))
                        {
                            strUCID = iVal.ToString();
                            strUCID += "_";
                            if (oCallFromSession.IsValid(Enum_CtiOs.CTIOS_ROUTERCALLKEYCALLID))
                            {
                                if (oCallFromSession.GetValueInt(Enum_CtiOs.CTIOS_ROUTERCALLKEYCALLID, out iVal))
                                {
                                    strUCID += iVal.ToString();
                                    bValidUCID = true;
                                }
                            }
                        }
                    }
                }
 
 

Also CallClear and CallEnd do not contain any SkillGroupNumber so if I apply Skill based filter I stop getting these two events.
 
Is there any possibility where I can specify different filter for different callbacks (Agents, Calls) using the same session in monitor mode?

Please open a SR and provide a set of logs showing your filtered events.
You do realize that the ; is an AND so you will get only those events
that contain that skillgroupnumber. Skillgroupnumber is optional so it
is possible the events you are looking for dont have one of the
skillgroupnumbers you listed so you will not receive any of those
events.

I see nothing wrong with your code to retreive the RouterCallDay. Are
you able to get the CallObjectUniqueID for these filtered events but
then there is nothing in the RouterCallDay?

It could be that you are not receiving the Begin, Delivered,
Established, (there is no Terminate Event, it is either CallCleared or
CallEnd.) because the skillgroupnumber is not in those events.

Only 1 filter can be set at a time. I think to accomplish what you
want you should set filter to receive all events you are interested in
and then apply your own logic to chec for skillgroup in the events that
have them and track then which call objectid events you want.

Hi David,
 
Originally I was doing as you mentioned, subscribing to all and filtering events based on my own logic. I thought I might have to do deal with lower traffic for events if filter at subscription time could that for me. As you mentioned events which do not contain SkillGroupNumber will be filtered out for example End/Clear. So I am reverting back to the original code.
 
But it could have been really usefull if instead of filtering using ';' which always act as AND we could do 'OR' between different type of filters(not the values which are alwasy ORed) within the same session.

David Lender (467)
Shannon McCoy (91)
Arthur Shats (57)
Christopher Nagel (47)
GEOFFREY THOMPSON (38)