cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
101
Views
0
Helpful
0
Comments
cdnadmin
Level 11
Level 11
This document was generated from CDN thread

Created by: Sudarshan Chandan on 01-12-2010 11:43:38 AM
Hi,
      I have a case where i have to disconnect the call if the receiving agent does not answer the call instead of re-routing to the queue. To describe it in detail.
1) User calls agent. Agent and User are on call
2) Agent issues a MakeConsultCall to expert-agent
3) Expert does not answer the call since he/she is away from desk.
4) By the ACD configuration, the Expert-Agent's status is changed to "Not Ready" and the call is routed to the Queue or the next available agent in the queue.
5) The problem is that, whether an agent answers the call or not, The OnCallEstablished event is received on the originating agent's desk. There is no way to determine if the expert-agent answered or not.
 
In order to resolve this problem, i tried sending the following parameters while issuing the MakeConsultCall
1) POSTROUTE - false: Per the API guide, this is to enable or disable the post routing capabilities of the ICM to determine the new call destination.
 
2) CALLPLACEMENTTYPE - 5 (or CPT_DIRECT_AGENT): This specifies that the call is placed directly to the agent.
 
3) CALLOPTION - 1 (or COPT_CALLING_AGENT_ONLINE): This ensures that the cal is attempted only if the called agent is online.
 
None of these parameters helped me disconnect the consultcall if the expert did not answer. I tried sending them individually as well as together. What am doing wrong here? Any ideas?

Subject: RE: Killing an unanswered call before rerouting to queue
Replied by: Shannon McCoy on 01-12-2010 01:37:27 PM
I had a similar problem counting the times that a agent did not answer the call. From the opposite end of the dilema. There is an interesting thing that will tell you what happened. The Reason code  on an agent state event is set to 32767(-1 short int). Now this does not help the calling agent desktop as they do not see agent state events for other agents but what I did was create a web service that allowed me to message the calling desktop the result. There are various ways to do this such as a pub/sub web service or a central web service that monitors all events( monitor mode app ) and allows queries to be made by clients. Its a much more invloved way to solve the problem but I have used both very successfully. I could not find a way to solve several problems "out-of-box" so I simply made my own box   Hope this helps some. Below is a snippet from my code where I am processing the problem you described.
 
 
if ((AgentState)agentState == AgentState.eNotReady &&
   a_Args.GetValueInt(Enum_CtiOs.CTIOS_EVENTREASONCODE, out reasonCode) &&
   reasonCode == 32767)
   {
   // Agent did not answer phone and state was changed to Not Ready.
   }

Subject: RE: New Message from Sudarshan Chandan in Computer Telephony Integration Ob
Replied by: David Lender on 02-12-2010 04:24:49 PM
Is the callEstablished received because the call gets answered by the next agent in the Queue?    Have you tried to configure your UCCE  for the Agent not to forward calls on no answer.

Subject: RE: New Message from Shannon McCoy in Computer Telephony Integration Object
Replied by: David Lender on 02-12-2010 04:26:11 PM
Interesting work around.

Subject: RE: Killing an unanswered call before rerouting to queue
Replied by: Sudarshan Chandan on 03-12-2010 06:56:22 AM
Shannon: Great suggestion. It works fine. Thanks.
 
David: Callestablished is fired. I will not be able to change the configuration to drop the call if unanswered, since that is how they need it to be in the production setup. I was wondering if there was any parameters that i can pass to bypass this configuration. I tried three of them that i have mentioned in the previous post. Not sure if there is anything else that i can try. Still looking...
 
In continuation of my question, is it possible to get a list of all the agents on the conference if i am trying a singlestepconference instead. I know that singlestepconference is not a suggested way, but i have no choice. I have to implement that too. After a conference is established, is there a way to get a list of all the folks on the conference?

Subject: RE: Killing an unanswered call before rerouting to queue
Replied by: Shannon McCoy on 03-12-2010 10:43:01 AM
Shannon: Great suggestion. It works fine. Thanks.
 
David: Callestablished is fired. I will not be able to change the configuration to drop the call if unanswered, since that is how they need it to be in the production setup. I was wondering if there was any parameters that i can pass to bypass this configuration. I tried three of them that i have mentioned in the previous post. Not sure if there is anything else that i can try. Still looking...
 
In continuation of my question, is it possible to get a list of all the agents on the conference if i am trying a singlestepconference instead. I know that singlestepconference is not a suggested way, but i have no choice. I have to implement that too. After a conference is established, is there a way to get a list of all the folks on the conference?




 
The eCallConferenceEvent has a Arguments Array of ConnectedParty that lists everyone on the call. That should do the trick for you. The previous web service/monitor mode app works well for this too.
 
Here is an example of the event.
 
MessageID:eCallConferencedEvent ICMEnterpriseUniqueID:icm.149463.112 DeviceUniqueObjectID:device.5000.4000 ConnectedParty[1]: (ConnectedPartyCallID:16779634 ConnectedPartyDeviceIDType:1 ConnectedPartyDeviceID:4004) ConnectedParty[2]: (ConnectedPartyCallID:16779634 ConnectedPartyDeviceIDType:0 ConnectedPartyDeviceID:4000) ConnectedParty[3]: (ConnectedPartyCallID:16779634 ConnectedPartyDeviceIDType:0 ConnectedPartyDeviceID:4001))
Got Event eCallEndEvent - (CallType:12 DeviceID:4000 UniqueObjectID:call.5000.16779635.4000 CallStatus:eCallConnectionConnect MessageID:eCallEndEvent ICMEnterpriseUniqueID:icm.149463.112 DeviceUniqueObjectID:device.5000.4000)
 
edited to remove the emoticons embedded in the syntax

Subject: RE: Killing an unanswered call before rerouting to queue
Replied by: Sudarshan Chandan on 03-12-2010 11:21:55 AM
That doesn't work because this event is fired well before the agent-2 answers the call and hence will always have all 3 parties (user, agent1, agent2). I am looking for a way to remove only agent2 from the conference if he doesn't answer. But because of a script, the call is routed to the queue. How can i remove only one person from a conference call programmatically? In my case the code at Agent1's end should remove Agent 2 from the call.

Subject: RE: Killing an unanswered call before rerouting to queue
Replied by: Shannon McCoy on 03-12-2010 01:14:10 PM
That doesn't work because this event is fired well before the agent-2 answers the call and hence will always have all 3 parties (user, agent1, agent2). I am looking for a way to remove only agent2 from the conference if he doesn't answer. But because of a script, the call is routed to the queue. How can i remove only one person from a conference call programmatically? In my case the code at Agent1's end should remove Agent 2 from the call.

 
In that case I would use TAPI. CtiOs is not great at traditional CTI so sometimes you have to revert to Telephony specific APIs to do pbx specific stuff. I also had this problem trying to track private line usage by agents because CtiOs doesn't track private lines. So I used TAPI in a web service that connected all all the agent private lines and allowed me to do things that CtiOs just woudn't do. There is no reason TAPI cannot control the agent line just as easily and give you full control.
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:

Quick Links