cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
13471
Views
3
Helpful
79
Replies

Web Services with Finesse 10.5 and UCCE Packaged

Hi, We installed a new Packaged UCCE 10.5 for 20 agents, We need communicate the UCCE with third party through Web Services, it's our first installation and I don't know very well the solution when integrate Web Services.

In the implementation I have Finesse 10.5 for both sides.

Can you help me with any experience or documentation?

I hope your comments.

79 Replies 79

Hi Denise,

We have been looking at the PCCE APIs documentation, and some other documents from PCCE in order to understand better… and we have seen examples of the APIs, for example the Agent API:

https://<server>/unifiedconfig/config/agent

The thing here is that we don't really know in which server are PCCE APIs installed...

The implementation of our Packaged CCE 10.5 includes the following Servers:

  • Call Server
  • Data Server
  • Finesse
  • CUIC
  • CVP
  • CVP OAMP.

Do you know in which one of the previous are PCCE APIs installed?

Note: I have asked this question in the PCCE Forum as well, along with a first question asking about how to use PCCE APIs, but until now there is no response.

Thanks,

Mario

Hi,

Unfortunately I am not familiar with the PCCE installation myself, so I would not be able to answer your question. The PCCE forum is the right place to get the answer so hopefully they will answer you soon.

Thanx,

Denise

Hi Denise, for integration with Web Services and Script for UCCE, In wich is most recommended will do the scripts, call studio or script editor?

Regards....

Hi,

I would recommend using the script editor.

Thanx,

Denise

Hi Denise, thanks for your answer.

In the script editor, do you know activate DB Loopkup object? or only available in UCCE because in Package CCE it's not available.

Regards.....

Hi,

To be completely honest, I'm not that familiar with the scripting part of UCCE/PCCE. I myself use the Script Editor, but I only need to do basic scripting. I think you will get a better answer if you posted it to the PCCE forum.

Thanx,

Denise

Thanks so much Denise.

Regards

The PCCE forum is the optimal guidance of course but you are correct in your previous assumption as the DB Lookup Node is not included in the ISE Palette in PCCE.  The CVP Studio development environment provides Elements for integration with external Web Services such as WSDL/SOAP (Web Element), and  the REST Client Element for interfacing with external RESTful APIs.

Hope this helps.

Kevin

Hi Denise:

We continue to work with Finesse APIs following your advices, which have been really helpful. Right now there is a better understanding about Finesse, and we have been able to do some tests using the APIs.

There are some things in which we still need your help though. For example, there are some events that, when they occur, must provoke the call of third party web services. These events are:

  • New call ringing in an extension. When a new call rings, we must send the call information to the third party application.
  • Ending of a call that wasn't answered. This is when a call is terminated without being answered by an agent. We need to know, among other things, how much time the call kept ringing before it was terminated.
  • Call entering a queue.

We need to know if there is a way in which we can detect when these events happen with Finesse, so we can call the third party Web Services needed at that moment.

Thanks in advance,

Mario

Hi Mario,

That is good to hear that you have a better understanding of Finesse. Soon you will be an expert!

For your questions:

  • New call ringing in an extension. When a new call rings, we must send the call information to the third party application.

When a new call comes in, an event will come to the /finesse/api/User/<id>/Dialogs node, with the <event> tag value of POST (HTTP verb POST = create/add). Whenever there is a dialog event that is a POST, it means that it is a new call.

  • Ending of a call that wasn't answered. This is when a call is terminated without being answered by an agent. We need to know, among other things, how much time the call kept ringing before it was terminated.

When a call gets terminated, an event will come to the /finesse/api/User/<id>/Dialogs node, with the <event> tag value of DELETE. In this same event, the <state> tag value would be ALERTING. This means that the call ended and it was still ringing. If you want to be specific to routed calls, you need to check the <callType> tag value. For a list of all possible callType's, take a look at the Dialog API Parameters section of the Developer Guide.


For how much time the call kept ringing before it was terminated, when you get the DELETE event, the agent's state for that call should be DROPPED. You can take delta of the agent's startTime and stateChangeTime to calculate the time the call was kept ringing for this particular agent. For example:

            <participants>

               <Participant>

                  <actions />

                  <mediaAddress>1001001</mediaAddress>

                  <mediaAddressType>AGENT_DEVICE</mediaAddressType>

                  <startTime>2016-05-27T20:06:42.719Z</startTime>

                  <state>DROPPED</state>

                  <stateCause />

                  <stateChangeTime>2016-05-27T20:07:38.240Z</stateChangeTime>

               </Participant>

            </participants>

  • Call entering a queue.

Finesse does not have an API or event for this.

Thanx,

Denise

Hi Denise,

Thanks for you answer. It will help us to filter the data that will be needed.

However, I believe my main question was not answered. Maybe I wasn't clear. You explained the characteristics of where and how data goes to Finesse, and that is helpful, but what we first would like to know is: How do we detect when those events happen? In other words, how do we know when to make a consult of that information?

For example, you explained that "When a new call comes in, an event will come to the /finesse/api/User/<id>/Dialogs node". The question here is, how can we know that event came to the Dialogs node? Do we need to do constant consults to the node in order to identify when a new call entered?

I believe (although I'm not completely sure) that our question might be related to the Real-Time Events topic. In Finesse definition about this, it is established that: "Client applications can communicate with the Cisco Finesse Notification Service through BOSH over HTTPS, using the binding URI https://<FQDN>:7443/http-bind. Developers can create their own BOSH library or use any that are available publicly, as documented on Cisco DevNet (see http:/​/​developer.cisco.com/​web/​cupapi/​overview-of-interfaces)."

The link described, however, leads to a blank page.

Have you ever used something like this?

Thanks,

Mario

Hi,

Sorry, I guess I didn't realize that you were asking about how to get the events in the first place.

You are on the right track. In addition to the Real-Time Events topic, take a look at the Finesse Notifications section of the Developer Guide.

What type of application are you developing? Is it a browser based application or a server based application? Take a look at the diagram here: https://developer.cisco.com/media/finesseDevGuide2/CFIN_RF_CBE6286F_00_communication-with-cisco-finesse-web.html If it is a browser based application, you need to connect to the Finesse Notification Server via BOSH. If it is a server based application, you need to connect via XMPP. For the BOSH library link, take a look here: https://developer.cisco.com/site/jabber-websdk/develop-and-test/im-and-presence/overview/

If you followed the Lab Environment Validation section of the developer guide, it had you install the Pidgin application to get XMPP events. These events are the notifications/events that I am talking about. The Pidgin client is establishing a XMPP connection to the Finesse Notification Server, which is what you would programmatically for a server based application.

The Finesse out of the box agent desktop uses the BOSH connection and the jabberwerx library from the link above.

Thanx,

Denise

HI,

Thanks again for your response. I actually forgot to ask you if what we were trying to accomplish was something like what Pidgin does, but you already answered that , and confirmed that it actually is something like that. If I'm right, I believe Pidgin is an example of a server based application scenario.

Our scenario might be of the browser-based application, though, because I think we would need to implement the event listener in our Web Services app, in order to detect the events enlisted before and take action when the events occur. Based on this, we would need a connection via BOSH.

We will check your recommendations, it's possible that new questions will arise.

Thanks,

Mario

HI,

I hope you can help us with some issues we are facing using Finesse APIs:

There are some test users (agents) that have been registered in Cisco PCCE, with phone extensions associated to them. Using poster, we executed some test in calling Finesse APIs, with the following results:

  • First, we use User—Sign In to Finesse to LOGIN the agent, receiving the HTTP Response: 202: Accepted. As far as we know, this means that the agent is associated with the extension specified, with status NOT_READY.

  • Then, we use User—Change Agent State sending the status READY, receiving the HTTP Response: 202: Accepted.

  • Finally, for test purposes, we use Dialog—Create a New Dialog (Make a Call), using the agent’s extension as the fromAddress tag. However, we receive a 400 Bad Request response, with a message that indicates: “User’s extension is empty or null. The user is not logged in yet.” When we check the agent’s data using User—Get User, and realize that the user has no data in the extension tag, and that the state tag value is LOGOUT.

We don’t really know why the agent’s state is LOGOUT when the sign in was apparently successful.  Is there something we are missing here?

Thanks in advance,

Mario

Hi Mario,

For the User sign in and change state, you will get a 202 accepted if the request/response goes through successfully, but doesn't necessarily mean that the sign in and/or change state is successful. To see the error, you will need to log in via Pidgin to see the XMPP events that the API request results in. You can also take a look at the Finesse logs to see what is being published to the user.

Thanx,

Denise