cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
2439
Views
15
Helpful
5
Replies

Finesse Conference Call API integration

Hi,

 

I am integrating Cisco Finesse with 3rd party telephony server. As per the docs, I found that finesse doesn't support the blind conference through API or Agent desktop. How can we implement Conference functionality through API or Agent desktop?

I didn't find any proper details for Conference API in the Finesse API guide. it will be really appreciated if someone can provide me the steps/guide. I have gone through the below articles.

 

https://developer.cisco.com/docs/finesse/#!dialogtake-action-on-participant/dialogtake-action-on-participant

https://developer.cisco.com/docs/finesse/#!dialogmake-a-consult-call-request/dialogmake-a-consult-call-request

 

As per the first URL (dialog take action on the participant), i have implemented the CONFERENCE request, let me explain the scenario.

- Agent1 received a call from Agent2
- Agent3 is available with READY status

Agent1 select Agent3 and press conference button

- Request sent and response received as 202 (successful) but call not initiated to Agent3, status is still READY for Agent3 

Below is the Request and Response from logs 3rd application logs:

DEBUG - CallConference Dlg , okButton_actionPerformed()
DEBUG - CallConference Class , okButton_actionPerformed() , agent and Blind radio Button selected
DEBUG - CallConference Dlg , ConferenceCall() , targetAgentextension = 1008 Dialog id = 35959474 agentExtension = 1001
DEBUG - Before Sending Request
DEBUG - Open connection to fin-xxxx.icm:80
network: Connecting http://fin-xxxx.icm:80/ with proxy=DIRECT
DEBUG - >> "PUT /finesse/api/Dialog/35959474 HTTP/1.1[\r][\n]"
DEBUG - Adding Host request header
DEBUG - >> "Authorization: Basic MTIzMDAwOmNpc2NvMTIz[\r][\n]"
DEBUG - >> "Content-Type: application/xml[\r][\n]"
DEBUG - >> "User-Agent: Jakarta Commons-HttpClient/3.1[\r][\n]"
DEBUG - >> "Host: fin-pub-a-50.berlin.icm[\r][\n]"
DEBUG - >> "Content-Length: 134[\r][\n]"
DEBUG - >> "[\r][\n]"
DEBUG - >> "<Dialog><requestedAction>CONFERENCE</requestedAction><toAddress>1008</toAddress><targetMediaAddress>1001</targetMediaAddress></Dialog>"
DEBUG - Request body sent
DEBUG - << "HTTP/1.1 202 Accepted[\r][\n]"
DEBUG - << "HTTP/1.1 202 Accepted[\r][\n]"
DEBUG - << "Cache-Control: no-cache, no-store[\r][\n]"
DEBUG - << "Expires: Wed, 31 Dec 1969 19:00:00 EST[\r][\n]"
DEBUG - << "X-Content-Type-Options: nosniff[\r][\n]"
DEBUG - << "requestId: [\r][\n]"
DEBUG - << "Content-Type: application/xml[\r][\n]"
DEBUG - << "Content-Length: 0[\r][\n]"
DEBUG - << "Date: Wed, 14 Jul 2021 19:32:13 GMT[\r][\n]"
DEBUG - << "Server: [\r][\n]"
DEBUG - << "[\r][\n]"
DEBUG - Buffering response body
DEBUG - Resorting to protocol version default close connection policy
DEBUG - Should NOT close connection, using HTTP/1.1
DEBUG - Releasing connection back to the connection manager.
DEBUG - Default charset used: ISO-8859-1
DEBUG - URL = http://fin-xxxx.icm/finesse/api/Dialog/35959474
DEBUG - xml body = <Dialog><requestedAction>CONFERENCE</requestedAction><toAddress>1008</toAddress><targetMediaAddress>1001</targetMediaAddress></Dialog>
DEBUG - Response Code===> 202
DEBUG - Response body===>
DEBUG - 202 : Call Conference
DEBUG - CallConference Dlg , ConferenceCall() , result = 202

 

 

Regards,

Arslan

1 Accepted Solution

Accepted Solutions

dekwan
Cisco Employee
Cisco Employee

Hi @MuhammadArslan76714 ,

 

In order to perform a conference, you must first create a consult from Agent1 to Agent3, THEN complete the conference from the original call leg.

 

To create a consult, you need to use this API using the original call's id: https://developer.cisco.com/docs/finesse/#!dialogmake-a-consult-call-request

 

After the consult is completed, you need to use this API with a requestAction of CONFERENCE to complete the conference from the original call's id: https://developer.cisco.com/docs/finesse/#!dialogtake-action-on-participant 

 

Finesse REST APIs are asynchronous, so you will receive a HTTP response code of 202 whether or not the action is successful or failed. These APIs rely on the Finesse Notification Service to send events to determine whether or not the action was successful or failed. Since these APIs are asynchronous, you need to wait for the notification before proceeding to the next API. So, in this case, you need to confirm that the consult was successful before making the conference REST API request.

 

As far as doing a blind conference, there isn't a blind conference feature. I can't remember off the top of my head if you are able to complete the conference while the consult leg is still ringing. You can try that out by seeing if the original leg's allowable action lists CONFERENCE when the consult leg is ringing.

 

Thanx,

Denise

View solution in original post

5 Replies 5

dekwan
Cisco Employee
Cisco Employee

Hi @MuhammadArslan76714 ,

 

In order to perform a conference, you must first create a consult from Agent1 to Agent3, THEN complete the conference from the original call leg.

 

To create a consult, you need to use this API using the original call's id: https://developer.cisco.com/docs/finesse/#!dialogmake-a-consult-call-request

 

After the consult is completed, you need to use this API with a requestAction of CONFERENCE to complete the conference from the original call's id: https://developer.cisco.com/docs/finesse/#!dialogtake-action-on-participant 

 

Finesse REST APIs are asynchronous, so you will receive a HTTP response code of 202 whether or not the action is successful or failed. These APIs rely on the Finesse Notification Service to send events to determine whether or not the action was successful or failed. Since these APIs are asynchronous, you need to wait for the notification before proceeding to the next API. So, in this case, you need to confirm that the consult was successful before making the conference REST API request.

 

As far as doing a blind conference, there isn't a blind conference feature. I can't remember off the top of my head if you are able to complete the conference while the consult leg is still ringing. You can try that out by seeing if the original leg's allowable action lists CONFERENCE when the consult leg is ringing.

 

Thanx,

Denise

Hello Denise,

 

Thanks a lot for the valuable feedback, let me implement and test it as you advised then I will make it an accepted solution, as now finesse is out of service. I have one concern regarding this:

 

if a consult call is completed, then Agent3 will become the participant and the status will be updated to TALKING, then what will be the purpose to make a conference call, as Agent3 is already with us in the call. 

 

Secondly, I am also trying to make an outbound call from my application, can you please provide some guide/links related to this.

 

a). do i need to use same MAKE_CALL API to initiate an outbound call?

b). Do I have to set the call variables while making a call or after the call is answered? 

c) if after the call is answered then should I do it through UPDATE_CALL_DATA?

 

Thanks,

Arslan

 

Hi,

 


if a consult call is completed, then Agent3 will become the participant and the status will be updated to TALKING, then what will be the purpose to make a conference call, as Agent3 is already with us in the call. 

Maybe our terminology is not on the same page. When I say Consult call is completed, that means that Agent3 answers the call and the call is in ACTIVE. The consult is a separate call leg from the original call.

 

a). do i need to use same MAKE_CALL API to initiate an outbound call?

 Not sure what you mean by "same", but you do need to use the Make a call API: https://developer.cisco.com/docs/finesse/#!dialogcreate-a-new-dialog-make-a-call 

 


b). Do I have to set the call variables while making a call or after the call is answered? 


It depends on your deployment type, if it is CCE or CCX. Per the doc, you can only set call variables when making the call for CCE deployments. For a CCE deployment, it is up to you when you want to set it. For a CCX deployment, you do not have a choice but to set it until after the call is answered.

 


c) if after the call is answered then should I do it through UPDATE_CALL_DATA?

Yes, you need to use that API: https://developer.cisco.com/docs/finesse/#!dialogupdate-call-variable-data

 

Thanx,

Denise

 

Hello Denise,

 

Thanks for the feedback, I have successfully implemented the conference part, now I have one concern regarding this.

 

Let me explain the scenario:

 

"Three agents are in a CONFERENCE call, I want to add one more agent to call.

Agent1 will make a consult call to Agent4, he accepted the consultative call."

 

Now, do I need to add the Agnet4 in the conference call or do I need to add Agent2 and Agent3 in the current call leg one by one?

 

Regards,

Muhammad Arslan

 

Hi,

 

After your successful conference, you have agents 1, 2, 3 on the same call (we will call this call#1). If you want agent1 to add agent 4 to call#1, agent1 will request a consult from call#1 (that will be the dialog Id to use). Then, this will create a call#2 between agent1 and agent4. Agent4 answers. Now, Agent1 will request a conference using call#1's dialog Id. This will combine the call to be Agent1, 2, 3, 4.

 

Basically it is the same process.

 

Thanx,

Denise