cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
2893
Views
0
Helpful
5
Replies

How to get client IP address and port number while filtering AgentID?

Gozde Kumasoglu
Level 4
Level 4

Hi,

We need to get Client IP address and Client port number  from CTIOS server for only specific agents to use in a web application.

Our CTIOS version is 8.0.3 and ICM version is 8.5.4.

We used monitoring mode and a filter includes RTPStart and RTPStop events and an AgentID we want to observe like below:

private void ProcessOnConnectionWithConnectionPending(Arguments args) {

    const string methodName = "ProcessOnConnectionWithConnectionPending";

m_tracer.Trace(Logger.TRACE_MASK_EVT_REQ_HIGH, methodName, "Entering method");

    // Create a monitor mode connection that filters on AgentStateEvent and

    // QueryAgentStateEvent.

    Arguments setMsgFilterArgs = new Arguments();

    string    filterString     = string.Format("MessageID = {0}, {1}, {2}, {3} ; AGENTID = 3024", (int)EventID.eAgentStateEvent, (int)EventID.eQueryAgentStateConf, (int)EventID.eRTPStartedEvent, (int)EventID.eRTPStoppedEvent);

   

setMsgFilterArgs.SetValue(Enum_CtiOs.CTIOS_FILTER, filterString);

setMsgFilterArgs.SetValue(Enum_CtiOs.CTIOS_MONITORSESSIONSNAPSHOTMODE, 1);

    if (null != m_ctiosSession)

    {

m_ctiosSession.SetMessageFilter(setMsgFilterArgs);

        m_state = CTIObjectState.Connected;

    }

    else

    {

        // Irrecoverable programming error

        string msg = string.Format("ERROR: Null session reference!");

m_tracer.Trace(Logger.TRACE_MASK_WARNING, methodName, msg);

    }

}

But, we got the following lines, although we are able to get the RTPStart and RTPStop events without using any filter.


CtiOsSession(34948909).CCtiOsSession::OnEvent, No CTIOS Objects are capable of processing Event( eRTPStartedEvent ) CtiOsSession(34948909).CCtiOsSession::OnEvent, No CTIOS Objects are capable of processing Event( eRTPStoppedEvent )

How can we get Client IP address and Client port number while filtering AgentIDs?

5 Replies 5

hemajosh
Level 4
Level 4

The Error message “No CTIOS Objects are capable of processing Event( eRTPStartedEvent / eRTPStopEvent ) “ comes whenever the CTIOS target object with respect to agent , call and skill objects comes as NULL.

Client reports this error with CIL Error code  E_CTIOS_TARGET_ OBJECT_ NOT_FOUND ( -109 ). You can locate the description within the java cil API documentation or CTIOS developer guide ( Link shared in the end ).

1.png

So in your case also you need to verify whether you are getting a valid target objects .

Now regarding the IP address and Port info of the client, you can get these values from the arguments array which comes with RTPStart and Stop events only.

Here are one reference screenshot for you for client port. More details you can get from the  CTIOS developer guide shared in the end . please refer it for complete details.

2.png

Reference:  https://www.cisco.com/c/dam/en/us/td/docs/voice_ip_comm/cust_contact/contact_center/ctios/ctios8_5/developer/guide/cti85devg.pdf

Hope it helps

Regards

Hemant

Hi Hemant,

Thank you for your detailed answer. We are already able to get events contains IP and port info while filtering only events (RTPStart and RTPStop). The problem is when we add AgentIDs to the filter (so have RTP events +AgentIDs in the filter), we can't get any event. Do you know another way to get RTP events while filtering AgentIDs?

With monitor mode application , if you are trying to perform agent and call control , then it is not supported.

But If you want a monitor mode application to receive notification of the agentid of the call that was answered by an agent mode application, for UCCE you may be able to use the RTP Start event which can contain the
agentid.

On CTIOS side, we will unpack all the parameters for the RTPStart and Stop events which also includes the agentID .

I think adding AgentID separately with RTP event is not required.

As per the parameter list for RTPStart/Stop events, i can see AgentID/instrument as optional fields.

3.png

Have you tried using those events without adding them in the filters ?

We have a project with a 3rd party, they make some analysis on our call center calls for only some specific agents of our company. The production CTI server that we have provides data for too many agents, so we should filter the CTI data for only those specific AgentIDs for security purpose and also in terms of the performance of the 3rd party application. But at the same time, client IP address and port number are needed for the 3rd party application. Thats's why we are looking for such a filter. If anyone knows a way to achive what we need, i will be glad.

Thanks.

OnCallRTPStartedEvent is part of ISilentMonitorEvents interface, and your code looks like twisting of IAgentEvents-related filter.

Have you added listeners for ISilentMonitorEvents or IGenericEvents interfaces?

Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: