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

エンティティルール

これらの値処理前のユーザー入力の検証は、Botの効率性とユーザー体験を改善する上で大きな役割を果たします。エンティティタイプが基本的制限を課さない一方、これらは必ずしも十分ではなく、特定のビジネス要件を満たしません。エンティティルールは追加処理のヒントと検証に使用できます。エンティティルールは、エンティティルールセクションの、対応するエンティティの インスタンスプロパティから追加できます。提供されたJSONエディタにルールを追加します。 方法はこちらを参照してください。これらのルールはエンティティのスクリプトでも設定できます。その場合、ルールはダイアログフローのエンティティプロンプトの前に設定する必要があります。スクリプトノードを、以下のスクリプトでダイアログの開始時、または関連エンティティノードの直前に追加します。

context.entityRules.<entityName> = { "ruleName": "value" }

サブエンティティルールは複合エンティティルールの一部にできます。

context.entityRules.<compositeEntityName> = { <subentityName> : { "ruleName": "value" } }

以下は、必要なエンティティのJSONエディタに入力できる、または上のスクリプトに ruleName として含めることができるエンティティルールです。このリストは引き続き改善および更新していきます。フィードバックまたは提言がある場合は、コミュニティフォーラムに投稿していただければ、可能な場合は当社の開発者が対応します。

汎用ルール

ruleName 説明
processLatestSentence 真/偽 文章のチェックの制限は、現在のボレーからのみです。

{ "processLatestSentence": <true/false> }
patternsOnly 真/偽 エンティティパターンのみの一致に制限します。デフォルトで、指定されたエンティティパターンがエンティティ値を抽出しない場合、プラットフォームはユーザーの発話から値を検索します。このルールを真に設定すると、そのデフォルト処理は無効化されます。

{ "patternsOnly": <true/false> }
allowConfirmation 真/偽 抽出されたエンティティ値は、各入力後にユーザーに表示され、フローはユーザーが確認後にのみ続行します。現在、このルールはLoV 列挙されたエンティティタイプにのみ適用されます。

{ "allowConfirmation": <true/false> }
confirmYesSynonyms <concept names> エンティティ値の確認に使用される追加語/語句。上で述べたallowConfirmationルールと合わせて使用されます。

{ "confirmYesSynonyms": ["~concept1", "~concept2"] }

where concept1: ok; concept2: affirmative

confirmNoSynonyms <concept names> 確認エンティティのキャンセルに使用される追加語/語句。選択/言葉に出すと、エンティティ値はnullに設定され、上で述べたallowConfirmationルールと併せて使用されます。

{ "confirmNoSynonyms": ["~concept2", "~concept3"] }

where concept1: nope; concept2: wrong

文字列型エンティティ

説明エンティティタイプ

ruleName 説明
stripLeading <コンセプト名> 抽出文字列の先頭からコンセプトで指定された語を削除します。コンセプトは単一コンセプト名またはスペースで区切ったコンセプトのリスト、またはコンセプト名のアレイにできます。
JSON

{ "stripLeading": [ "~stringConcept" ] }
stringConcept:  都市 エンティティパターン: 私は* ユーザー発話が好きです 「ニューーヨーク市が好きです抽出値 ニューヨーク
stripTrailing <コンセプト名> 抽出文字列の末尾からコンセプトの語を削除します。値は単一コンセプト名またはスペースで区切ったコンセプトのリスト、またはコンセプト名のアレイにできます。
JSON

{ "stripTrailing": "~stringConcept ~stringConcept1" }
stringConcept:  city; stringConcept1:  空港 エンティティパターン: 私は * ユーザー発話が好きです 「私はニューヨーク市が好きです」または「私はニューヨーク空港が好きです抽出値 ニューヨーク
avoidSingleWord <コンセプト名> 入力全体でない限り、コンセプトのメンバーであるすべての値を削除します。値は単一コンセプト名またはスペースで区切ったコンセプトのリスト、またはコンセプト名のアレイにできます。
JSON

{ "avoidSingleWord": "~stringConcept" }
stringConcept:  チェス、クリケット エンティティパターン: * トーナメントを観るのが好きです ユーザー発話私はチェストーナメントを観るのが好きです抽出値 エンティティ値のプロンプト ユーザー発話 私はゴルフトーナメントを観るのが好きです抽出値 ゴルフ ユーザー発話クリケット抽出値 クリケット、入力全体でないため。
avoidSingleVerb 真に設定される場合は、単なる動詞である値は、入力全体でない限り、無視されます。
JSON

{ "avoidSingleVerb": true }
エンティティパターン: 私は* 音楽が好きです ユーザー発話私は音楽の演奏が好きです抽出値 エンティティ値のプロンプト ユーザー発話私はラップミュージックが好きです抽出値 ラップ ユーザー発話演奏抽出値 演奏、入力全体でないため。
extractOnlyNumbers 真の場合、エンティティは文字列に表示される番号のみがエンティティ値として設定されます。
JSON

{ "extractOnlyNumbers": true }

数字型エンティティ

ruleName 説明
asString 数字を文字列として取得するには、先行ゼロにします。
JSON

{ "asString": true }
エンティティパターン – デフォルトで数値入力 ユーザー発話 「OTPは009944です抽出値 ルールなし「009944」、 「9944」であったはずです。

通貨型エンティティ

ruleName 説明
defaultCode <通貨コード> または <国コード> ユーザー入力でコードガ述べられてない場合、この値はコードとして選ばれます。値は 3 文字の通貨コードまたは2文字のアルファ2コードである必要があります。
JSON

{ "defaultCode": "NZD" }
エンティティパターン 支払 * ユーザー発話 30支払抽出値NZD30ユーザー発話 USD30支払抽出値USD30
maxDigits <数値> 金額長を制限します。金額長が値を超えると破棄されます。
JSON

{ "maxDigits":[ "3" ] }
エンティティパターン 支払 * ユーザー発話 USD30支払抽出値USD30ユーザー発話 USD3000支払抽出値 値のプロンプト
currencyCodes [<通貨コード>、<通貨コード>] または [<国コード>、<国コード>] 通貨コードを制限します。ユーザーが入力した値が指定リストにない場合は、値は破棄されます。
JSON

{ "currencyCodes": [ "USD", "INR", "NZD" ] }
エンティティパターン 支払 * ユーザー発話 USD30支払抽出値USD30ユーザー発話 AUD30支払抽出値 値のプロンプト

PersonName type entity

ruleName Value Description
disablePatterns An array of person name patterns to ignore – currently supporting only “possessive To disable patterns in extracting a person’s name when not applicable in specific scenarios.
Example
JSON

{
  "disablePatterns": [
    "possessive"
  ]
}
Entity Pattern – by default capitalized words

User Utterance “schedule Bob’s review at 9 am”
Extracted ValueBob

ignoreWords <concept name> Words in the concept are not to be considered as names even when capitalized.

The concept name could be a space-separated list of concepts or an array of concepts.

Example
JSON

{
  "ignoreWords": [
    "review",
    "~prepositionList"
  ]
}
Entity Pattern – by definition capitalized words

User Utterance “meeting for Bob Review”
Extracted ValueBob
would have been “Bob Review” without the rule

negativePatterns array of patterns Person names can be general capitalized words, or a name can be used in a sense where it is not meant to be taken as a person.
Example
JSON

{
  "negativePatterns": [
    "about *"
  ]
}
Entity Pattern – by definition capitalized words

User Utterance “schedule a meeting about Philip with Fred”
Extracted ValueFred
would have been “Philip” without the rule

会社型エンティティ

ruleName 説明
ignoreWords <コンセプト名> コンセプト内の語は、大文字で書かれている場合でも会社とはみなされません。コンセプト名はスペースで区切ったコンセプトのリスト、またはコンセプトのアレイにできます。
JSON

{ "ignoreWords": [ "atm" ] }
エンティティパターン – 大文字で書かれた語の定義による ユーザー発話 「ATM検索」 抽出値 いずれもルールなしの「ATM」(イタリアの会社)ではなかったはずです。
negativePatterns 無視する会社名パターンのアレイ 特定のシナリオに適用されない場合は、会社名を抽出するパターンを無効化します。

Date type entity

ruleName Value Description
range { “from” : <from-date>, “to” : <to-date> } To extract dates only in the specified range. Either endpoint is optional.

Values can be a date, YYYY-MM-DD, or a keyword: today, tomorrow, yesterday. The dates are inclusive.

Example
JSON

{
"range": {
   "from": "2020-01-01",
   "to": "today"
  }
}
Entity Pattern – by default date patterns

User Utterance “show schedule for 2019-02-03”
Extracted Value prompt for a value

User Utterance “show schedule for tomorrow”
Extracted Value prompt for a value

User Utterance “show schedule  for 2020-02-03”
Extracted Value “2020-02-03”

referenceDate <date> Sets the reference date to <date> and any date calculation to set the current date entity value is based on that date.

Values should be a date, YYYY-MM-DD, or a keyword: today, tomorrow, yesterday.

Example
JSON

{
  "referenceDate": "2020-07-09"
}
Entity Pattern – by default date patterns

User Utterance “schedule after two days”
Extracted Value “2020-07-11”
would have been two days from the current date without the reference date

preferredDateFormat “yyyy-mm-dd” In case of ambiguity in date, it uses the preferred date format to resolve ambiguity.
Values can be:

  • “yyyy-mm-dd”
  • “yyyy-dd-mm”
  • “ddmmyyyy”
  • “mmddyyyy”
Example
JSON

{
  "preferredDateFormat": "mm-dd-yyyy"
}
User Utterance “03-04-2021”
Extracted Value “2021-03-04”
NOTE: This rule comes into the picture only when there is an ambiguity in the user utterance. If the user’s preference is already set as part of a previous conversation, then the user selected format would take precedence over the defined rule
For example, a per the previous use case, if the user had selected the preferred format to be “dd-mm-yyy” previously in the conversation then the date would be taken as “2021-04-03”

Date Period type entity

ruleName Value Description
range { “from” : <from-date>, “to” : <to-date> } To extract dates only in the specified range. Either endpoint is optional.

Values can be a date, YYYY-MM-DD, or a keyword: today, tomorrow, yesterday. The dates are inclusive.

Example
JSON

{
"range": {
   "from": "2020-01-01",
   "to": "today"
  }
}
Entity Pattern – by default date patterns

User Utterance “show schedule for 2019-02-03”
Extracted Value prompt for a value

User Utterance “show schedule for tomorrow”
Extracted Value prompt for a value

User Utterance “show schedule  for 2020-02-03”
Extracted Value “2020-02-03”

referenceDate <date> Sets the reference date to <date> and any date calculation to set the current date entity value is based on that date.

Values should be a date, YYYY-MM-DD, or a keyword: today, tomorrow, yesterday.

Example
JSON

{
  "referenceDate": "2020-07-09"
}
Entity Pattern – by default date patterns

User Utterance “schedule after two days”
Extracted Value “2020-07-11”

tense past/future To adjust the date period based on the tense when the year is not present in the user utterance.

Without this rule, the year is set as the current year if the month/day falls within 90 days from the current date else it would be set to the previous year. With this rule, you can force the year to current or past.

Example
JSON

{
 "tense": "past"
}
Entity Pattern – by default date patterns

User Utterance “get the statement for Jan”
Extracted Value “2020-01-01” if the current date is “2020-15-12”
without the rule, it would have been “2021-01-01”

 

preferredDateFormat “yyyy-mm-dd” In case of ambiguity in date, it uses the preferred date format to resolve ambiguity.
Values can be:

  • “yyyy-mm-dd”
  • “yyyy-dd-mm”
  • “ddmmyyyy”
  • “mmddyyyy”
Example
JSON

{
  "preferredDateFormat": "mm-dd-yyyy"
}
User Utterance “03-04-2021”
Extracted Value “2021-03-04”
NOTE: This rule comes into the picture only when there is an ambiguity in the user utterance. If the user’s preference is already set as part of a previous conversation, then the user selected format would take precedence over the defined rule
For example, a per the previous use case, if the user had selected the preferred format to be “dd-mm-yyy” previously in the conversation then the date would be taken as “2021-04-03”

DateTime type entity

ruleName Value Description
range { “from” : <from-datetime>, “to” : <to-datetime> } To extract date-times only in the specified range. Either endpoint is optional.

Values can be a date, YYYY-MM-DD, or a DateTime, YYYY-MM-DDTHH:MM:SS (user’s timezone is assumed if none specified) or a keyword: today, tomorrow, yesterday, now. The dates are inclusive.

Example
JSON

{
  "range": {
    "from": "2020-01-01T00:00:00+05:30",
    "to": "2020-10-01T00:00:00+05:30"
  }
}
Entity Pattern – by default date time patterns

User Utterance “set alarm for 2019-02-03T10:00:00”
Extracted Value prompt for a value

User Utterance “show schedule for 2021-12-20T10:00:00”
Extracted Value prompt for a value

User Utterance “show schedule  for 2020-02-03 T10:00:00”
Extracted Value “2020-02-03T10:00:00”

preferredTimes { “from” : <from-time>,
“to” : <to-time> }
To set the preferred time which can be used to interpret times when they are ambiguous. These times would be applicable to all days of the week.

For example, “3” will become “3 pm” if the preferredTimes are 9 am to 6 pm.

If the time cannot be placed inside the range then it will pick am/pm based on which is closest. If there are two possibilities or equal distance then the “daylight/standard awake” hours will be used. The times should be ISO 8601 format, THH:MM

{ “from” : [],
“to” : [] }
This option is for setting preferred times different for different days of the week. The “from” and “to” keys can be arrays with 7 members representing the time for each day, from Sunday to Saturday. Each value should be in the in Thh:MM format or an empty string to indicate there is no preference.
{ “favor” : <keyword> } The “favor” keyword can be used to set the preference in terms of “future”, “past”, “am”, or “pm”.
Example
JSON

 "preferredTimes": {
    "from": "T12:00:00",
    "to": "T18:00:00"
  }
Entity Pattern – by default date patterns

User Utterance “remind me at 3”
Extracted Value “T15:00:00”

JSON

 "preferredTimes": {
    "from": [
      "", "T09:00", 
      "T09:00", "T21:00", 
      "T21:00", "T07:00", ""
    ],
    "to": [
      "", "T18:00",
      "T18:00", "T06:00", 
      "T06:00", "T16:00", ""
    ]
  }
Entity Pattern – by default date patterns

User Utterance “remind me at 3”
Extracted Value “T15:00:00”, if the current day is Monday/Tuesday/Friday;
“T03:00:00”, if the current day is Wednesday/Thursday

JSON

 "preferredTimes": {
    "favor": "pm"
  }
Entity Pattern – by default date patterns

User Utterance “remind me at 3”
Extracted Value “T15:00:00”

timeRangePossible true/false If true then the dialog will be looking for time range in the user input.

Influences how “10 to 4” is interpreted. By default, this will be “3:50” but if there is the possibility of a range then will be decoded as 2 times “10:00” and “16:00”

Example
JSON

{
"timeRangePossible": "true"
}
 

 

preferredDateFormat “yyyy-mm-dd” In case of ambiguity in date, it uses the preferred date format to resolve ambiguity.
Values can be:

  • “yyyy-mm-dd”
  • “yyyy-dd-mm”
  • “ddmmyyyy”
  • “mmddyyyy”
Example
JSON

{
  "preferredDateFormat": "mm-dd-yyyy"
}
User Utterance “03-04-2021”
Extracted Value “2021-03-04”
NOTE: This rule comes into the picture only when there is an ambiguity in the user utterance. If the user’s preference is already set as part of a previous conversation, then the user selected format would take precedence over the defined rule
For example, a per the previous use case, if the user had selected the preferred format to be “dd-mm-yyy” previously in the conversation then the date would be taken as “2021-04-03”

時間型エンティティ

ruleName 説明
preferredTimes { “from” : <from-time>, “to” : <to-time> } 曖昧な場合は、時間の解釈に使用できる推奨時間を設定します。これらの時間は週のすべての日に適用されます。たとえば、preferredTimesが9 amから 6 pmの場合、「3」は「3 pm」となります。時間を範囲内に配置できない場合は、近似値に基づきam/pmが選ばれます。2つの可能性があるまたは等距離の場合は、「日照/標準起床」時間数が使用されます。時間は ISO 8601フォーマット、THH:MMにする必要があります。
{ “from” : [], “to” : [] } このオプションは週の異なる日に異なる優先時間を設定するものです。「開始」および「終了」キーは、日曜日から土曜日までの各日の時間を表す7メンバーのアレイにできます。各値は、参照がないことを示すThh:MMフォーマットまたは空の文字列である必要があります。
{ “favor” : <keyword> } 「好意」キーワードを使用して、「将来」、「過去」、「午前」または「午後」という点で優先度を設定できます。
JSON

"preferredTimes": { "from": "T12:00:00", "to": "T18:00:00" }
エンティティパターン – デフォルトで日付パターン ユーザー発話 「3時にリマインド」 抽出値 「T15:00:00」
JSON

"preferredTimes": { "from": [ "", "T09:00", "T09:00", "T21:00", "T21:00", "T07:00", "" ], "to": [ "", "T18:00", "T18:00", "T06:00", "T06:00", "T16:00", "" ] }
エンティティパターン – デフォルトで日付パターン ユーザー発話「3時にリマインド」 抽出値 「T15:00:00」、現在日が月曜日/火曜日/金曜日の場合、「T03:00:00」、現在日いが水曜日/木曜日の場合
JSON

"preferredTimes": { “favor” : "pm" }
エンティティパターン – デフォルトで日付パターン ユーザー発話 「3時にリマインド」 抽出値 「T15:00:00」
timeRangePossible 真/偽 真の場合、ダイアログはユーザー入力の時間範囲を検索します。
JSON { "timeRangePossible": "true" } 発話「10から4」がどのように解釈するかに影響します。デフォルトで、これは「3:50」となりますが、範囲の可能性がある場合は、2つの別の時間値「10:00」と「16:00」としてデコードされます。
範囲 { “from” : now, } または { “to” : now } 指定範囲の日付-時間のみを抽出します。どちらかのエンドポイントはオプションです。現在、サポートは値「今」だけに延長されています。
JSON

{ "range": { "from": now } }

都市 型エンティティ

ruleName 説明
ignoreWords <コンセプト名> コンセプト内の語は都市とみなされません。コンセプト名はスペースで区切ったコンセプトのリスト、またはコンセプトのアレイまたはスペースで区切った文字列にできます。
JSON

{ "ignoreWords": "Send" }
エンティティパターン – デフォルトで大文字で書かれた語 ユーザー発語 「私のメールへ宛先を送信」 抽出値 都市名であるため、ルールなしでエンティティ値のプロンプトが「送信」されました。

郵便番号型エンティティ

ruleName 説明
preferredCountries [<“country1”>,<“country2”>,..] ユーザーロケーション国および入力から収集した諸国とともに、優先諸国の指定セットからの郵便番号を制限します。<“country1”>,<“country2”>,…の代わりに2文字の国アルファ2コードを追加する必要があります。
JSON

{ "preferredCountries": [ "GB" ] }
エンティティパターン – デフォルトで郵便番号パターン ユーザー発話 PO16 7GZへの配達をチェック」 抽出値PO16 7GZ」、ルールがないと、ユーザーが英国地域にいない場合は無視された可能性があります。

ロケーション型エンティティ

ruleName 説明
preferredCountries [<“country1”>,<“country2”>,..] ユーザーロケーション国および入力から収集した諸国とともに、優先諸国の指定セットからロケーションを制限します。<“country1”>,<“country2”>,…の代わりに2文字の国アルファ2コードを追加する必要があります。
JSON

{ "preferredCountries": [ "GB" ] }

項目リスト(列挙)型エンティティ

ruleName 説明
所有権 内包/除外 可能性のある「所有権」語句、たとえば「私のもの」を検索し、選択の可能性をエンティティ値に含むべきか、除外すべきかを判断します。所有権語句の例は、「私のもの」、「私に属する」などです。
JSON

{ "ownership": "include" }
入力オプション – 以下の項目を選びます。「ペン」、「腕時計」、「ボトル」、「本」、「キャップ」 ユーザー発話「最初の2つは私のものです」 抽出値 [「ペン」、「腕時計」]
JSON

{ "ownership": "exclude" }
入力オプション – 以下の項目を選びます。「ペン」、「腕時計」、「ボトル」、「本」、「キャップ」 ユーザー発話「最初の2つは私のものです」 抽出値 [「ボトル」、「本」、「キャップ」]、ルールは所有値は除外であるため。
includeWords <concept name> または語のアレイ 所有権語句を補完する語のリスト。値は文字列またはコンセプトのアレイにできます。所有権: 内包ルールとともに使用されます。
JSON

{ "ownership": "include", "includeWords": "great" }
入力オプション – 以下の項目を選びます。「ペン」、「腕時計」、「ボトル」、「本」、「キャップ」 ユーザー発話 「最初の2つは私のものです」抽出値 [「ペン」、「腕時計」] ユーザー発話 「最初の2つはすごいです」抽出値 [「ペン」、「腕時計」]
excludeWords <コンセプト名> または語のアレイ 非所有権語句として使用できる語のリスト。値は文字列またはコンセプトのアレイにできます。所有権: 除外ルールとともに使用されます。
JSON

{ "ownership": "exclude",    "excludeWords": "~lovConcept" }
入力オプション – 以下の項目を選びます。「ペン」、「腕時計」、「ボトル」、「本」、「キャップ」 lovConcept – 疑わしいユーザー発話 「最初の2つは疑わしいです」抽出値 [「ボトル」、「本」、「キャップ」]
noIndexMatch アルファベットと数字のインデックス一致を無効化するために、ユーザーはインデックスを使用して項目を選択できません。
JSON

{ "noIndexMatch": "true" }
入力オプション – 以下の項目を選びます。「ペン」、「腕時計」、「ボトル」、「本」、「キャップ」 ユーザー発話 抽出値 入力のプロンプト、ルールがないと、それは [「ペン」] であったはずです。
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

Entity Rules

Validating user input before processing these values goes a long way in improving the bot’s efficiency and user experience. While the entity type does impose some basic restrictions, these are not always sufficient and does not cater to the specific business requirements. Entity rules can be used for additional processing hints and validations.

Entity rules can be added from the Entity Rules section under Instance Properties of the corresponding entity. Add the rule in the JSON editor provided, see here for how.

These rules can also be set in the script for an entity, in such cases, the rule needs to be set before the entity prompt in the dialog flow. Add a script node at the beginning of the dialog or just before the concerned entity node with the following script:

context.entityRules.<entityName> = {
      "ruleName": "value"
   }

Subentity rules can be part of the composite entity rules:

context.entityRules.<compositeEntityName> = {
    <subentityName> : { 
      "ruleName": "value"
     }
   }

Below are the entity rules that can be entered in the JSON editor for the required entity or included as ruleName in the above script. We are continuously improving and updating this list. Any feedback or suggestions, kindly post in the community forum and our developers will accommodate it, if feasible.

Generic rules

ruleName Value Description
processLatestSentence true/false To restrict checking to the sentences only from the current volley.
Example

{
 "processLatestSentence": <true/false>
}
patternsOnly true/false To restrict matching to an entity pattern alone. By default, if the given entity patterns do not result in the extraction of entity value, the platform tries to find a value from user utterance. Setting this rule to true will disable that default processing.
Example

{
"patternsOnly": <true/false>
}
allowConfirmation true/false The extracted entity value is presented to the user after each input and the flow would continue only after confirmation from the user. Currently, this rule is applicable only for LoV enumerated entity types.
Example

{
"allowConfirmation": <true/false>
}
confirmYesSynonyms <concept names> Additional words/phrases to be used to confirm an entity value.
Used in conjunction with allowConfirmation rule mentioned above.
Example

{
"confirmYesSynonyms": ["~concept1", "~concept2"]
}

where concept1: ok;
concept2: affirmative

confirmNoSynonyms <concept names> Additional words/phrases to be used to cancel a confirmation entity. If selected/uttered, the entity value will be set to null
Used in conjunction with allowConfirmation rule mentioned above.
Example

{
"confirmNoSynonyms": ["~concept2", "~concept3"]
}

where concept1: nope;
concept2: wrong

String type entity

Description entity type

ruleName Value Description
stripLeading <concept name> To remove the words given in the concept from the start of the extracted string.

The concept can be a single concept name or a space-separated list of concepts or an array of concept names.

Example
JSON

{ "stripLeading": [ 
      "~stringConcept" 
    ]
}
stringConcept:  city

Entity Pattern: I like *

User UtteranceI like city New York
Extracted Value New York

stripTrailing <concept name> To remove words in a concept from the end of the extracted string.

The value can be a single concept name or a space-separated list of concepts or an array of concept names.

Example
JSON

{ "stripTrailing":
    "~stringConcept ~stringConcept1"
 }
stringConcept:  city; stringConcept1:  airport

Entity Pattern: I like *

User UtteranceI like New York city” or “I like New York airport
Extracted Value New York

avoidSingleWord <concept name> To ignore any value that is a member of the concept, unless it is the entire input.

The value can be a single concept name or a space-separated list of concepts or an array of concept names.

Example
JSON

{
  "avoidSingleWord": 
      "~stringConcept"
}
stringConcept:  chess, cricket

Entity Pattern: like to watch * tournament

User UtteranceI like to watch chess tournament
Extracted Value prompt for entity value

User Utterance I like to watch golf tournament
Extracted Value golf

User Utterancecricket
Extracted Value cricket, since it is the entire input

avoidSingleVerb true If set to true, then any value that is just a verb is ignored, unless it is the entire input.
Example
JSON

{
"avoidSingleVerb": true
}
Entity Pattern: I like * music

User UtteranceI like playing music
Extracted Value prompt for entity value

User UtteranceI like rap music
Extracted Value rap

User Utteranceplay
Extracted Value play, since it is the entire input

extractOnlyNumbers true if true, the entity will extract only numbers present in the string and set it as the entity value
Example
JSON

{
"extractOnlyNumbers": true
}

Number type entity

ruleName Value Description
asString true To capture a number as a string, preserving leading zeros
Example
JSON

{
  "asString": true
}
Entity Pattern – by default numeric entries

User Utterance “OTP is 009944
Extracted Value009944″
without the rule, it would have been “9944”

Currency type entity

ruleName Value Description
defaultCode <currency code>
or
<country code>
If no code is mentioned in user input, this value will be picked as code.
The value needs to be a 3 letter currency code or two-letter country alpha-2 codes.
Example
JSON

{
  "defaultCode": "NZD"
}
Entity Pattern pay *

User Utterance Pay 30
Extracted ValueNZD30

User Utterance Pay USD30
Extracted ValueUSD30

maxDigits <number> To restrict the amount length. If the amount length exceeds the value it will be discarded.
Example
JSON

{
  "maxDigits":[
    "3"
   ]
}
Entity Pattern pay *

User Utterance Pay USD30
Extracted ValueUSD30

User Utterance Pay USD3000
Extracted Value prompt for value

currencyCodes [<currency code>,<currency code>]
or
[<country code>,<country code>]
To restrict the currency codes. If the user entered code is not in the given list then the value will be discarded.
Example
JSON

{
  "currencyCodes": [
    "USD",
    "INR",
    "NZD"
  ]
}
Entity Pattern pay *

User Utterance Pay USD30
Extracted ValueUSD30

User Utterance Pay AUD30
Extracted Value prompt for a value

PersonName type entity

ruleName Value Description
disablePatterns An array of person name patterns to ignore – currently supporting only “possessive To disable patterns in extracting a person’s name when not applicable in specific scenarios.
Example
JSON

{
  "disablePatterns": [
    "possessive"
  ]
}
Entity Pattern – by default capitalized words

User Utterance “schedule Bob’s review at 9 am”
Extracted ValueBob

ignoreWords <concept name> Words in the concept are not to be considered as names even when capitalized.

The concept name could be a space-separated list of concepts or an array of concepts.

Example
JSON

{
  "ignoreWords": [
    "review",
    "~prepositionList"
  ]
}
Entity Pattern – by definition capitalized words

User Utterance “meeting for Bob Review”
Extracted ValueBob
would have been “Bob Review” without the rule

negativePatterns array of patterns Person names can be general capitalized words, or a name can be used in a sense where it is not meant to be taken as a person.
Example
JSON

{
  "negativePatterns": [
    "about *"
  ]
}
Entity Pattern – by definition capitalized words

User Utterance “schedule a meeting about Philip with Fred”
Extracted ValueFred
would have been “Philip” without the rule

Company type entity

ruleName Value Description
ignoreWords <concept name> Words in the concept are not to be considered as companies even when capitalized.

The concept name could be a space-separated list of concepts or an array of concepts.

Example
JSON

{
  "ignoreWords": [
    "atm"
  ]
}
Entity Pattern – by definition capitalized words

User Utterance “find ATM”
Extracted Value none
would have been “ATM” (an Italian company) without the rule

negativePatterns An array of company name patterns to ignore To disable patterns in extracting a company name when not applicable in specific scenarios.

Date type entity

ruleName Value Description
range { “from” : <from-date>, “to” : <to-date> } To extract dates only in the specified range. Either endpoint is optional.

Values can be a date, YYYY-MM-DD, or a keyword: today, tomorrow, yesterday. The dates are inclusive.

Example
JSON

{
"range": {
   "from": "2020-01-01",
   "to": "today"
  }
}
Entity Pattern – by default date patterns

User Utterance “show schedule for 2019-02-03”
Extracted Value prompt for a value

User Utterance “show schedule for tomorrow”
Extracted Value prompt for a value

User Utterance “show schedule  for 2020-02-03”
Extracted Value “2020-02-03”

referenceDate <date> Sets the reference date to <date> and any date calculation to set the current date entity value is based on that date.

Values should be a date, YYYY-MM-DD, or a keyword: today, tomorrow, yesterday.

Example
JSON

{
  "referenceDate": "2020-07-09"
}
Entity Pattern – by default date patterns

User Utterance “schedule after two days”
Extracted Value “2020-07-11”
would have been two days from the current date without the reference date

preferredDateFormat “yyyy-mm-dd” In case of ambiguity in date, it uses the preferred date format to resolve ambiguity.
Values can be:

  • “yyyy-mm-dd”
  • “yyyy-dd-mm”
  • “dd-mm-yyyy”
  • “mm-dd-yyyy”
Example
JSON

{
  "preferredDateFormat": "mm-dd-yyyy"
}
User Utterance “03-04-2021”
Extracted Value “2021-03-04”
NOTE: This rule comes into the picture only when there is an ambiguity in the user utterance. If the user’s preference is already set as part of a previous conversation, then the user selected format would take precedence over the defined rule
For example, a per the previous use case, if the user had selected the preferred format to be “dd-mm-yyy” previously in the conversation then the date would be taken as “2021-04-03”
returnOnlyMonthYear <true/false> When set to true, the platform would capture the month and year alone from the user input and update the context object accordingly. Even if the user gives a full input (like 20 Oct 2019), the system would only take Oct 2019 from that input. The user will not be prompted for the date if not provided
Example
JSON

{
  "returnOnlyMonthYear": true
}
User Utterance “03-04-2021”
Extracted Value “04-2021”User Utterance “Apr 2021”
Extracted Value “04-2021”

Date Period type entity

ruleName Value Description
range { “from” : <from-date>, “to” : <to-date> } To extract dates only in the specified range. Either endpoint is optional.

Values can be a date, YYYY-MM-DD, or a keyword: today, tomorrow, yesterday. The dates are inclusive.

Example
JSON

{
"range": {
   "from": "2020-01-01",
   "to": "today"
  }
}
Entity Pattern – by default date patterns

User Utterance “show schedule for 2019-02-03”
Extracted Value prompt for a value

User Utterance “show schedule for tomorrow”
Extracted Value prompt for a value

User Utterance “show schedule  for 2020-02-03”
Extracted Value “2020-02-03”

referenceDate <date> Sets the reference date to <date> and any date calculation to set the current date entity value is based on that date.

Values should be a date, YYYY-MM-DD, or a keyword: today, tomorrow, yesterday.

Example
JSON

{
  "referenceDate": "2020-07-09"
}
Entity Pattern – by default date patterns

User Utterance “schedule after two days”
Extracted Value “2020-07-11”

tense past/future To adjust the date period based on the tense when the year is not present in the user utterance.

Without this rule, the year is set as the current year if the month/day falls within 90 days from the current date else it would be set to the previous year. With this rule, you can force the year to current or past.

Example
JSON

{
 "tense": "past"
}
Entity Pattern – by default date patterns

User Utterance “get the statement for Jan”
Extracted Value “2020-01-01” if the current date is “2020-15-12”
without the rule, it would have been “2021-01-01”

 

preferredDateFormat “yyyy-mm-dd” In case of ambiguity in date, it uses the preferred date format to resolve ambiguity.
Values can be:

  • “yyyy-mm-dd”
  • “yyyy-dd-mm”
  • “ddmmyyyy”
  • “mmddyyyy”
Example
JSON

{
  "preferredDateFormat": "mm-dd-yyyy"
}
User Utterance “03-04-2021”
Extracted Value “2021-03-04”
NOTE: This rule comes into the picture only when there is an ambiguity in the user utterance. If the user’s preference is already set as part of a previous conversation, then the user selected format would take precedence over the defined rule
For example, a per the previous use case, if the user had selected the preferred format to be “dd-mm-yyy” previously in the conversation then the date would be taken as “2021-04-03”

DateTime type entity

ruleName Value Description
range { “from” : <from-datetime>, “to” : <to-datetime> } To extract date-times only in the specified range. Either endpoint is optional.

Values can be a date, YYYY-MM-DD, or a DateTime, YYYY-MM-DDTHH:MM:SS (user’s timezone is assumed if none specified) or a keyword: today, tomorrow, yesterday, now. The dates are inclusive.

Example
JSON

{
  "range": {
    "from": "2020-01-01T00:00:00+05:30",
    "to": "2020-10-01T00:00:00+05:30"
  }
}
Entity Pattern – by default date time patterns

User Utterance “set alarm for 2019-02-03T10:00:00”
Extracted Value prompt for a value

User Utterance “show schedule for 2021-12-20T10:00:00”
Extracted Value prompt for a value

User Utterance “show schedule  for 2020-02-03 T10:00:00”
Extracted Value “2020-02-03T10:00:00”

preferredTimes { “from” : <from-time>,
“to” : <to-time> }
To set the preferred time which can be used to interpret times when they are ambiguous. These times would be applicable to all days of the week.

For example, “3” will become “3 pm” if the preferredTimes are 9 am to 6 pm.

If the time cannot be placed inside the range then it will pick am/pm based on which is closest. If there are two possibilities or equal distance then the “daylight/standard awake” hours will be used. The times should be ISO 8601 format, THH:MM

{ “from” : [],
“to” : [] }
This option is for setting preferred times different for different days of the week. The “from” and “to” keys can be arrays with 7 members representing the time for each day, from Sunday to Saturday. Each value should be in the in Thh:MM format or an empty string to indicate there is no preference.
{ “favor” : <keyword> } The “favor” keyword can be used to set the preference in terms of “future”, “past”, “am”, or “pm”.
Example
JSON

 "preferredTimes": {
    "from": "T12:00:00",
    "to": "T18:00:00"
  }
Entity Pattern – by default date patterns

User Utterance “remind me at 3”
Extracted Value “T15:00:00”

JSON

 "preferredTimes": {
    "from": [
      "", "T09:00", 
      "T09:00", "T21:00", 
      "T21:00", "T07:00", ""
    ],
    "to": [
      "", "T18:00",
      "T18:00", "T06:00", 
      "T06:00", "T16:00", ""
    ]
  }
Entity Pattern – by default date patterns

User Utterance “remind me at 3”
Extracted Value “T15:00:00”, if the current day is Monday/Tuesday/Friday;
“T03:00:00”, if the current day is Wednesday/Thursday

JSON

 "preferredTimes": {
    "favor": "pm"
  }
Entity Pattern – by default date patterns

User Utterance “remind me at 3”
Extracted Value “T15:00:00”

timeRangePossible true/false If true then the dialog will be looking for time range in the user input.

Influences how “10 to 4” is interpreted. By default, this will be “3:50” but if there is the possibility of a range then will be decoded as 2 times “10:00” and “16:00”

Example
JSON

{
"timeRangePossible": "true"
}
 

 

preferredDateFormat “yyyy-mm-dd” In case of ambiguity in date, it uses the preferred date format to resolve ambiguity.
Values can be:

  • “yyyy-mm-dd”
  • “yyyy-dd-mm”
  • “ddmmyyyy”
  • “mmddyyyy”
Example
JSON

{
  "preferredDateFormat": "mm-dd-yyyy"
}
User Utterance “03-04-2021”
Extracted Value “2021-03-04”
NOTE: This rule comes into the picture only when there is an ambiguity in the user utterance. If the user’s preference is already set as part of a previous conversation, then the user selected format would take precedence over the defined rule
For example, a per the previous use case, if the user had selected the preferred format to be “dd-mm-yyy” previously in the conversation then the date would be taken as “2021-04-03”

Time type entity

ruleName Value Description
preferredTimes { “from” : <from-time>,
“to” : <to-time> }
To set the preferred time which can be used to interpret times when they are ambiguous. These times would be applicable to all days of the week.

For example, “3” will become “3 pm” if the preferredTimes are 9 am to 6 pm.

If the time cannot be placed inside the range then it will pick am/pm based on which is closest. If there are two possibilities or equal distance then the “daylight/standard awake” hours will be used. The times should be ISO 8601 format, THH:MM

{ “from” : [],
“to” : [] }
This option is for setting preferred times different for different days of the week. The “from” and “to” keys can be arrays with 7 members representing the time for each day, from Sunday to Saturday. Each value should be in the in Thh:MM format or an empty string to indicate there is no preference.
{ “favor” : <keyword> } The “favor” keyword can be used to set the preference in terms of “future”, “past”, “am”, or “pm”.
Example
JSON

 "preferredTimes": {
    "from": "T12:00:00",
    "to": "T18:00:00"
  }
Entity Pattern – by default date patterns

User Utterance “remind me at 3”
Extracted Value “T15:00:00”

JSON

 "preferredTimes": {
    "from": [
      "", "T09:00", 
      "T09:00", "T21:00", 
      "T21:00", "T07:00", ""
    ],
    "to": [
      "", "T18:00",
      "T18:00", "T06:00", 
      "T06:00", "T16:00", ""
    ]
  }
Entity Pattern – by default date patterns

User Utterance “remind me at 3”
Extracted Value “T15:00:00”, if the current day is Monday/Tuesday/Friday;
“T03:00:00”, if the current day is Wednesday/Thursday

JSON

 "preferredTimes": {
    "favor": "pm"
  }
Entity Pattern – by default date patterns

User Utterance “remind me at 3”
Extracted Value “T15:00:00”

timeRangePossible true/false If true then the dialog will be looking for time range in the user input.
Example
JSON

{
“timeRangePossible”: “true”
}

Influences how utterances like “10 to 4” is interpreted. By default, this will be “3:50” but if there is the possibility of a range then will be decoded as 2 separate time values “10:00” and “16:00”
range { “from” : now,
}
or
{ “to” : now
}
To extract date-times only in the specified range. Either endpoint is optional.

Currently, support is extended to the value “now” alone

Example
JSON

{
  "range": {
    "from": now
  }
}

Address type entity

ruleName Value Description
geocode true/false For a fully formatted address.

When set to true, the address will be split into individual parts using a geocode service (like Google).

Example
JSON

{
  "geocode" : true
}
Extracted Value JSON object

{
  "text" : "",
  "geocode" : []
}

The “text” property contains the address if the non-geocode form had been used.
The “geocode” property contains the unmodified results from the service (Google by default). You can extract whichever elements you want from the results that suit your needs.

City type entity

ruleName Value Description
ignoreWords <concept name> For the words in the concept not to be considered as cities.

The concept name could be a space-separated list of concepts or an array of concepts or space-separated strings.

Example
JSON

{
  "ignoreWords": "Send"
}
Entity Pattern – by default capitalized words

User Utterance “Send destination to my email”
Extracted Value prompt for entity value, without the rule it would have been “Send” since it is a city name

Zip Code type entity

ruleName Value Description
preferredCountries [<“country1”>,<“country2”>,..] To restrict zip code from the given set of preferred countries along with the user location country and the gleaned countries from the input.

Need to add two-letter country alpha-2 codes in place of
<“country1”>,<“country2”>,…

Example
JSON

{
  "preferredCountries": [
    "GB"
  ]
}
Entity Pattern – by default zip code patterns

User Utterance “check delivery to PO16 7GZ
Extracted ValuePO16 7GZ“, without the rule this might have been ignored if the user is not in the UK region

Location type entity

ruleName Value Description
preferredCountries [<“country1”>,<“country2”>,..] To restrict location from the given set of preferred countries along with the user location country and the gleaned countries from the input.

Need to add two-letter country alpha-2 codes in place of
<“country1”>,<“country2”>,…

Example
JSON

{
  "preferredCountries": [
    "GB"
  ]
}

List of Items (enum) type entity

ruleName Value Description
ownership include/
exclude
To look for potential “ownership” phrasing, e.g. “is mine” to determine if a potential choice should be included or excluded from the entity value.
Examples of ownership phrases are “is mine”, “belongs to me”, etc.
Example
JSON

{
  "ownership": "include"
}
Input Options – Pick your item: “pen”, “watch”, “bottle”, “book”, “cap”

User Utterance “first two are mine”
Extracted Value [“pen”, “watch”]

JSON

{
  "ownership": "exclude"
}
Input Options – Pick your item: “pen”, “watch”, “bottle”, “book”, “cap”

User Utterance “first two are mine”
Extracted Value [“bottle”, “book”, “cap”], since the rule is to exclude the ownership values.

includeWords <concept name> or array of words The list of words that supplement to the ownership phrases.
The value can be an array of strings or a concept.To be used along with ownership: include rule
Example
JSON

{
  "ownership": "include",
  "includeWords": "great"
}
Input Options – Pick your item: “pen”, “watch”, “bottle”, “book”, “cap”

User Utterance “first two are mine”
Extracted Value [“pen”, “watch”]

User Utterance “first two are great”
Extracted Value [“pen”, “watch”]

excludeWords <concept name> or array of words The list of words that can be used as non-ownership phrases.
The value can be an array of strings or a concept. To be used along with ownership: exclude rule
Example
JSON

{
  "ownership": "exclude",
   "excludeWords": "~lovConcept"
}
Input Options – Pick your item: “pen”, “watch”, “bottle”, “book”, “cap”
lovConcept – dubiousUser Utterance “first two are dubious”
Extracted Value [“bottle”, “book”, “cap”]
noIndexMatch true To disable the alphabet and number Index match, would not allow the user to select the items using an index.
Example
JSON

{
  "noIndexMatch": "true"
}
Input Options – Pick your item: “pen”, “watch”, “bottle”, “book”, “cap”

User Utterance a
Extracted Value prompt for input, without the rule it would have been [“pen”]