cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
477
Views
5
Helpful
3
Replies

How to handle particular Agent's state for Unified Contact Center Express 12.0 sandbox Lab

Hi there,

            Suppose Agent001 makes call to Agent002 ,so call is incoming to Agent002.At this time the userState is RESERVED.After answering the call at Agent002 the userState becomes TALKING.Upto this for both agents the userStates are different.And Participant state is ACTIVE & Agent state is ACTIVE for both agents.

            I have toggled the Hold-Retrieve button.For single Agents Signed In,Hold-Retrieve is working properly.When Agent001 & Agent002 both are signed in on two different desktops and suppse Agent001 holds the call,Retrieve button is enabled.And same happen with Agent002's buttons.Because same state is in the console.I am getting the userState for RESERVED,TALKING,READY,NOT_READY.But how should I get userState for all functioning like HOLD,RETRIRVE,TRANSFER so that proper button enable disable will work.

           If Agent001 hold the call,then only Agent001's Retrieve button should be enable not Agent002's Retrieve button enable.How to handle this problem.

 

Thanks in advance,

Komal 

3 Replies 3

dekwan
Cisco Employee
Cisco Employee

Hi,

 

When dealing with the calls itself, you should only be looking at the dialog event and not the user event. The dialog event has all of the data you need for that agent/participant. In the dialog event, there is allowable actions per participant. This is what you need to look at to have the right buttons show up for the different users/agents.

 

https://developer.cisco.com/docs/finesse/#!dialog/dialog-object-for-voice-calls

<participants>
        <Participant>
            <actions>
                <action>HOLD</action>
                <action>DROP</action>
            </actions>
            <mediaAddress>2002</mediaAddress>
            <mediaAddressType>AGENT_DEVICE</mediaAddressType>
            <startTime>2014-02-11T16:10:23.121Z</startTime>
            <state>ACTIVE</state>
            <stateCause></stateCause>
            <stateChangeTime>2014-02-11T16:10:23.121Z</stateChangeTime>
        </Participant>
        <Participant>
            <actions>
                <action>RETRIEVE</action>
                <action>DROP</action>
            </actions>
            <mediaAddress>2000</mediaAddress>
            <mediaAddressType>AGENT_DEVICE</mediaAddressType>
            <startTime>2014-02-11T16:10:23.121Z</startTime>
            <state>HELD</state>
            <stateCause></stateCause>
            <stateChangeTime>2014-02-11T16:10:36.543Z</stateChangeTime>
        </Participant>
    </participants>

 

Thanx,

Denise

If there are Agent A and Agent B, then there is request for Agent A to hold call .Agent A gets hold & Agent B is active,but in the console, evnts are getting same for both Agents .And Retrieve button should be enable only for Agent A not for Agent B.Both A & B gets same buttons enable ,disable.As the API doesn’t differentiate between Both agents how to differentiate between both the Agents?

Hi,

 

Are you building your own gadget and are having this issue? Or is this an issue on the out of the box agent desktop.

 

As I said earlier, both agents will get the exact same dialog event because they are part of the same dialog. You need to look at that agent's allowable actions to see which buttons should be enabled or disabled for that particular agent and that is how you differentiate between both the agents.

 

Using the example dialog found here: https://developer.cisco.com/docs/finesse/#!dialog/dialog-object-for-voice-calls. This event will be sent to both Agent A and Agent B. Let's take the participants section of that example.

<participants>
        <Participant>
            <actions>
                <action>HOLD</action>
                <action>DROP</action>
            </actions>
            <mediaAddress>2002</mediaAddress>
            <mediaAddressType>AGENT_DEVICE</mediaAddressType>
            <startTime>2014-02-11T16:10:23.121Z</startTime>
            <state>ACTIVE</state>
            <stateCause></stateCause>
            <stateChangeTime>2014-02-11T16:10:23.121Z</stateChangeTime>
        </Participant>
        <Participant>
            <actions>
                <action>RETRIEVE</action>
                <action>DROP</action>
            </actions>
            <mediaAddress>2000</mediaAddress>
            <mediaAddressType>AGENT_DEVICE</mediaAddressType>
            <startTime>2014-02-11T16:10:23.121Z</startTime>
            <state>HELD</state>
            <stateCause></stateCause>
            <stateChangeTime>2014-02-11T16:10:36.543Z</stateChangeTime>
        </Participant>
    </participants>

With the above example, we will designate that Agent A has the media address of 2000 and Agent B has the media address of 2002. 

 

So, the participant information for Agent A is:

<Participant>
            <actions>
                <action>RETRIEVE</action>
                <action>DROP</action>
            </actions>
            <mediaAddress>2000</mediaAddress>
            <mediaAddressType>AGENT_DEVICE</mediaAddressType>
            <startTime>2014-02-11T16:10:23.121Z</startTime>
            <state>HELD</state>
            <stateCause></stateCause>
            <stateChangeTime>2014-02-11T16:10:36.543Z</stateChangeTime>
        </Participant>

In the participant information for Agent A, you can see that it is in HELD state for this call. Then if you look at the <actions> section, the allowable actions for Agent A is RETRIEVE and DROP. So, this will tell you what buttons to enable/disable for Agent A.

 

Now, let's look at the participant information for Agent B. 

<Participant>
            <actions>
                <action>HOLD</action>
                <action>DROP</action>
            </actions>
            <mediaAddress>2002</mediaAddress>
            <mediaAddressType>AGENT_DEVICE</mediaAddressType>
            <startTime>2014-02-11T16:10:23.121Z</startTime>
            <state>ACTIVE</state>
            <stateCause></stateCause>
            <stateChangeTime>2014-02-11T16:10:23.121Z</stateChangeTime>
        </Participant>

You can see that Agent B is in ACTIVE state for this call and its allowable actions are HOLD and DROP. 

 

So, using this example, you can see that the same dialog event can differentiate what buttons gets enabled and disabled for Agent A and B.

 

I hope that makes sense.

 

Thanx,

Denise