Genesys CTI User Forum
Genesys CTI User Forum => Genesys CTI Technical Discussion => Topic started by: Gef Buneri on June 21, 2016, 09:28:07 AM
-
Hi everyone, hope all fine out there; I'm studying a method to dinamically change the agents the selectdn can choose from, when building the target.
I was thinking about something related to skills, where a certain skill inside a certain group of agents can be selected, instead of others. So, the idea is SelectDN[VQ,GroA,GroA1,GroAx] where skill in (Skill1,Skill2,Skillx).
Could it be done?
Best regards,
Gef.
-
You do have very weird requests my friend. ;)
Enviado de meu E6633 usando Tapatalk
-
Of course, Cav; easy things aren't for me :D
The goal is to dinamically remove from target, agents who are near workshift's end, so they're cannot be selected as target an amount of time before the end of the workshift.
-
And why the VQ?
VQ is a stat parameter only.
I do remember a post about dynamic target creation using ExpandGroup I think. But there was a solution already
-
Do you mean something like that:
x= CreateSkillGroup['', GroA, 'Skill1>0 & Skill2>0 & SkillX>0']
y= CreateSkillGroup['', Gro1, 'Skill1>0 & Skill2>0 & SkillX>0']
z= CreateSkillGroup['', GroAx, 'Skill1>0 & Skill2>0 & SkillX>0']
SelectDN[VQ,x,y,z]
-
You know you can route based on the actual schedule right? So you can deliver interactions based on the activity that's scheduled rather than skills etc.
-
[quote author=terry link=topic=9672.msg43777#msg43777 date=1466531936]
Do you mean something like that:
x= CreateSkillGroup['', GroA, 'Skill1>0 & Skill2>0 & SkillX>0']
y= CreateSkillGroup['', Gro1, 'Skill1>0 & Skill2>0 & SkillX>0']
z= CreateSkillGroup['', GroAx, 'Skill1>0 & Skill2>0 & SkillX>0']
SelectDN[VQ,x,y,z]
[/quote]
That one Terry :D
-
Yes Terry, that's it. So fine 'til the CreateSkillGroup function, then I should put the result in a var and use the var as a .GA value in the SelectDN; got it right? Ok, it should work fine... now the last step: how to assign skill to agent, from ird, using a var?
Thanks Dionysis, I know, but here the point is to dinamically change skill basing on a pre-assigned value that represents the agent's workshift. So, basing on a table containing the cross reference between agent id and his workshift, the scheduling have to change dinamically and agents belonging to the same group should become selectable or not, as targets, from time to time. The trick is that agents belong to the same agent group, so I can't no longer use the whole group as the single target, but I must partialize what the group contains.
-
You don't assign a skill to an agent, skills are queries. You search for agents who meet a criteria. Why would you want to assign a skill? You already know who they are...
Why not better create skills with the values being their work hours?
Enviado de meu E6633 usando Tapatalk
-
Sure Cav, this point is quite clear to me, but it will not satisfy the needing, the way I think it; 'cause the goal is to remove agents from targeting a bit earlier than the workshift end hour, just to know the duration of the workshift isn't enough. My idea is to create a table with the skill association in where I'll assign a skill to mark them as selectable/not selectable basing on a schedule, to make the agent not selectable 10 minutes before his workshift's end.
To make the long short, I would like to be sure the system does no longer select the agent even if he is in ready state, to avoid the routing of calls on that agent, if he is near the workshift's end. I can't apply a schedule to the whole group.
It can be done as you're suggesting, creating some logic like "during this interval, don't select these skills", where the skill represents the workshift, but workshifts change frequently in the week, for the same agent.
-
do it via total logged in time , but that will work if they all on same shift length
-
I'm pointing to a possible solution (not working at the moment). Trying to use a stored procedure to dinamically update CFG_SKILL_LEVEL table @config DB, but it seems changes done directly in the table are not considered by URS, letting the level set in skill level value inside the person proprerties in cme to be the significant value. I mean:
I create a skill in cme, assign that skill with a specific level through person properties in cme, so I have a record in config db indicating person dbid/skill/Skill level. I change the level value in the db's record, but nothing changes; CreateSkillGroup still selecting agent using CME skill value, instead of db's changed value.
Any clues?
-
use skill level from CME then in strategy use -5 etc so that skill level used for routing is 5 less than CME , that does work as i've used it before
-
Hi Tambo, thank you for the reply. Got the logic, but can't figure out how to use it. I mean, the goal is to make urs to createskillgroup using the skill level on db instead of the one in cme.
Following your logic I should use an expression like "skillname = (x - y)" where x is the CME value and (x - y) is the config db value?
-
no no need for DB skill level, use current skill level then assign new skill level in the strategy
-
Oh, ok, I see. But I must read the value somewhere, 'cause I have to choose only agents who can be selected. The idea was to change the skill level directly in Genesys Config DB to allow a stored procedure to do the skill scheduling based on the workshifts calendar.
-
em i wouldn't advise changing the config DB directly, but that's maybe just me. CME / GA may not update the new value quickly.
can i ask though why are you trying to find a technical fix to something that shouldn't be a telephony issue. Surely agents know when they are going to finish and can go into not ready ?
-
Your point is right, but management wants an automatized system to avoid human operation, 'cause in my company it is seen as a point of failure (many times agents forget to logout and receive a call one minute before workshift's end or so).
The only way I can imagine to do this is to create a data base containing a scheduling to change skill, so I can just use a SelectDN on target builded with createskillgroup. On the other side, we are studying a way to set a timer on Siebel integrated CTI phone bar to autoset logout/backoffice or any non frontend state, but siebel dev have got very long sla.
-
Their schedules are fixed or they vary? What you are asking seems more a WFM task
Enviado de meu E6633 usando Tapatalk
-
ok so only thing i can think of is you need to assign the same new skills to agents that are on the same shift length.
each of these skills then relate to a ListObject which has the length of shift in it -10 mins,
then you need strategy to look at is total logged in time greater than the amount in the ListObject, if so don't route call.
i hope i've explained correctly
-
i do agree with Cav though defo WFM
-
Hi, yes Tambo, at this point the only choice I have is through a pre assigned skillbyshift, but this will involve manual work, I fear. And yes, Cav, WFM will be the perfect answer, but it isn't included within the suite we own.
Thank very much to you all for the help, now I'll try a lot to see what I can get out of the hat.
-
Hi all... again! :)
Where do I can find an exhaustive guide on skill expression for urs? I know I can use expressions like "skillname = skilllevel" with operators, but how can I select an agent who have just the "skillname", so what is the syntax to tell "select the agent who have this "skillname", no matter the value"? or select more skillnames, so the expression will be "select all agents with skillname1 or skillname2 or skillname3, etc.", no matter the skill level.
Regards.
-
I'd use " [b]Skill >= 0[/b] " for that... (you need to specify a level) :D
Or you can use an agent group and not specify a level.
URS Reference Manual could help.
-
Thanks n3vek7, I'll try this way. An expression where "skillname1 >= 0 | skillname2 >= 0 | skillname3 >= 0", and so on.
skillname can be a variable? or the real name of the skill is mandatory?
-
if the skill level is 0 then they wont get calls routed to them anyway, so would go with skill >0
real skill name should be specified as you are targeting specific agents for a specific reason
-
If agent has no skill then URS assumes that he has it with level 0. Skill>=0 will include all agents including those who are not configured with skill. Either use skill>0 or 8.x URS need to be used where it is possible just to check is agent configured with the skill or not no matter what is skill level
-
Split target selection in functions SelectDN, SuspendForDN, RouteCall. Check the schedule right before RouteCall when free agent found. Make the agent NotReady if it is too late. Go back to Suspend (or maybe Select).
-
Wow, thank to you all!!! great, great help. Think I reached a good point:
- Table with genesys login id (unique, indexed), workshift endhour, group of agent the agent belongs (unique, indexed)
- Oracle stored procedure to give as @out a cat string of all the selectable agents (login ids)
- Assign to the agent the login id as a skill with value >=1
- selectdn using a var containing the skill expression "loginid1 > 0 | loginidx > 0 | ..."
Done! can be? :) or am I too crazy?
At this point one last question... actually I use a single IRD var to cat more than 1100 chars, but IRD vars (7.5), has a limit? how can I check it?
-
There is no limits on size of values if string variables.
There is limit on size of string literals used in strategy, something about 1k.
-
Keys 1k values 4k
Enviado de meu E6633 usando Tapatalk
-
Thanks guys, all seems to run fire, here.
-
Sorry for writing into a solved thread. Verry confusing discussion, maybe I misunderstood everything. The shift of the agents must be stored somewhere in the database. So I would write a stored procedure selecting the agents with their shift ending in x minutes, return it as a comma separated list and then use it as parameter of the ExcludeAgents IRD function.