10-26-2016 03:20 AM
We are developing a Cisco call control application based on Finesse non gadget. We are successful in implementing all functionalities. But the problem is gadget allows simultaneous logins on the same extension. That is, if an agent A is logged into extension 1001 and agent B tries to login on same extension 1001. It allows login without any error. Is this known issue or is there any way to handle this?
Also, currently we are using JQuery 1.4.4 but customer site has JQuery 1.11.1. Jquery no conflict doesn't seem to solve the issue? Is there a newer version of library available?
10-27-2016 10:17 AM
Hi Nidhi,
What version of Finesse are you using? Using Finesse 11.0's out of the box desktop, I tried to login two agents with the same extension and got an error that didn't allow the second login:
<Update>
<data>
<apiErrors>
<apiError>
<errorData>33</errorData>
<errorMessage>CF_RESOURCE_BUSY</errorMessage>
<errorType>Device Busy</errorType>
</apiError>
</apiErrors>
</data>
<event>put</event>
<requestId>7cf4ed71-ea81-475e-8356-20e9b19fa973</requestId>
<source>/finesse/api/User/1001002</source>
</Update>
I vaguely remember that previous versions allowed the second login but kicked out the first person. I will need to look to see which version it changed in.
This is not an issue with JQuery.
Thanx,
Denise
11-07-2016 03:50 AM
Hi Denise,
We're using Finesse 10.5 and we have developed call control application based on Finesse non gadget using Finesse Web Service API's.
Is there an API which we can use to check if that extension has already been logged in by other agent ie. the extension is in use by different agent.
We could not find any API method which does this on Finesse webservices developer guide.
Thanks.
Nidhi
11-07-2016 09:46 AM
Hi Nidhi,
I don't have a 10.5 system available to try, but if you reproduce the scenario using the Finesse desktop, you can see what the expected behavior is.
Also, what happens to agent1 when agent2 logs in with the same extension, does it get logged off? If I remember correctly, that is the expected behavior for 10.5.
Lastly, take a look at the Finesse webservices logs when the second login occurs.
There isn't an API to check if the extension has already been logged in by another agent.
Thanx,
Denise
11-09-2016 10:25 PM
Hi Denise,
I've reproduced the scenario with Finesse 10.5 system. Here is the logs generated when i tried login to same extension with different agent Id.
JQMIGRATE: Logging is active
2016-11-10T11:29:30.509 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container :
2016-11-10T11:29:30.513 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : ------ Finesse logger initialized ------
2016-11-10T11:29:30.514 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : ------ Started on: Thu Nov 10 2016 11:29:30 GMT+0530 (India Standard Time) ------
2016-11-10T11:29:30.514 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : ------ Browser: null ------
2016-11-10T11:29:30.514 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : ------ Client IP: null ------
2016-11-10T11:29:30.515 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container :
2016-11-10T11:29:30.516 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : WorkflowEngine is starting
2016-11-10T11:29:30.517 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : Workflow Engine entering Stopped state, from: 'none'
2016-11-10T11:29:30.518 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : [ClientServices] SystemInfo: requestId='undefined', Making REST request: method=GET, url='/finesse/api/SystemInfo?nocache=1478757570518'
2016-11-10T11:29:30.518 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : [ClientServices] RequestedScheme: undefined; Scheme: http
2016-11-10T11:29:30.520 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : FailoverMonitor.startListening(): Listening for triggers
2016-11-10T11:29:30.520 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : FailoverMonitor.startListening(): Listening for changes in SystemInfo
2016-11-10T11:29:30.520 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : FailoverMonitor.startListening(): Listening for changes in finesse user presence
2016-11-10T11:29:30.520 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : FailoverMonitor.startListening(): Listening for changes in the BOSH connection
2016-11-10T11:29:30.662 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : [ClientServices] SystemInfo: requestId='undefined', Returned with status=200, content='<SystemInfo>
<currentTimestamp>2016-11-10T06:05:47.066Z</currentTimestamp>
<deploymentType>UCCE</deploymentType>
<primaryNode>
<host>finesse-a.mpcz.in</host>
</primaryNode>
<secondaryNode>
<host>finesse-b.mpcz.in</host>
</secondaryNode>
<status>IN_SERVICE</status>
<timezoneOffset>330</timezoneOffset>
<uri>/finesse/api/SystemInfo</uri>
<xmppDomain>finesse-a.mpcz.in</xmppDomain>
<xmppPubSubDomain>pubsub.finesse-a.mpcz.in</xmppPubSubDomain>
</SystemInfo>'
2016-11-10T11:29:30.683 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : FailoverMonitor.init().onLoad: System info status: IN_SERVICE
2016-11-10T11:29:30.684 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : FailoverMonitor.init(): Establishing BOSH connection...
2016-11-10T11:29:30.685 +05:30: : 172.16.18.18: --- -- ---- --:--:--.--- -----: Container : FailoverMonitor._setStatus(): notifying listeners of status=connecting
2016-11-10T11:29:30.746 +05:30: : 172.16.18.18: Nov 10 2016 11:35:47.163 +0530: Container : Client: 2016-11-10T05:59:30.707Z, Server: 2016-11-10T06:05:47.124Z, Drift: 376417ms, Network Latency (round trip): 75ms
JQMIGRATE: Logging is active
Could not find a translation for en-US
2016-11-10T11:29:31.541 +05:30: : 172.16.18.18: Nov 10 2016 11:35:47.958 +0530: Container : [ClientServices] MasterPublisher._connInfoHandler() - Connection status: connecting
EventTunnel._checkToSendConnected(): status=true, _initPresence=false
EventTunnel._checkToSendConnected(): status=true, _initPresence=true
2016-11-10T11:29:32.577 +05:30: : 172.16.18.18: Nov 10 2016 11:35:48.994 +0530: Container : [ClientServices] MasterPublisher._connInfoHandler() - Connection status: connected
2016-11-10T11:29:32.577 +05:30: : 172.16.18.18: Nov 10 2016 11:35:48.994 +0530: Container : FailoverMonitor._connectionConnectHandler(): Cancel EventTunnel timer
2016-11-10T11:29:32.577 +05:30: : 172.16.18.18: Nov 10 2016 11:35:48.994 +0530: Container : FailoverMonitor._connectionConnectHandler(): Cancel failed BOSH connection timeout
2016-11-10T11:29:32.577 +05:30: : 172.16.18.18: Nov 10 2016 11:35:48.994 +0530: Container : FailoverMonitor._connectionConnectHandler(): BOSH is now connected!
2016-11-10T11:29:32.578 +05:30: : 172.16.18.18: Nov 10 2016 11:35:48.995 +0530: Container : PageServices.onLoad(): BOSH established! Commencing sign-in process
2016-11-10T11:29:32.586 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.003 +0530: Container : FailoverMonitor._checkThisServer(): Checking to see if this server is ready... [BOSH=true][FinesseUserAvailable=true]
2016-11-10T11:29:32.587 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.004 +0530: Container : FailoverMonitor._cleanupAndRecover(): Resubscribing to system info events
2016-11-10T11:29:32.587 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.004 +0530: Container : FailoverMonitor._cleanupAndRecover(): Stop polling for system info
2016-11-10T11:29:32.587 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.004 +0530: Container : FailoverMonitor._cleanupAndRecover(): Stop polling autopilot to see if other side is ready
2016-11-10T11:29:32.587 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.004 +0530: Container : FailoverMonitor._cleanupAndRecover(): Cancel lastchance timeout so we don't failover since we recovered
2016-11-10T11:29:32.587 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.004 +0530: Container : FailoverMonitor._cleanupAndRecover(): disengaging AutoPilot
2016-11-10T11:29:32.588 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.005 +0530: Container : FailoverMonitor._cleanupAndRecover(): Fetching the user for the first time
2016-11-10T11:29:32.589 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.006 +0530: Container : [ClientServices] User: requestId='undefined', Making REST request: method=GET, url='/finesse/api/User/7001?nocache=1478757572589'
2016-11-10T11:29:32.589 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.006 +0530: Container : [ClientServices] RequestedScheme: undefined; Scheme: http
2016-11-10T11:29:32.590 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.007 +0530: Container : FailoverMonitor._handlePresenceEvent(): user 'finesse' has presence=available
2016-11-10T11:29:32.706 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.123 +0530: Container : [ClientServices] User: requestId='undefined', Returned with status=200, content='<User>
<dialogs>/finesse/api/User/7001/Dialogs</dialogs>
<extension></extension>
<firstName>Sunny</firstName>
<lastName>Jarwal</lastName>
<loginId>7001</loginId>
<loginName>sunny</loginName>
<pendingState></pendingState>
<reasonCodeId>-1</reasonCodeId>
<roles>
<role>Agent</role>
</roles>
<settings>
<wrapUpOnIncoming>NOT_ALLOWED</wrapUpOnIncoming>
</settings>
<state>LOGOUT</state>
<stateChangeTime>2016-11-10T06:05:13.041Z</stateChangeTime>
<teamId>5007</teamId>
<teamName>MPSEB_NOC_Team</teamName>
<uri>/finesse/api/User/7001</uri>
</User>'
2016-11-10T11:29:32.707 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.124 +0530: Container : [ClientServices] User: requestId='7f94e951-eed0-4a3a-842a-6fa1a222ddf2', Making REST request: method=PUT, url='/finesse/api/User/7001'
2016-11-10T11:29:32.708 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.125 +0530: Container : [ClientServices] User: requestId='7f94e951-eed0-4a3a-842a-6fa1a222ddf2', POST_DATA='<User><state>LOGIN</state><extension>7007</extension></User>'
2016-11-10T11:29:32.708 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.125 +0530: Container : [ClientServices] RequestedScheme: undefined; Scheme: http
2016-11-10T11:29:32.708 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.125 +0530: Container : SignIn.handleUserLoad(): Performing login: extn=7007
2016-11-10T11:29:32.760 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.177 +0530: Container : [ClientServices] User: requestId='7f94e951-eed0-4a3a-842a-6fa1a222ddf2', Returned with status=202, content=''
2016-11-10T11:29:32.817 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.234 +0530: Container : [ClientServices] MasterPublisher._parseAndPublishXMLEvent() - Received XML event on node '/finesse/api/User/7001': <Update>
<data>
<apiErrors>
<apiError>
<errorData>33</errorData>
<errorMessage>CF_RESOURCE_BUSY</errorMessage>
<errorType>Device Busy</errorType>
</apiError>
</apiErrors>
</data>
<event>put</event>
<requestId>7f94e951-eed0-4a3a-842a-6fa1a222ddf2</requestId>
<source>/finesse/api/User/7001</source>
</Update>
2016-11-10T11:29:32.997 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.414 +0530: Container : SignIn._loginErrHandler(): Error logging in:The extension specified is already in use.
2016-11-10T11:29:32.997 +05:30: : 172.16.18.18: Nov 10 2016 11:35:49.414 +0530: Container : [ClientServices] User failed validation! Does your JS REST class return the correct string from getRestType()?
Also, when another agent logged in to same extension using our call control, first agent looses controls. All the call controls are getting passed to 2nd agent.
Thanks
Nidhi
11-11-2016 09:35 AM
Hi Nidhi,
So from the logs you pasted from the out of the box desktop, it shows that when user 7001 logs in with extension 7007, the login API comes back with:
<Update>
<data>
<apiErrors>
<apiError>
<errorData>33</errorData>
<errorMessage>CF_RESOURCE_BUSY</errorMessage>
<errorType>Device Busy</errorType>
</apiError>
</apiErrors>
</data>
<event>put</event>
<requestId>7f94e951-eed0-4a3a-842a-6fa1a222ddf2</requestId>
<source>/finesse/api/User/7001</source>
</Update>
So in your application, what is the response for the second login? Do you get the same error? You should be getting the same error and therefore blocking the second login.
Thanx,
Denise
11-17-2016 01:15 AM
Hi Denise,
I've tried this with my application but not getting any error or event for this scenario. Moreover, when second agent login to same extension, first agent is loosing the call control focus. Full control is getting transferred to second agent without any error message or notification to first or second agent.
Thanks
Nidhi
11-17-2016 09:25 AM
Hi Nidhi,
I've tried this with my application but not getting any error or event for this scenario.
At what point of the scenario? Do you get events when the first agent logs in? Or when the second agent logs in? In both login situations, you should be getting events just like what you see in the client logs. If you are not getting any events, then there is something wrong with your connection to the Finesse notification service.
Thanx,
Denise
12-11-2016 10:38 PM
Hi Denise,
I have tried logging an agent 7001 on extension 7007 and another agent 7002 on extension 7007.
In Finesse, which is using Finesse API, an error message is coming up - <errorMessage>CF_RESOURCE_BUSY</errorMessage>
but in my application which is developed by using Finesse Web service API no error message or alert is coming up. Moreover, first agent 7001 is loosing its control from call control application and full control is getting transferred to agent 7002 on extension 7007 and no alert or any error message is coming in Logs.
Please let me know if there is any way to get this error message in my application which is a non gadget code developed using Finesse Web Service API.
Thanks
Nidhi
12-12-2016 09:41 AM
Hi Nidhi,
Are you using the Finesse APIs only or are you connected to the Finesse notification service? You have to connect to the Finesse notification service to get these errors.
Thanx,
Denise
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide