cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
2007
Views
0
Helpful
9
Replies

Finesse-non gadget-Multiple agents login to same extension

nidhi.nagpal06
Level 1
Level 1

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?

9 Replies 9

dekwan
Cisco Employee
Cisco Employee

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

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

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

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

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

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

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

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

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