Author Message
P.Bobek
Joined: Sep 14, 2015
Messages: 13
Offline
Hello JTAPI experts,

I want to login an agent and then dynamically add and remove skills.
For this purpose I wanted to use the following workflows:

Login without skill:
1. AgentTerminal -> addAgent with ACDAddress null
Expected: AgentTerminal.getAgents returns one Agent object with ACDAddress null

Login with skills X,Y:
1. AgentTerminal -> addAgent with ACDAddress null
2. AgentTerminal -> addAgent with ACDAddress X
3. AgentTerminal -> addAgent with ACDAddress Y
Expected: AgentTerminal.getAgents returns three individual Agent objects with ACDAdress null, X and Y

Add Skill X to already logged in agent:
1. AgentTerminal -> addAgent with ACDAddress X
Expected: AgentTerminal.getAgents contains one more Agent object than before and it has ACDAddress X

Remove Skill from already logged in agent:
1. ACDAddress -> getLoggedOnAgents and filter the agents by agentId
2. AgentTerminal -> removeAgent with agent object found in the previous step
Expected: AgentTerminal.getAgents does not contains an Agent Object with ACDAddress X but the other agent object are still present


My Problems:
* It seems that the removeAgent method logs out all agent objects. Because of that it is not possible to remove a particular skill from an agent without logging out the whole agent from all it skills.
* The AgentTerminal::getAgents method does not always return individual agent objects for each ACDAddress
* I cannot rely on Agent::getACDAddress because it returns null in most situations


Can you confirm the problems I have? Is there a better approach to realize a dynamic login with skills? Do I really have to perform a login for the remaining skills after removing the agent from a skill?

Thanks in advance!
Philipp Bobek
JohnBiggs
Joined: Jun 20, 2005
Messages: 1139
Location: Rural, Virginia
Offline
When you log an agent in, you are logging the Agent in.
An agent is assigned a set of skills, so the agent 'becomes available - at some level' to all of those skills based on the agent logging in and subsequently setting agent state (auto in/ manual in and work modes).
You don't log the agent into specific skills.

In order to add a skill dynamically to an agent there is a FAQ that can be dialed via MakeCall to accomplish that.
To the best of my knowledge you can only add one skill to an agent via this mechanism. There is another FAQ to remove the skill that was added.

You can also add skills to an agent via the AES System Management Service. However unless the agent logs out and back in, this is not picked up by the system in real time.
P.Bobek
Joined: Sep 14, 2015
Messages: 13
Offline
As far as I understood my only choice to design the workflows is the following:

Login without skill:
1. SMS API -> remove all skills from the agent
2. AgentTerminal -> addAgent with ACDAddress null

Login with skills X,Y:
1. SMS API -> Set Agent skill to X and Y
2. AgentTerminal -> addAgent with ACDAddress null

Add Skill X to already logged in agent:
1. SMS API -> add skill X to agent
2. AgentTerminal -> removeAgent
3. AgentTerminal -> addAgent with ACDAddress null

Remove Skill from already logged in agent:
1. SMS API -> remove skill X from agent
2. AgentTerminal -> removeAgent
3. AgentTerminal -> addAgent with ACDAddress null


Do you think there are any misconceptions in the workflows or a better approach?
JohnBiggs
Joined: Jun 20, 2005
Messages: 1139
Location: Rural, Virginia
Offline
I believe you are on track,however you need to allow for calls in queue, so you may need to use a chnage of state to pending wait for the call at the agent to end, go into the aux state, and then log the agent out in some of your flows.
Go to:   
Mobile view