top of page
Writer's picturesajan Allan Roy R

How cool is Virtual agent?

Virtual Agent has a number of benefits (Reduces agent workload, makes things easy for the requestor, uses NLU, automates a number of processes, reduced work stress, reduced ticket count, etc) that we already know, and kind of utilize it ourselves during times when we would reach support from a well-built portal.


NLU (Natural Language Understanding):

NLU works on i.Intent, ii.Utterances, iii.Entity.



NLU IN SERVICENOW:

ServiceNow uses:

  1. NLU Inference service - trains & predicts intents and entities

  2. NLU Model builder - create, train, test, validate and publish NLU Models, which can be consumed in Virtual Agent for Topic discovery (Topic as in VA topics) and Entity Extractions.

Coolness #1: Virtual Agent can integrate with external NLU services such as IBM Watson and Microsoft LUIS.


PLUGINS:

Glide Virtual Agent [com.glide.cs.chatbot]

Communities Plugin [com.sn_communities]

Live agent transfer [com.glide.interaction.awa]


Activating the base plugin automatically installs pre-built conversations for:

  1. IT Service Management (ITSM)

  2. Customer Service Management (CSM)

  3. Human Resources (HR)

  4. Governance, Risk and Compliance (GRC)

  5. Project Portfolio management (PPM)

CONVERSATIONS OFFERED OOB:


TABLES IN VA:




VA DESIGNER:


VA designer can perform the following operations:

  1. Branching

  2. Looping

  3. REST calls

  4. Glide CRUD operations

Components of a VA Designer:


1. User Input

  1. Text - simple free text from user

  2. Static Choice - User selects from a set of pre-defined choices

  3. Reference Choice - Refers a field to get the choices - for Example, Priority

  4. Boolean - Yes/No input from user

  5. Date Time - input as a date-time picker

  6. File Picker - Used to upload an attachment

  7. Carousel - Horizontal labelled images, Users can select a single item from this

2. Bot Response

  1. Text - display a text as a bot response

  2. Output Image - Display an image from a url

  3. Link - Header with a single URL link - to a URL or a record in SN

  4. HTML - Displays Static HTML content

  5. Multi-flow Output - sequentially displays two or more outputs as links, text, image, HTML

  6. Script output - return value or output from a script

  7. Card - shows record information with display field as header and other fields in a readable card format

3. Utilities


  1. Lookup - Shows a record (card) based on user's input

  2. Script action - run a script of choosing and update records/insert records - line changing a user's title, creating a new incident

  3. Record Action - Create/update a record by mapping the user's input

  4. Decision - Have a conditional series of events, like create further actions based on user's input - Ex: Yes or No

  5. Topic Block - Similar to record action, but shows only short description & urgency

Properties:

Each Node (or control) decides what occurs for a singular conversation/processing of user input/processing of output. For NLU enables nodes, additional NLU options apply.



Variables in VA Designer:

  1. Input variables - values stored from user responses and user session

  2. Script Variables - similar to scratchpad variables, where these can be used across the topic flow. These are created from the left pane in VA designer

  3. Live agent variables - These variables carry information from the conversation to the live agent transfer. These are valid only when live agent transfer is enabled (again on the right pane). Live agent/context variables can be created and tagged to topic flows under Colalboration > Chat setup > context reference list

Coolness #2: Virtual Agent supports three types of variables!


Reporting with VA:

  1. OOB PA dashboard called 'Virtual Agent Insight' shows details on agent conversations, topics used, etc.

  2. 'Embed count of topic blocks' & 'Execution count of Topic Blocks' are OOB reports available.

Adding the Virtual Agent to Portals/Messaging Applications:

Portal:

Navigate to Service Portal > Agent Chat. Choose the portal and also make the VA public if needed. The Agent chat also has a script section to pass over variables from the page/widget to the conversation flow when the user initiates it.

Page:

To add VA to a specific page only, open the page designer and add the virtual agent widget to the page (Virtual agent Service portal widget)

Messaging apps:

To add VA to messaging apps like slack, Workplace or teams, navigate to Collaboration > Messaging Apps Integration.

Web client on External sites:

Step 1: Go to property 'com.glide.cs.embed.csp_frame_ancestors'.

Based on where the VA should be embedded, there are the following options:

  1. host-source - could be an external website, host name, IP addr, URL and/or port number. Can take inputs as wildcard too ex: https://*.example.com

  2. schema-source - the first component to consider - http: or https:

  3. self - the origin is same as the page being served

  4. none - no matching URLs

The values can be added as comma-seperated too in the sys_property, in case there are multiple sources.


Step 2: Go to property 'com.glide.cs.embed.xframe_options'. This property decides whether a browser should allow VA in an iFrame. Options:

  1. sameorigin - the page can be displayed only on the same origin

  2. deny - page cannot be displayed in an iFrame

  3. allow-from uri -display page in a iFrame only on specified uri (ex: allow-from https://example.com)

Step 3: NOW, go to the external page and add this iframe:

This will load the VA on that page with history included. To skip history, use this suffix on the instance url:

?sysparm_skip_load_history=true


Coolness #3: Virtual Agent has given out a series of configurations to easily have it available anywhere - be it portals, pages, messaging apps, external sites.


Available Customisations:

  1. Multiple bot profiles - Create a user and tag that user to a Live profile (live_profile) record with an avatar. Use it on Collaboration > Branding. (There is a OOB user for this too, 'Virtual.agent')

  2. Chat Window:


3. Chat messages:


4. Other settings:










5. Chatbot settings - Avatar background, font, etc

6. Support options settings - Show/hide phone number, live agent transfer, even add links!

7. Conversation settings - response time, greetings topics, survey topic, Live agent topic, error topic, closing topic, fallback topic, anything else topic.


Notifications:


Provider > Notifications is where you create notification, notification content and notification actions (this is where you tag Virtual agent). Notifications can have shared content, provider content and provider actions.


Once configuration is done, u need to enable notifications under Collaboration > Chat setup, Collaboration > Messaging apps.


Translations:

I18N: Internationalization (com.glide.i18) plugin provides elements needed for translating the instance. Seperate language plugins need to be installed.


Translation phrases can be added under the sys_ui_message table referencing the key value. For example, a key of 'Hello' can have two records - one with language English, the other with spanish.


These messages can be fetched on VA using gs.getMessage().


NLU:

Plugins:

  1. com.glide.nlu - NLU Model builder - core: installs the needed tables

  2. com.snc.nlu_studio - NLU Model builder: enables models creation

  3. com.glide.platform_ml - Predictive Intelligence

  4. com.glide.nlu.pa - Performance analytics for NLU

  5. sn_itsm_nlu - pre-built models for ITSM

  6. com.sn_csm.virtualagent - pre-built models for CSM

NLU Tables:


NLU Vocabulary- stores words

NLU Entity- stores entities

NLU Model system entity - maps NLU models and system entities (time, date, duration, location)

NLU Intent - stores intents

NLU Model status - status of NLU training

NLU Supports level-1 domain separation!


NLU Models:


NLU models can be accessed from NLU Workbench > Models (or) Studio > Open the NLU model builder application (ITSM, CSM or HRSM).


NLU models allows to create intent, and offers system generated entities, user-defined entities and upon completion of the configuration, we can train, test and publish the model.


Vocabulary helps by providing additional synonyms for the utterances used by the users - in other words, to understand the organisation's lingo.


The NLU implementation process:

NLU models are to be created as an application in a application scope.

  • During the Prepare phase, we will obtain the list of possible utterances by gathering info from customers on the ways they will ask for something, possibly store it in an excel. Ambiguos utterances are also to be identified.

  • Review the data collected, check for errors/grammatical errors or typos.

  • Create a NLU model in a custom scope app and import intents or create your own.

  • Testing needs to be done on the intent/utterances created:

  • Confidence threshold should be 60% & VA intent delta = 7%.

  • Ambigous utterances are to be tested too - the VA should switch to the right fallback topic accordingly.

  • Tuning the model requires regular comparison between the utterances defined in the system, versus the utterances that the users use from real-time data. Also, adding additional synonyms to vocabulary and utterances.

  • Deploy the model rwith by the application update set or app repo.

  • Debugging options: Tables NLU Predict Logs [open_nlu_predict_log], NLU Predict Intent Feedbacks [open_nlu_predict_intent_feedback], NLU Predict Entity Feedbacks [open_nlu_predict_entity_feedback].


Entity Types:

  1. Simple entity - refers to a singular value, like iPhone => catalogItem, password reset => passwrdResetForm

  2. List entity - refers to multiple options that can be picked for an answer - Like mobile => iPhone, Android, or Urgency => High, medium, low

  3. System-derived entity - utilising the system entities like location, date time, duration etc. Ex: fromLocation, toLocation will be using the system entity 'location' as the parent entity.

  4. Pattern entity - items like email, phone number, record number, which follows a pattern. Ex: Incident number - INC\d{7}, email address - ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$, phone number - \d{10}|(?:\d{3}-){2}\d{4}|\(\d{3}\)\d{3}-?\d{4}

  5. Open-ended entity - focuses more on the context rather than the ientitytself. Ex: I want to order an iPhone => 'I want to order' is the context and 'iPhone' is the entity.


My Key Takeaways:

  • My assumption that VA without NLU is enough knowledge to have, is completely wrong.

  • VA systematically handles data in multiple tables.

  • Almost everything (when it comes to branding) is configurable.

  • VA can be placed on portal, pages, messaging apps, external sites.

  • Topics are not the same as topic flows :)

  • Topics can be categorized.

  • NLU is a strong tool when it teams up with VA.

  • Utterance, intent, vocabulary and entities(has multiple formats, not just one variable or string) form the crux of NLU.

  • NLU has a robust process to follow if things need to work efficiently, from planning to deployment to debugging/support.

  • Topic flows are tied to NLU models once when NLU is enabled in VA general settings - like initiating a topic flow from a NLU model!

  • There are a number of ways to use variables here - input variables (from user session), script variables (declared deliberately), live agent (context) variables (to pass data to live agent session).

  • Translations are possible just by using the sys_ui_message table! (you'll have to have languages installed)

  • Actionable notifications from provider notifications!


Now, ain't that cool enough?


235 views0 comments

Recent Posts

See All

Zing search - some basics

Zing Search Engine: · This is SN’s search engine completely built in-house for SN. Search result mechanism: Zing search primarily relies...

Comments


bottom of page