« Back to CTIOS Toolkit Questions

Obtain a list of agents currently on a conference

Combination View Flat View Tree View
Threads [ Previous | Next ]
Hi,
      Using CTI OS, i have been able to establish a conference between 3 parties. But now, after the conference is established, i need to know the list of parties in the current conference call. What call do i need to make in order to get the list of agents currently on the conference. I have a reference of the session, agent and call objects. I went thru the API guide and could not find anything helpful. Any help on this will be appreciated.
 
Thanks,
Sudarshan

Hi,
      Using CTI OS, i have been able to establish a conference between 3 parties. But now, after the conference is established, i need to know the list of parties in the current conference call. What call do i need to make in order to get the list of agents currently on the conference. I have a reference of the session, agent and call objects. I went thru the API guide and could not find anything helpful. Any help on this will be appreciated.
 
Thanks,
Sudarshan



You want to catch the eCallConferencedEvent and look in the Argument for the ConnectedParty Argument array.
 
A dump of the event and its args looks like this... ( I have bolded what you are looking for )
 
Got Default Event eCallConferencedEvent - (PeripheralID:5000 PeripheralType:17 ConnectionCallID:16779634 CallType:2 ServiceNumber:4294967295 ServiceID:4294967295 EventCause:65535 SkillGroupID:5003 PrimaryCallID:16779634 NumParties:3 SecondaryCallID:16779635 SkillGroupPriority:0 NumNamedVariables:0 NumNamedArrays:0 CampaignID:4294967295 QueryRuleID:4294967295 ANI:4004 DNIS:4000 DialedNumber:7000 PrimaryDeviceID:4000 SecondaryDeviceID:4000 ControllerDeviceID:4000 AddedPartyDeviceID:4001 RouterCallKeyDay:149463 RouterCallKeyCallID:112 EnablementMask:0xBF01A6 UniqueObjectID:call.5000.16779634.4001 CallStatus:eCallConnectionConnect MessageID:eCallConferencedEvent CTIClients: (CTIClient[1]: (CTIClientSignature:CTIOSServer CTIClientTimestamp:1269242092)) ICMEnterpriseUniqueID:icm.149463.112 DeviceUniqueObjectID:device.5000.4001 ConnectedParty[1]: (ConnectedPartyCallID:16779634 ConnectedPartyDeviceIDType:1 ConnectedPartyDeviceID:4004) ConnectedParty[2]: (ConnectedPartyCallID:16779634 ConnectedPartyDeviceIDType:0 ConnectedPartyDeviceID:4000) ConnectedParty[3]: (ConnectedPartyCallID:16779634 ConnectedPartyDeviceIDType:0 ConnectedPartyDeviceID:4001))
 
 
 

Thanks for your answer. It makes sense. But this event is fired a lot before the time when the 3rd party answers the call.
 
I am performing a SingleStepTransfer. All i want to know is when the call is answered at the agent's desk, is it answered by the agent or his/her voicemail. There did not appear to be any kind of difference i could make out if either the agent or his voicemail answered the call. I thought if i obtained the list of folks on the conference it might help me find out if it is the agent or the voicemailbox.
 
I tried using the Answeringmachine argument while placing the call so that the call will be disconnected if answered by an answering machine, but i guess (guess...) answering machine and voicemail are treated in different manner. None of the answering machine settings helped me in auto-disconnecting the call if answered by the voicemailbox.
 
I feel that there should be some method available within the toolkit, because on my phone when i am on a conference there is an option to view all the folks on that conference. Can we tap that method? What method is this?

Thanks for your answer. It makes sense. But this event is fired a lot before the time when the 3rd party answers the call.
 
I am performing a SingleStepTransfer. All i want to know is when the call is answered at the agent's desk, is it answered by the agent or his/her voicemail. There did not appear to be any kind of difference i could make out if either the agent or his voicemail answered the call. I thought if i obtained the list of folks on the conference it might help me find out if it is the agent or the voicemailbox.
 
I tried using the Answeringmachine argument while placing the call so that the call will be disconnected if answered by an answering machine, but i guess (guess...) answering machine and voicemail are treated in different manner. None of the answering machine settings helped me in auto-disconnecting the call if answered by the voicemailbox.
 
I feel that there should be some method available within the toolkit, because on my phone when i am on a conference there is an option to view all the folks on that conference. Can we tap that method? What method is this?

 
The problem is that you are looking for telephony features from the ICM when it is really the PBX that is handling this part of the call. As far as ICM is concerned it sends the call to the extension asked for. There are lots of telephony dependent features that are not seen by the ICM including non-agent phone events. I use TAPI to get these events and traffic as this is a Telephony specific API. You can do that either at the agent desktop with the TAPI driver or at a server with the same TAPI driver. Remember that the ICM only knows about agent extensions/devices it has no knowledge of the voicmail system( or any other non agent device for that matter ).

Earlier, while performing a conference  i did not realize that the conference receiving agent was in the Not-Ready state. The call would then be routed to voicemail by the PBX. I reqlized our application will never route calls to Not-Ready agents. So, we can forget this for now.
 
But while performing the same conference, if the receiving agent was in the Ready state and if he did not answer the call, the ACD does 2 things, One, change the agent's state to Not Ready and two, auto-routes the call to the queue. I am performing conference using the instrument ID.
 
Can i instruct the ACD to not route the call to the queue but instead issue a call failure... I tried several options while making the call such as,
 
 
//args.SetValue(Enum_CtiOs.CTIOS_POSTROUTE, false);
//args.SetValue(Enum_CtiOs.CTIOS_CALLPLACEMENTTYPE, "5");
//args.SetValue(Enum_CtiOs.CTIOS_CALLOPTION, 1);
 
None of these or all of these together make any difference at all. Hope someone has an answer.
 
 
 

Which ACD are you using?

David Lender (474)
Shannon McCoy (91)
Arthur Shats (57)
Christopher Nagel (47)
GEOFFREY THOMPSON (40)