これらの値処理前のユーザー入力の検証は、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” |
|
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” |
|
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” |
会社型エンティティ
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” User Utterance “show schedule for tomorrow” User Utterance “show schedule for 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” |
|
preferredDateFormat | “yyyy-mm-dd” | In case of ambiguity in date, it uses the preferred date format to resolve ambiguity. Values can be:
|
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” User Utterance “show schedule for tomorrow” User Utterance “show schedule for 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” |
|
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”
|
|
preferredDateFormat | “yyyy-mm-dd” | In case of ambiguity in date, it uses the preferred date format to resolve ambiguity. Values can be:
|
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” User Utterance “show schedule for 2021-12-20T10:00:00” User Utterance “show schedule for 2020-02-03 T10: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” |
|
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” |
|
JSON
"preferredTimes": { "favor": "pm" } |
Entity Pattern – by default date patterns
User Utterance “remind me at 3” |
|
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:
|
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" } |
入力オプション – 以下の項目を選びます。「ペン」、「腕時計」、「ボトル」、「本」、「キャップ」 ユーザー発話 抽出値 入力のプロンプト、ルールがないと、それは [「ペン」] であったはずです。 |