Miguel Alvarez1
ServiceNow Employee
ServiceNow Employee

Overview

 

The use case in subject is about replacing an entire Live Agent Support where the end user had to select a language from a checklist field, then click a “Connect” button to know whether the selected language was available or not based on a working hour schedule. Since a language represents a queue, there was no way to know whether the queue was open or not until the end user was trying to connect. Sometimes, the end user had to try their native language and then try to connect to any other languages (usually the English queue was second attempt).

After understanding better what we must improve, we decided to implement a new approach by using Virtual Agent and Advanced Work Assignment functionalities where we created a Custom Live Agent Support topic on the Virtual Agent module and with AWA we implemented 1 Service Channel and 7 Queues (one per language) which are going to be dynamically displayed beforehand in the Chatbot based on the Schedule set for each Queue. Therefore, the end user will only see the current open queues to receive support from specialised agents.

 

High-level design

find_real_file.png

 

Based on the High-Level design, this is going to be the approach:

  • Create a Service Channel and define the default capacity for all the Queues. NOTE: In the Agent Capacity Override related list, it is possible to override the default capacity for 1 or multiple agents. This action ensure that the more experienced agents can receive more chats simultaneously than the value set in the Default Capacity field or the other way around, new agents can receive less chats.
  • For this use case, 7 queues are needed to receive chats in different languages (ITSM English, ITSM Spanish and so on).
  • Create an Assignment Rule from the Advanced Work Assignment > Assignment Rules sub-module
  • For each Queue, create an Assignment Eligibility to associate the Support Group with the Assignment Rule and the Queue itself. All the queues are using the same Agent Assignment Rule but only one Support Group per queue. NOTE: I would not recommend to use the same Support Group for more than one queue.
  • Create a Custom Live Agent Topic by duplicating the read-only Live Agent Support topic.

 

Create Service Channel

 

find_real_file.png

 

find_real_file.png

 

Create Queue

 

find_real_file.png

  

find_real_file.png

The same configuration applies for the other 6 queues and do not forget to add their corresponding Schedule

 

Create Assignment Rule

 

find_real_file.png

 

find_real_file.png

 

Create Assignment Eligibility

 

find_real_file.png

 

find_real_file.png

 

Custom Live Agent Support Topic

 

 find_real_file.png

 

Now, let’s break down this topic into pieces!!

 

find_real_file.png

 

 In the Reference Choice User Input “Search Queues”, the following actions were developed:

  1. Verify that the Queues are active and order by the “Order” field so that they can be displayed in the right order in the chatbot. First the English Queue and alphabetically the rest of the queues.
  2. Query the schedule related to the Queue to validate which Queues are within the schedule (isInSchedule function).
  3. Push the list of available Queues to display them in the chatbot + a cancel button in case the end user does not want to proceed with the activity.

find_real_file.png

NOTE: This is a scalable piece of code, therefore, you should not change the logic of it when creating new Queues

find_real_file.png

 

The Decision Utility marks the decision done by the end user to proceed contacting the live Agent or cancel the topic.

For the “Selected Queue” path:

  1. Capture the option selected by the end user by using the vaInputs.search_queues.getValue(),
  2. Capture the name of the selected queue by using the vaVars.Queuename = gr.getValue('name’);

For the “Cancel” path:

  1. The Conversation flow goes through this path only if the end user selects the “Cancel” option and the conversation ends.

 

 

find_real_file.png 

find_real_file.png

 

The Action Script Utility “Dynamically Set Queue” assign the name of the queue selected by the end user to the LiveAgent_queue Virtual Agent context variable and then trigger the vaSystem.connectToAgent() to route the chat to the right support group.

This liveAgent_queue VA context variable can be found in the Chat Setup module > Context Related list and it is used to store chat related information and control how chats are routed to live agents. Therefore, the queue selected by the end user is routed to the right ITSM Queue defined in the Advanced Work Assignment > Queues and each queue has a condition builder pointing to the Context.Queue variable.

Example:

For ITSM English Queue > Condition builder = context.portal is ITSM English.

For ITSM Arabic Queue > Condition builder = context.portal is ITSM Arabic.

find_real_file.png

 

find_real_file.png

Once, the topic is ready, make sure to do the following configurations:

  1. Save the topic and publish it.
  2. Do not forget to set this new Live Agent support topic as a Setup topic in the General Settings module, Live Agent topic field.
  3. In the AWA > Presence States, add the Support group to the existing presence states (Available, Away, Offline) in the Apply to Groups field.

 

Test my solution

 

  1. In one browser, impersonate an end user
  2. In a different browser, impersonate an agent who is part of a support group, open the Agent Workspace, and make the agent available from the Inbox module
  3. As an end user, go to the Service Portal, open the Chatbot and when you initiate the new Live Agent Support topic you will be able to see and select only the open queues based on the schedule defines for each queue.
  4. As an agent, ONLY if he/she is part of the Queue support group, he/she is supposed to get a chat notification as follow:

find_real_file.png

In the example below, one of the Queue is out of schedule, therefore, the Chatbot displays only 6 Queues. Also, the Agent belongs to the English Queue and in the first attempt, a different queue was selected and the chatbot prompts the message "There are no agents available at the moment, please try later" and in the second attempt, the chat is routed correctly to the agent. 

 

 find_real_file.png

 

 

My main goal of this implementation was to create a scalable and easy to maintain Live Agent Solution, where you can create as many queues as your business needs with ServiceNow OOTB functionalities and the custom Live Agent Support topic logic will be able to work with upcoming queues without editing a piece of code.

As the result, you will have a Live Agent Support topic with dynamic queues and ready to support your end users with IT technical issues.

In ServiceNow World this might be only one way to go. So, if you have had a similar Use Case, do not hesitate to share it. 🙂

Version history
Last update:
‎08-25-2021 01:55 AM
Updated by: