I'm looking for help after spending days troubleshooting this issue to see how to resolve it.
We are using “Set Skills” action inside of an In-queue Flow in Genesys Cloud Architect where we're experiencing issues with the skills not being set on some calls that enter the In-queue flow.
Can you please confirm if the "Set Skills" action needs to meet specific criteria for it to set a skill for every interaction that enters an In-queue flow?
We have agents who are part of a queue that use WebRTC phones with Auto-answer enabled. This means that if a call enters a queue and an agent is available, the call is immediately connected to the agent and auto-answered.
Will the “Set Skills” action inside the In-Queue flow have enough time to run and set the right skills in this case?
Will the Queue routing method have time to consider the new skills and use them to decide which agent to deliver the call to? Or is there a chance that the skills don’t get attached in time because agents are immediately available and they use auto-answer?
The reason why I’m asking about the detail of how the Set Skills action functions inside of an In-Queue flow when agents use auto-answer is that we have been testing this and it does not always work. Some calls, at random, are missing skills that are meant to be attached by the “Set Skills” action.
From our testing, we have noticed that if we put the “Set skill“ action towards the end of the In-queue flow, which has multiple steps with data table lookups, decisions, setting and getting participant data, data action lookups using Genesys APIs, and message playbacks, the number of calls with skills not set dramatically increases. This is only affecting calls that are immediately auto-answered by an available agent in the queue. Only about 1 in 10 calls have the skills attached correctly in that case. If there is no agent available straight away, and the caller waits in the queue for a couple of seconds, the skill gets correctly attached every time.
Putting the “Set skill“ action closer to the top of the In-queue flow, increases the success rate of it working and setting the skills on most of our calls. About 9 in 10 calls have skills attached correctly.
But, when we disable auto-answer on Agent’s WebRTC phones, or when Agents use “Remote phone“ set to their mobile number, then all of the calls entering the In-queue flow have all skills attached every time.
It seems as if the Queue routing engine is connecting the call to an available Agent too quickly when auto-answer is enabled, resulting in the "Set Skills" action not executing or completing correctly.
To try and determine if the In-queue flow gets only partially executed, whether only some of the steps/actions/data table lookups have time to execute before the call is auto-answered by an Agent, we have used Set participant data actions throughout the In-queue flow to add attributes.
The result was that almost all calls have all participant data values attached inside of the Conversation ID when queried from the Analytics Conversation Details API endpoint and also inside the Genesys Cloud Interaction detail page under Participant Data.
That makes us believe the whole In-queue flow executed correctly in that split of a second when the call connected to the queue and was immediately auto-answered by an available Agent.
Only on one occasion, we've seen that none of the participant attributes from the whole in-queue flow got tagged on the interaction.
This left us with two different behaviours when the issue happens. One where all participant attributes show (the whole in-queue flow was executed) or none of the participant attributes show (the in-queue flow was not executed) but the In-queue flow does show as being part of the Conversation segments when we query Analytics Conversation Details API endpoint.
We use one of the participant attributes called “transferSkillSet“ to tag the success and failure paths of the “Set skills“ action to confirm which path was used for the call. All calls take the SUCESS path, even those that are missing the skills that are meant to be set by this action.
The call scenario is:
A client calls into Inbound IVR and selects one of the IVR options. The call is delivered to QUEUE1 using Architect Inbound Call flow "Go to queue" action where we also tag the call with SKILL1. The call is routed and auto-answered by AGENT1 which has the SKILL1 assigned.
Unfortunately, AGENT1 does not have clearance to deal with the client's query and they blind transfer the call to QUEUE2 for escalation. We have the Genesys ORG setup to strip skills on blind transfer. At this point, when the call is transferred to QUEUE2, the IN-QUEUE flow is configured to set SKILL2 and SKILL3 using the "Set skills" action and then let the call wait to get answered while listening to Music on hold and Periodic announcements. The in-queue flow that is used when agent blind transfers from QUEUE1 into QUEUE2 is set in the QUEUE2 settings in Genesys Cloud Admin > Contact Center > Queues > QUEUE2 > Voice > In-queue flow.
Note:
We have tested the same call scenario using Consult transfer and got the same results. Some calls were missing the skills from the in-queue flow and some had it set.
What we can see in the Analytics Conversation Details API output for the working call with all skills set is that the transfer from QUEUE1 to QUEUE2 has the “requestedRoutingSkillIds” section with both SKILL2 and SKILL3 added in the "Interact" segment type. See lines 13-15.
1 "segments": [
2 {
3 "conference": false,
4 "queueId": "2e2efd3d-18a6-4ae9-b5fd-aa65ec759daa",
5 "segmentEnd": "2023-02-22T18:09:38.889Z",
6 "segmentStart": "2023-02-22T18:09:38.886Z",
7 "segmentType": "delay"
8 },
9 {
10 "conference": false,
11 "disconnectType": "transfer",
12 "queueId": "2e2efd3d-18a6-4ae9-b5fd-aa65ec759daa",
13 "requestedRoutingSkillIds": [
14 "5c8d5f0d-a8e1-4caf-b520-8d8a8be4fb54",
15 "aa0c4417-cf10-4713-8376-e85d85aab604"
16 ],
17 "segmentEnd": "2023-02-22T18:09:39.827Z",
18 "segmentStart": "2023-02-22T18:09:38.889Z",
19 "segmentType": "interact",
20 "sipResponseCodes": [
21 410
22 ]
The “requestedRoutingSkillIds” section is also added under each of the segment types "Alert, Interact, Wrapup" when the call enters the QUEUE2. See lines 5-7, 17-19, 29-31.
1 "segments": [
2 {
3 "conference": false,
4 "queueId": "2e2efd3d-18a6-4ae9-b5fd-aa65ec759daa",
5 "requestedRoutingSkillIds": [
6 "5c8d5f0d-a8e1-4caf-b520-8d8a8be4fb54",
7 "aa0c4417-cf10-4713-8376-e85d85aab604"
8 ],
9 "segmentEnd": "2023-02-22T18:09:39.854Z",
10 "segmentStart": "2023-02-22T18:09:39.152Z",
11 "segmentType": "alert"
12 },
13 {
14 "conference": false,
15 "disconnectType": "client",
16 "queueId": "2e2efd3d-18a6-4ae9-b5fd-aa65ec759daa",
17 "requestedRoutingSkillIds": [
18 "5c8d5f0d-a8e1-4caf-b520-8d8a8be4fb54",
19 "aa0c4417-cf10-4713-8376-e85d85aab604"
20 ],
21 "segmentEnd": "2023-02-22T18:09:45.510Z",
22 "segmentStart": "2023-02-22T18:09:39.854Z",
23 "segmentType": "interact"
24 },
25 {
26 "conference": false,
27 "disconnectType": "client",
28 "queueId": "2e2efd3d-18a6-4ae9-b5fd-aa65ec759daa",
29 "requestedRoutingSkillIds": [
30 "5c8d5f0d-a8e1-4caf-b520-8d8a8be4fb54",
31 "aa0c4417-cf10-4713-8376-e85d85aab604"
32 ],
33 "segmentEnd": "2023-02-22T18:09:49.275Z",
34 "segmentStart": "2023-02-22T18:09:45.275Z",
35 "segmentType": "wrapup",
36 "wrapUpCode": "6257627f-778f-4ae7-951d-cc4624c364ee"
37 }
On the other hand, the output from the Analytics Conversation Details API for the call with missing skills is that the transfer from QUEUE1 to QUEUE2 does not include the “requestedRoutingSkillIds” section where both SKILL2 and SKILL3 should be present in the "Interact" segment type. See lines 10-17.
1 "segments": [
2 {
3 "conference": false,
4 "queueId": "2e2efd3d-18a6-4ae9-b5fd-aa65ec759daa",
5 "segmentEnd": "2023-02-22T17:59:07.737Z",
6 "segmentStart": "2023-02-22T17:59:07.693Z",
7 "segmentType": "delay"
8 },
9 {
10 "conference": false,
11 "disconnectType": "transfer",
12 "queueId": "2e2efd3d-18a6-4ae9-b5fd-aa65ec759daa",
13 "segmentEnd": "2023-02-22T17:59:08.365Z",
14 "segmentStart": "2023-02-22T17:59:07.737Z",
15 "segmentType": "interact",
16 "sipResponseCodes": [
17 410
18 ]
The “requestedRoutingSkillIds” section is also missing from each of the segment types "Alert, Interact, Wrapup" when the call enters QUEUE2. See below.
1 "segments": [
2 {
3 "conference": false,
4 "queueId": "2e2efd3d-18a6-4ae9-b5fd-aa65ec759daa",
5 "segmentEnd": "2023-02-22T17:59:08.364Z",
6 "segmentStart": "2023-02-22T17:59:07.935Z",
7 "segmentType": "alert"
8 },
9 {
10 "conference": false,
11 "disconnectType": "peer",
12 "queueId": "2e2efd3d-18a6-4ae9-b5fd-aa65ec759daa",
13 "segmentEnd": "2023-02-22T17:59:14.030Z",
14 "segmentStart": "2023-02-22T17:59:08.364Z",
15 "segmentType": "interact"
16 },
17 {
18 "conference": false,
19 "disconnectType": "peer",
20 "queueId": "2e2efd3d-18a6-4ae9-b5fd-aa65ec759daa",
21 "segmentEnd": "2023-02-22T17:59:20.953Z",
22 "segmentStart": "2023-02-22T17:59:13.953Z",
23 "segmentType": "wrapup",
24 "wrapUpCode": "6257627f-778f-4ae7-951d-cc4624c364ee"
25 }
Please let me know if you have any suggestions on how this could work reliably for our call scenario without disabling auto-answer for Agents using WebRTC phones.
The only solution we found that reliably attaches Skills inside In-queue flow using "Set skills" action is to not use auto-answer functionality, which is not an option for our client.
To add to the full picture, the reason we use skills inside of queues is mainly because of these 2 requirements:
-
Our customer uses 3rd party WFM system that integrates with Genesys Cloud over API, but it only reports on and creates forecasts based on Skills. Thus each call needs to have a skill attached and each agent needs to have a skill assigned.
-
The customer has built an external reporting tool that pulls all data from Genesys Cloud Analytics API and monitors the Notifications API. Their reporting is built around Skills, not Queues. Thus they also need to see all conversations with skills assigned.
That's the main reason why we are trying to assign new skills to a call when it's transferred to another queue. To make sure the correct skills are added for their WFM and Reporting systems to know the call had SKILL1 assigned in Queue1 and SKILL2 + SKILL3 assigned in Queue2.
Thank you for your help.