OVERVIEW
Virtual Assistants
Kore.ai Platform
Key Concepts
Natural Language Processing (NLP)
Accessing Platform
VIRTUAL ASSISTANTS
Virtual Assistant Builder
Virtual Assistant Types
Getting Started
Create a Simple Bot
SKILLS
Storyboard
Dialog Tasks
Introduction
Dialog Builder (New)
Dialog Builder (Legacy)
User Intent Node
Dialog Node
Entity Node
Supported Entity Types
Composite Entities
Supported Colors
Supported Company Names
Form Node
Logic Node
Message Nodes
Confirmation Nodes
Bot Action Node
Service Node
Custom Authentication
2-way SSL for Service nodes
Script Node
Agent Transfer Node
WebHook Node
Grouping Nodes
Connections & Transitions
Manage Dialogs
User Prompts
Knowledge Graph
Terminology
Building
Generation
Importing and Exporting
Analysis
Knowledge Extraction
Train
Build
Alert Tasks
Introduction
Ignore Words and Field Memory
How to Schedule a Smart Alert
Small Talk
Digital Views
Introduction
How to Configure Digital Views
Digital Forms
Overview
How to Configure Digital Forms
NATURAL LANGUAGE
Overview
Machine Learning
Introduction
Model Validation
Fundamental Meaning
Introduction
NLP Guidelines
Knowledge Graph
Traits
Introduction
How to Use Traits
Ranking and Resolver
Advanced NLP Configurations
INTELLIGENCE
Overview
Context Management
Overview
Session and Context Variables
Context Object
How to Manage Context Switching
Manage Interruptions
Dialog Management
Sub Intents & Follow-up Intents
Amend Entity
Multi-Intent Detection
Sentiment Management
Tone Analysis
Sentiment Management
Event Based Bot Actions
Default Conversations
Default Standard Responses
TEST & DEBUG
Talk to Bot
Utterance Testing
Batch Testing
Record Conversations
Conversation Testing
CHANNELS
PUBLISH
ANALYZE
Overview
Dashboard
Custom Dashboard
Overview
How to Create Custom Dashboard
Conversation Flows
NLP Metrics
ADVANCED TOPICS
Universal Bots
Overview
Defining
Creating
Training
Customizing
Enabling Languages
Store
Smart Bots
Defining
koreUtil Libraries
SETTINGS
Authorization
Language Management
PII Settings
Variables
Functions
IVR Integration
General Settings
Management
Import & Export
Delete
Bot Versioning
Collaborative Development
Plan Management
API GUIDE
API Overview
API List
API Collection
SDKs
SDK Overview
SDK Security
SDK App Registration
Web SDK Tutorial
Message Formatting and Templates
Mobile SDK Push Notification
Widget SDK Tutorial
Widget SDK – Message Formatting and Templates
Web Socket Connect & RTM
Using the BotKit SDK
Installing
Configuring
Events
Functions
BotKit SDK Tutorial – Agent Transfer
BotKit SDK Tutorial – Flight Search Sample Bot
Using an External NLP Engine
ADMINISTRATION
HOW TOs
Create a Simple Bot
Create a Banking Bot
Transfer Funds Task
Update Balance Task
Context Switching
Using Traits
Schedule a Smart Alert
Configure UI Forms
Add Form Data into Data Tables
Configuring Digital Views
Add Data to Data Tables
Update Data in Data Tables
Custom Dashboard
Custom Tags to filter Bot Metrics
Patterns for Intents & Entities
Build Knowledge Graph
Global Variables
Content Variables
Using Bot Functions
Configure Agent Transfer
RELEASE NOTES

ユニバーサルボットのトレーニング

ユニバーサルボットをトレーニングして、インテントが特定される最も関連性の高いリンクボットに誘導することができます。呼び出しフレーズとトレーニング発話を組み合わせて使用し、ボット識別トレーニングを定義することができます。

ユニバーサルボットのトレーニングは、以下の理由により必要不可欠です。

  • ユーザーの発話が関連するリンク先のボットにルーティングされるようにするため。
  • トレーニング発話または呼び出し名は、ユニバーサルボットがリンクされたボットを識別するのに役立ち、ユーザーの発話をこれらの識別済みのリンクされたボットにルーティングします。
  • リンクされたボットが適格でない場合は、発話が、リンクされたボットにフォールバックボットとしてルーティングされます。
  • 発話テストモジュールからリンクされたボットの特定フローを確認することが不可欠です。

トレーニング

次のセクションでは、ユニバーサルボットを効率的かつ機能的にするためのトレーニング手順、およびベストプラクティスについて詳述しています。

ユニバーサルボットのトレーニングは、「ボットの識別」を目的としたものであり、標準ボットに用意されているような「インテントの識別」を目的としたものではないことを覚えておいてください。発話は、識別済みのリンクされたボット(何も識別されなかった場合はフォールバックボット)にルーティングされます。

ユニバーサルボットのトレーニングは、以下の3つの方法で行われます。

  1. 特定のリンクされたボットの特定のインテントを識別するための、呼び出しフレーズを使用したトレーニング。
  2. 特定のリンクされたボットを識別するのに役立つ、呼び出し名を使用したトレーニング。
  3. リンクされたボットをスコーピングするための、ユーザーの発話を使用したトレーニング。

注意: インクルーシブボットにはトレーニングは必要ありません。同一トレーニングを選択した場合、トレーニングはボットのスコーピングには使用されませんが、リンクされたボットがインクルーシブボットとして選択解除された場合、このトレーニングは後で使用されます。

トレーニングは、ユニバーサルボットの左ナビゲーションパネルの自然言語 > トレーニングオプションから行うことができます。

このドキュメントでは、お客様がすでにユニバーサルボットを作成し、ボットをリンクしていることが想定されていることにご注意ください。ステップはこちらを参照してください

呼び出しフレーズ

呼び出しフレーズとは、特定のリンクされたボットへの参照と、その特定のリンクされたボットからのインテントを含む典型的なフレーズを指します。

例えば、「休暇の残存日数が十分あるかどうか、人事部に確認してもらえませんか?」や、「Salesforceの最新のリードを表示してください」などです。

各呼び出しフレーズは以下のコンポーネントで構成されています。

  • リンク先のボットを特定するためのトリガーフレーズ。以下で構成されています。
    • トリガーワードのサポートは、プラットフォームがデフォルトで提供しており、このサポートは言語固有の値にも拡張されています。サポートされているトリガーワードの一覧は以下を参照してください。詳細は以下をご確認ください
    • 呼び出し名は、リンクされたボット名の同義語と見なすことができます。詳細は以下をご確認ください
  • インテントフレーズは、ユーザーが実行したいリンク先のボットに関連するタスクです。

パターン

トリガーフレーズと呼び出し名の存在は、以下のパターンルールに従うものとします。

パターン <trigger words> <intent words> <connecting words> <呼び出し名> <question words>
<intent words><connecting words><Invocation name> Not relevant * by, from, in, with, using User defined Not relevant
Get nearby restaurants using Zomato
<Trigger words><Invocation name>
{ <connecting words> }
{ <question words> }
<intent words>
Ask, Tell * to, about, for, if, whether User defined what, when, where, how, which, why
Uberに乗車予約を依頼する
またはCleaに今日のスケジュールを確認したい旨を伝える
<Trigger words><Invocation name> <connecting words><intent words> Ask, Tell, Search, Open, Talk to, Launch, Start, Run, Resume, Load, Begin, Use * and, to User defined Not relevant
YouTubeを起動してFilterCopyの動画を再生

トリガーワード

プラットフォームでは、以下のトリガーワードがデフォルトでサポートされています(多言語サポートについてはこちらを参照してください)。

  • 許可を得る
  • 伝える
  • 検索
  • 開く
  • 読み込む
  • 始める
  • 稼働
  • 話す
  • 実行

呼び出し名

リンクされたボットの名前は、暗黙の呼び出し名とみなされます。

これとは別に、リンクされた各ボットに1つ以上の呼び出し名を定義することができます。これらは、リンクされたボット名に対して定義された特別な同義語のセットとして扱われ、ボットユーザーがリンクされたボットを参照する際にこれらを使用する場合があります。

アタランス

トレーニング発話とは、ユーザーがリンクされたボットにインテントを要求する際の典型的な方法を指します。これには通常、リンクされたボットのインテントをトレーニングするために使用される、主なトレーニング発話が含まれます。MLのトレーニングとは異なり、これらの発話は1つのボットを特定するのではなく、複数のリンクされたボットを特定できることにご留意ください。

最大500個のトレーニング発話を追加することができます。

リンクされたボットからコピーオプションを使用して、リンクされたボットの発話を選択して追加することもできます。

リンクされたボットの一覧ページから、トレーニング状況や呼び出し名、トレーニング発話の概要を確認することができます。

フレーズの終了

以下のトリガーワードは、ユーザーがリンクされたボットのコンテキスト全体を終了するために使用することができます。

  • 終了

設定

リンクされた各ボットに対して、インテントの識別プロセスでボットを認証するために必要な最小スコアとして、ボットの適格性判定基準を設定することができます。バージョン8.1で導入されたこの設定は、ユニバーサルボットレベルでのMLしきい値設定に代わるものです。

デフォルトでは0.3に設定されていますが、0~1の任意の値に設定することができます。

フォールバックボット

特定のボットをフォールバックボットとしてマークしておけば、別のトレーニングオプションで他のボットが検出されなかった場合に、インテントの検出に使用することができます。

注意

  • 一度にフォールバックボットとしてマークできるボット数は最大15です。
  • ビジネスニーズに応じて、優先するボット一覧をいつでも変更することができます

インクルーシブボット

インクルーシブボットは、ボットのスコーピングプロセスに参加するためのサンプル発話のトレーニングを必要としません。これらのボットは、ユーザーの発話を評価する際に、ユーザーが’「呼び出しフレーズ」または「トリガーフレーズ」を使用してリンクされたボットを起動した場合を除いて、常にインテント検出の対象となります。
インクルーシブボットとしてマークできるリンクされたボット数は最大15です。

注意: リンクされたボットは、フォールバックまたはインクルーシブのいずれかとしてマークされますが、両方マークされることはありません。

リンクされたボット

コンテキスト内のリンクされたボットに関連する情報は、以下のキーの下にあるセッションコンテキストで利用することができます。

  • リンクされたボットのIDに対してcurrentLinkedBotid
  • リンクされたボット名に対してcurrentLinkedBotName

対象ボット

ユニバーサル ボットの開発者は、特定のボットを特定のエンドユーザーに割り当てて、そのボットからのインテントのみが利用されるようにすることができます。

対象ボットに関連して、以下の関数が利用できます。

  • 与えられるユーザー コンテキストに対する、現在の対象ボットの一覧を取得する:
    UserContext.getEligibleBots()
  • 対象ボットを設定する:
    UserContext.setEligibleBots([""st-linkedBot1"",""st-linkedBot2""])
    st-linkedBot1st-linkedBot2 などは、 リンクされたボットの ID を示します。 ([設定] -> [構成設定] -> [一般設定] より取得されたもの)
    この関数は、現在の対象ボットを与えられるものと置き換えます。
  • 与えられるユーザー コンテキストに対する、現在の対象ボットの一覧を削除する:
    UserContext.removeEligibleBots()

ユーザーの承認に応じて、または組織が導入しているその他の手法で対象ボットを設定することができます。

設定で、ボットの割り当てが指定されていない場合のボットの動作を定義することができます。詳しくはこちらをご覧ください。

設定

環境設定は、左のナビゲーションメニューの自然言語 > トレーニング > 設定からアクセスすることができます。

以下の設定がボットビルダーに用意されており、これらのしきい値を設定することができます。

  • ボットの同義語の使用 – インテント検出におけるボットの同義語の使用を有効または無効にするためのトグルです。デフォルトでは無効になっています。
  • インテントを可能性の高い一致と見なすための最小 ML スコアを定義するMLしきい値は、0~1の任意の値に設定することができます。デフォルト設定は0.3です。
    バージョン8.1以降では、この設定はリンクされた各ボットのボットの適格性判定基準に置き換えられています。上記をご確認ください
  • 旧バージョンへの切り替えから、ユニバーサルボットの旧バージョンに切り替えることができます。詳細はこちらをご確認ください
  • トリガーフレーズは、ユーザーがトリガーフレーズを使用して、つまりインテントを指定せずに、リンクされたボットをトリガーすることを可能にします。有効にすると、ボットの動作を以下のように定義することができます。
    • リンクされたボットで定義済みのウェルカムメッセージを表示する
    • カスタムメッセージを表示する応答を管理を使用して、表示されるメッセージを定義します。
  • 最近使用されたボットの設定は、リンクされたボットがトレーニングデータから特定されなかった場合に、リンクされたボットのスコープを絞り込むために使用されます。ボットは、ユーザーが最近使用したボットのを5つまで記憶するように設定することができます。
  • インテントの再スコアリングは、リンクされたボットのインテントを処理する際に、ユニバーサルボットの動作を定義するために使用することができます。デフォルトでは、ユニバーサルボットは、リンクされたボットから受け取ったインテントを再スコアリングし、上位インテントを特定します。このインテントの識別プロセスは、UBとリンクされたボットの両方で提供されるトレーニングに依存します。ただし、ユニバーサルボットが適切にトレーニングされていない場合には、再スコアリングによって誤ったインテントの識別が行われる可能性があります。上位インテントの識別のための、インテントの再スコアリングを無効にするオプションがあります。以下の設定(バージョン8.0から導入)が可能です。
    • 適格なインテントを再スコアリングして最適な一致の可能性を見つける – これはデフォルトの選択であり、さらに設定を変更することができます。
      • 一致の可能性の近接性は、トップスコアのインテントと可能性が次に高いインテントの間の最大許容差を定義し、それらを同等に重要であると見なします。0~20の間でパーセンテージを設定することができます。デフォルト設定は2%です。
    • 選択用にすべての適格なインテントをエンドユーザーに提示する – これは、1つ以上のリンクされたボットから複数の確定的および/または確率の高い一致が返された場合に、曖昧なインテントの一覧をユーザーに提示します。単一のリンクされたボットから1つのインテントのみが返された場合、そのインテントが実行されます。

  • ボットの割り当ての動作は、適格なボットが特定のユーザーに設定されていない場合の動作を定義するために使用することができます(こちらをご確認ください)。以下の設定が可能です。
    • すべての子ボットを割り当てる:リンクされたすべてのボットが適格です。これはデフォルト設定です。
    • 子ボットを割り当てない:ユーザーはリンクされたボットに対して適格ではありません。

導入

ユニバーサルボットの仕組みを見てみましょう。

ユニバーサルボットは、ユーザー入力を複数のステージで処理し、適切なボットを特定し、適切なインテントを呼び出します。

ステージ1 – ボットのスコーピング

ユーザーは、「Salesforceと話す」、「Evaに尋ねる」(EvaはHRのボット)などのトリガーフレーズや、「会議を予定する」、「タスクを追加する」などのパターンを使用して、リンクされたボットを呼び出すことができます。

  • ユーザーの発話(呼び出しフレーズ)が、リンクされたボット名(呼び出し名)に対して評価されます。
  • このボット名は、すべてのリンクされたボット名または適格なボット名(ユーザの適格性基準が定義されている場合)と比較され、1つ以上のスコーピング済みのリンクされたボットを絞り込みます。
    ボット適格性:組織内での役割またはチームとの関連性に基づき、様々なユーザーが様々なボットとスキルのセットにアクセスできる場合があります。制限されたスコープを使用することで、ユニバーサルボットは、ユーザーのアクセス制御に基づいて、より適切なボットを特定することができます。

ステージ2 – リンクされたボットに対するフォーク入力

ボットのセットがスコーピングされると、ユーザー入力はスコーピング済みのリンクされたボットすべてに送信されます。リンクされた各ボットからのインテントのランキングが蓄積され、さらに評価されます。

  • 発話は、インテントを識別するためにスコーピング済みのリンクされたボットに送信されます。
  • 識別されたインテントは、その後の評価および動作のために、ユニバーサルボットのランキングおよび解決に転送されます。

ステージ3 – ランキングおよび曖昧さの解消

リンクされたボットからの応答はランク付けされます。複数のボットがユーザー入力に対して適格である場合には、追加のコンテキストによって曖昧さを解消します。それができない場合は、曖昧さの解消のためのダイアログがボットユーザーに表示されます。

ステージ4 – 達成度の呼び出し

  • 上位インテントが実行されます。
  • 上位インテントがない場合:
    • ユニバーサルボットは、スモールトークのインテントが一致しているかどうかを確認します。
    • フォールバックボットが実行されます。

OVERVIEW
Virtual Assistants
Kore.ai Platform
Key Concepts
Natural Language Processing (NLP)
Accessing Platform
VIRTUAL ASSISTANTS
Virtual Assistant Builder
Virtual Assistant Types
Getting Started
Create a Simple Bot
SKILLS
Storyboard
Dialog Tasks
Introduction
Dialog Builder (New)
Dialog Builder (Legacy)
User Intent Node
Dialog Node
Entity Node
Supported Entity Types
Composite Entities
Supported Colors
Supported Company Names
Form Node
Logic Node
Message Nodes
Confirmation Nodes
Bot Action Node
Service Node
Custom Authentication
2-way SSL for Service nodes
Script Node
Agent Transfer Node
WebHook Node
Grouping Nodes
Connections & Transitions
Manage Dialogs
User Prompts
Knowledge Graph
Terminology
Building
Generation
Importing and Exporting
Analysis
Knowledge Extraction
Train
Build
Alert Tasks
Introduction
Ignore Words and Field Memory
How to Schedule a Smart Alert
Small Talk
Digital Views
Introduction
How to Configure Digital Views
Digital Forms
Overview
How to Configure Digital Forms
NATURAL LANGUAGE
Overview
Machine Learning
Introduction
Model Validation
Fundamental Meaning
Introduction
NLP Guidelines
Knowledge Graph
Traits
Introduction
How to Use Traits
Ranking and Resolver
Advanced NLP Configurations
INTELLIGENCE
Overview
Context Management
Overview
Session and Context Variables
Context Object
How to Manage Context Switching
Manage Interruptions
Dialog Management
Sub Intents & Follow-up Intents
Amend Entity
Multi-Intent Detection
Sentiment Management
Tone Analysis
Sentiment Management
Event Based Bot Actions
Default Conversations
Default Standard Responses
TEST & DEBUG
Talk to Bot
Utterance Testing
Batch Testing
Record Conversations
Conversation Testing
CHANNELS
PUBLISH
ANALYZE
Overview
Dashboard
Custom Dashboard
Overview
How to Create Custom Dashboard
Conversation Flows
NLP Metrics
ADVANCED TOPICS
Universal Bots
Overview
Defining
Creating
Training
Customizing
Enabling Languages
Store
Smart Bots
Defining
koreUtil Libraries
SETTINGS
Authorization
Language Management
PII Settings
Variables
Functions
IVR Integration
General Settings
Management
Import & Export
Delete
Bot Versioning
Collaborative Development
Plan Management
API GUIDE
API Overview
API List
API Collection
SDKs
SDK Overview
SDK Security
SDK App Registration
Web SDK Tutorial
Message Formatting and Templates
Mobile SDK Push Notification
Widget SDK Tutorial
Widget SDK – Message Formatting and Templates
Web Socket Connect & RTM
Using the BotKit SDK
Installing
Configuring
Events
Functions
BotKit SDK Tutorial – Agent Transfer
BotKit SDK Tutorial – Flight Search Sample Bot
Using an External NLP Engine
ADMINISTRATION
HOW TOs
Create a Simple Bot
Create a Banking Bot
Transfer Funds Task
Update Balance Task
Context Switching
Using Traits
Schedule a Smart Alert
Configure UI Forms
Add Form Data into Data Tables
Configuring Digital Views
Add Data to Data Tables
Update Data in Data Tables
Custom Dashboard
Custom Tags to filter Bot Metrics
Patterns for Intents & Entities
Build Knowledge Graph
Global Variables
Content Variables
Using Bot Functions
Configure Agent Transfer
RELEASE NOTES

Training a Universal Bot

You can train a Universal Bot to guide it to the most relevant link bot(s) from which the intents are to be identified. You can use a combination of Invocation Phrases and Training Utterances to define the Bot Identification Training.

Training a Universal Bot is essential for the following reasons:

  • To ensure that the user utterances are routed to the relevant linked bots.
  • Training Utterances or Invocation Names help the Universal Bot to identify the linked bots and route the user utterances to these identified linked bots.
  • In case no linked bots are qualified, then the utterances are routed to the linked bots as Fallback Bots.
  • It is essential that you review the linked bot identification flow from the Utterance Testing module.

Training

In the following section, we elaborate on the training steps and best practices to make your Universal Bot efficient and functional.

Remember that the training for Universal bot should be aimed at ‘bot identification‘ and not for ‘intent identification‘ as provided for any standard bot. The utterance will be routed to the identified linked bots (or fallback bot if nothing is identified).

Training a Universal Bot is a three-way process:

  1. Train with Invocation Phrases to identify a specific intent in a specific linked bot;
  2. Train with Invocation Names that would help identify a specific linked bot;
  3. Train with user utterance for scoping linked bots.

Note: Inclusive bots need not be trained. If you choose to train the same, the training will not be used for bot scoping but will be used later if the linked bot is deselected as an Inclusive Bot.

Training can be done from the Build tab from the top menu, selecting the Natural Language -> Linked Bot Training option.

Note the expectation of this document is that you have already created a Universal Bot and have linked bots to the same. Refer here for steps.

Invocation Phrases

Invocation Phrases refer to the typical phrases that contain a reference to a specific linked bot and intent from that specific linked bot.

For example – ‘Can you check with HR if I have enough leave balance’, or ‘show my latest leads from salesforce’, etc.

Each invocation phrases constitute the following components

  • Trigger Phrase to identify the linked bot. It consists of:
    • Trigger word support is provided by the platform by default and this support is extended to language-specific values, too. Refer below for the list of supported trigger words. See below for details.
    • Invocation Name can be regarded as synonyms for the linked bot names. See below for details.
  • Intent Phrase would be the task related to the linked bot that the user wants to perform.

Patterns

The presence of trigger phrase and invocation name should follow the below mentioned pattern rules:

Pattern <trigger words> <intent words> <connecting words> <invocation Names> <question words>
<intent words><connecting words><Invocation name> Not relevant * by, from, in, with, using User defined Not relevant
Example Get nearby restaurants using Zomato
<Trigger words><Invocation name>
{ <connecting words> }
{ <question words> }
<intent words>
Ask, Tell * to, about, for, if, whether User defined what, when, where, how, which, why
Example Ask Uber to book my ride
or Tell Clea I want today’s schedule
<Trigger words><Invocation name> <connecting words><intent words> Ask, Tell, Search, Open, Talk to, Launch, Start, Run, Resume, Load, Begin, Use * and, to User defined Not relevant
Example Launch Youtube to play videos from FilterCopy

Trigger Words

Following trigger words are supported by default in the platform (see here for multi-lingual support):

  • Ask
  • Tell
  • Search
  • Open
  • Load
  • Begin
  • Launch
  • Talk to
  • Run

Invocation Names

The Linked bot’s name is considered as an implicit invocation name.

Apart from this, you can define one or more Invocation Names for each of the linked bots. These will be treated as a special set of synonyms defined against linked bot names and the bot users might be using these when referring to the linked bots.

Utterances

Training utterances refer to the typical ways in which the users are expected to ask for intent from a linked bot. This usually includes the key training utterances used for training the intents of the linked bots. Keep in mind unlike the ML training, these utterances can identify multiple linked bots not zero it on one.

You can add up to 500 training utterances.

You can also use the Copy from linked bot option to choose and add the utterances from the linked bot.

From the Linked Bot listing page, you can get an overview of their training status and invocation names, and training utterances.

Exit Phrase

Following trigger words can be used by the user to exit from an exclusive context of a linked bot.

  • Exit

Configurations

For each linked bot, you can set the Bot Qualification Threshold as the minimum score needed to qualify the bot for the intent identification process.

By default, it is set to 0.3 and can be set to any value between 0 and 1.

Fallback Bots

You can mark certain bots as fallback bots which would be used for detecting intents when no other bots are identified from other training options.

Points to note:

  • A maximum of 15 bots can be marked as Fallback Bots
  • You can change the list of preferred bots at any time to suit the business needs

Inclusive Bots

Inclusive bots need not be trained with sample utterances to participate in the bot scoping process. These bots will always be considered for Intent Detection at the time of evaluating the user utterances, except when the user invokes a linked bot either using ‘Invocation Phrases’ or ‘Trigger Phrases’.
Up to 3 linked bots can be marked as inclusive bots.

Note: A linked bot can be marked either as Fallback or Inclusive not both.

Linked Bots

The information related to the in-context linked bot would be available in the Session context under the following key:

  • currentLinkedBotid for Linked Bot ID;
  • currentLinkedBotName for Linked Bot name.

Eligible Bots

As Universal Bot developer you have the ability to assign specific bots to specific end-users so that only the intents from these bots are made available to them.

The following functions can be used in relation to eligible bots:

  • To get the list of currently eligible bots for the given user context:
    UserContext.getEligibleBots()
  • To set the eligibility bots:
    UserContext.setEligibleBots(["st-linkedBot1","st-linkedBot2"])
    where st-linkedBot1, st-linkedBot2, etc. are the bot ids of the linked bots (obtained from Setting -> Config Settings -> General Setting)
    This function will replace the current eligible bots with the ones given.
  • To remove the list of currently eligible bots for the given user context:
    UserContext.removeEligibleBots()

You can set the eligible bots based on the user authorization or any other approach that your organization may have in place.

You can also define the bot behavior when the bot assignments are not provided, from the settings, see below.

Settings

The configuration settings can be accessed from the Build top menu tab, left menu, under Natural Language -> Settings

Following configurations are to be provided in the Bot Builder so that you can configure these thresholds:

  • Use of Bot Synonyms – toggle to enable or disable the use of bot synonyms in intent detection. Disabled by default.
  • ML threshold to define the minimum ML score to qualify an intent as a probable match can be set to any value between 0 and 1. The default setting is 0.3.
    Post v8.1, this setting has been replaced with Bot Qualification Threshold for each linked bot, see above.
  • Switch to Older Version can be used to switch to an older version of Universal Bots. See here for details.
  • Trigger Phrases can be used to allow users to trigger linked bots using Trigger Phrases i.e. without specifying the intent. Once enabled you can define the bot behavior to
    • display the Welcome message defined in the linked bot, or
    • show a custom message. Use Manage response to define the message to be displayed.
  • Recently Used Bots setting can be used to refine the scoping linked bots when no linked bot is identified from training data. The Bot can be configured to remember up to 5 recently used by the user.
  • Intent Rescoring can be used to define Universal Bot behavior while handling the linked bot intents. By default, the universal bot rescores the intents received from the linked bots to identify the winning intents. This intent identification process depends on the training provided both at the UB and the linked bot. But if the universal bot is not trained properly, rescoring might lead to wrong intent identification. You have an option to disable the intent rescoring for winning intent identification. The setting (introduced in ver8.0) can be:
    • Rescore the qualified intents to find the best possible match – this is the default selection and you can further configure
      • The proximity of Probable Matches to define the maximum difference allowed between top-scoring and immediate next possible intents to consider them as equally important. It can be set to a percentage between 0 and 20. The default setting is 2%.
    • Present all the qualified intents to the end-user for selection – this would present the list of ambiguous intents to the user if multiple definitive or/and probable matches are returned from one or more linked bots. If only one intent is returned by a single linked bot then that intent is executed.
  • Bot Assignment Behaviour can be used to define the behavior when the eligible bots are not set for a given user (see here). The setting can be:
    • Assign all Child Bots: All linked bots are eligible. This is the default setting.
    • Do not Assign any Child Bot: The user is not eligible for any of the linked bots.

Implementation

Let us look at how the Universal Bot works.

The universal bot processes user input in multiple stages to identify appropriate bot and invoke the appropriate intent.

Stage 1 – Scoping of Bots

Users should be able to use trigger phrases like “Talk to Salesforce”, “Ask Eva” (Eva being HR bot), or patterns like “Schedule a meeting” or “add a task” to invoke the linked bot.

  • The user utterance (invocation phrase) is evaluated for linked bot name (invocation name).
  • This bot name is compared with all linked bot names or eligible bot names (in case eligibility criteria for the user is defined) to shortlist one or more scoped linked bots.
    Bot Eligibility: Different users may have access to a different set of bots/skills based on their role or association with teams, in the organization. Using the restricted scope, the universal bot will be able to identify more appropriate bot based on the user’s access controls.

Stage 2 – Fork input to linked bots

Once a set of bots have been scoped, the user input is sent to all the in-scope linked bots. The ranking of intents from each of the linked bots is accumulated and further evaluated.

  • The utterance is sent to the scoped linked bots for intent identification.
  • Identified intents are then forwarded back to universal bot’s ranking and resolver for further evaluation and action.

Stage 3 – Ranking and Disambiguation

Response from the linked bots is ranked and, if more than one bot is qualified for user input, disambiguated using additional context. If not possible then disambiguation dialog is presented to the bot user.

Stage 4 – Invoke fulfillment

  • The winning intent is executed.
  • In the case of no winning intent:
    • the universal bot is checked for matching small talk intents.
    • the Fallback bot is executed.

Next Steps

  • You can also look into how the Universal Bot can be customized by defining the default dialog and variables from here.
  • Learn to enable additional languages from here.