型を使用すると、ユーザー入力から構造化データを抽出するようにアシスタント NLU(自然言語理解)エンジンを構成できます。型は次のような状況で使用できます。
インテントでは、トレーニング フレーズにタイプのアノテーションを付けてスロットを作成できます。ユーザーがスロットに一致する発言をすると、NLU エンジンがそれを型付きパラメータとして抽出し、シーンで処理できます。
シーンのスロット充填ステージでは、ユーザーがシーンを移行または終了する前にユーザーに提供させるスロットを複数指定できます。
シーンの conditions ステージ内で、パラメータがタイプで定義されている特定の値を持つかどうかに基づいてロジックを作成できます。
カスタム型
カスタムタイプを使用すると、独自のタイプ仕様を作成して、一連の値を単一のキーに割り当てるように NLU に通知できます。タイプはさまざまな方法で指定できます。
- 単語と類義語を使用すると、複数の値を 1 つのキー(エントリ)にマッピングできます。タイプには 1 つ以上のエントリを含めることができます。このオプションを選択した場合は、次の NLU 設定を有効にすることもできます。
- ファジー一致を有効にする - この機能を使用すると、単語が異なる順序で話されている場合でも、複数の単語を含むエントリを照合できます。
- 不明な値を受け入れる - 指定可能な値をすべて指定できない場合、言語プロセッサは周囲の入力やインテント トレーニング データに基づいて不明な単語やフレーズ(食料品リストに追加される可能性のあるアイテムなど)を受け入れます。
- 正規表現を使用すると、型は Google の RE2 標準に基づく正規表現パターンを使用して値を照合できます。
- 自由形式のテキスト: ユーザーの発話内容に合わせて入力できます。インテントにこのタイプでアノテーションを付けると、すべての入力をパラメータとして使用して、独自の NLU に連結できます。
システムタイプ
システムタイプを使用すると、システムが提供するトレーニング データと値を使用して、ユーザー入力からよく知られたデータにアノテーションを付けて抽出できます。次のシステムタイプがサポートされています。
種類 | 説明 |
---|---|
actions.type.DateTime |
ユーザーのデバイスの設定に基づく日付、時刻、タイムゾーンが含まれます。スロットフィルとトレーニング フレーズのアノテーションで使用できます。 |
actions.type.Date |
日付のみが含まれます。スロット フィルでのみ使用できます。 |
actions.type.Time |
時間のみが含まれます。スロット フィルでのみ使用できます。 |
actions.type.Number |
Number 型は序数と基数に一致します。 |
DateTime
、Date
、Time
の使用状況
これらの型の動作は、その型を使用する場所と、その型に対応するユーザー入力によって異なります。
インテントで使用する
インテントのトレーニング フレーズにアノテーションを付けることができるのは、DateTime
タイプのみです。ユーザー入力は DateTime
値全体と一致させる必要はありません。たとえば、ユーザーが年のみを指定した場合、セッション パラメータは次のようになります。
"date_time": {
"year": 2019
}
スロットフィルで使用する
スロットフィルは、DateTime
、Date
、Time
をサポートしています。
- スロットタイプが
DateTime
の場合、アシスタントは完全な値が入力されるまでユーザーにプロンプトを表示します。 - スロットタイプが
Date
の場合、アシスタントは日付値を指定するまでユーザーにプロンプトを表示します。収集されると、受け取るパラメータは、時刻が 00:00 に設定された完全なDateTime
です。 - スロットタイプが
Time
の場合、アシスタントは時間値が入力されるまでユーザーにプロンプトを表示します。収集されると、受け取るパラメータは、日付が現在の日付に設定された完全なDateTime
オブジェクトです。
たとえば、ロサンゼルスのユーザーが「OK Google, 2024 年 1 月 15 日午後 8 時のリマインダーを作成して」と言ったとします。スロットフィル プロセスの一環として DateTime
が抽出される場合、パラメータ全体は次のようになります。
"date_time": {
"day": 15,
"hours": 20,
"minutes": 0,
"month": 1,
"nanos": 0,
"seconds": 0,
"time_zone": {
"id": "America/Los_Angeles"
},
"year": 2024
}
条件ありの使用
条件では数値と文字列しか使用できないため、最上位の DateTime
パラメータを使用すると、条件の結果が False になります。次に例を示します。
day
値は数値であり、サポートされているため、$session.params.my_dateTime.day > 5
は有効な条件です。- トップレベルの「DateTime」オブジェクトが数値または文字列ではないため、
$session.params.my_dateTime > "01-01-2010"
は無効な条件です。
ランタイム タイプのオーバーライド
ランタイム タイプのオーバーライドを使用すると、フルフィルメントでタイプを動的に作成または変更できます。この機能を使用すると、ランタイムにタイプの仕様を追加または置換できます。たとえば、バックエンド データソースを確認して、毎日のメニュー項目をフルフィルメントのタイプに読み込むことができます。
ビルドタイプのオーバーライドについて詳しくは、Webhook ガイドをご覧ください。