はじめに
Lexのサンプル発話において、{}
中括弧が含まれる文言を登録すると、ビルド時にスロット未定義のエラーが発生します。本記事ではこのような場合の対処法について記載します。
やりたい事
{}
中括弧つきの文言をLexのサンプル発話に登録しておき、この文言が入力された際に対象のインテントが選択されるようにしたい。
事象
Lexのインテント > サンプル発話(Sample utterances) > に中括弧つきの下記の文言を入力 > Save intent でインテントを保存 > Build にエラー発生。
{サンプルテキスト}
The slot name 'サンプルテキスト' in utterance '{サンプルテキスト}' for Intent 'test_intent' isn't valid. The slot name doesn't exist. Update the utterance or create a slot named 'サンプルテキスト' and try your request again.
結論
カスタムスロットに{}
のつく文言を登録し、この type
のスロットを対象のインテントで作成します。これをサンプル発話に登録することで対応できます。
環境
Lex V2
対処法
1.カスタムスロットの作成
1.Lexのカスタムスロットを新規作成
2.Value欄に {サンプルテキスト}
を登録し保存
2.インテントの作成
2.1スロットの追加
1.「Add slot」を選択
2.作成したカスタムスロットタイプを選択
事前に作成しておいたカスタムスロットの type
を選択して他は任意の値でスロットを追加します。
2.2サンプル発話にスロットを追加
作成したスロットをサンプル発話に登録します。
2.3ビルド
インテントを保存しBuild ボタンを押下してビルドを実行。
3. 動作確認
ビルドが成功したらLexのTestタブからテスト入力してみます。
下記の文言を入力してみます。
{サンプルテキスト}
想定通りのインテントが選択されている事を確認できました。
Intent test_intent is fulfilled
試しに別の文言を入力してみます。
ほげほげ
fugafuga
これらの文言では FallbackIntent
が選択されたことを確認できました。
Intent FallbackIntent is fulfilled