変数値の式
FreeMarker式は、ダイアログ・フローの変数の値に使用できます。
便利な式
次に、フローで使用できる一般的な式をいくつか示します。
ヒント:
自動補完では、これらの(および他の) Apache FreeMarker式を記述します。操作 | Freemarker式 | 結果タイプ |
---|---|---|
親フローの名前の取得 | ${system.parentFlow} |
文字列 |
イベント・ペイロードの取得 | ${skill.system.event.value.EVENT_NAME} |
JSONオブジェクト |
NLP結果へのアクセス | ${skill.system.nlpresult.value} |
JSONオブジェクト |
スキル・スコープ変数へのアクセス | ${skill.VAR_NAME} |
|
アクセス・フロー・スコープ変数 | ${VAR_NAME} |
|
アクセス・フロー入力パラメータ | ${INPUT_PARAM_NAME} |
|
ユーザースコープ変数へのアクセス | ${user.VAR_NAME} |
|
アクセスプロファイルスコープ変数 | ${profile.VAR_NAME} |
|
回答インテントの回答の取得 | ${skill.system.event.value.intent.answer} ノート: |
|
インテント名の取得 |
|
文字列 |
エラー・メッセージを取得 | ${skill.system.event.value.dialogError.errorMessage} |
文字列 |
リソース・バンドル・エントリへのアクセス | ${skill.system.rb.RB_ENTRY_NAME} |
リソース・バンドル |
カスタム・パラメータの値にアクセスします | ${skill.system.config.CUSTOM_PARAMETER_NAME} |
文字列 |
コンポーネントのFreeMarkerの詳細は、Apache FreeMarker Template Languageの構文を参照してください。
Apache FreeMarker Template Languageの構文
Apache FreeMarker Template Language (FTL)を使用すると、変数値へのアクセス、レスポンス・アイテムの表示または非表示、ユーザー・メッセージ内のキーワードの検索、値リストの出力または特定のデータ属性でソートされた配列の表示を行うことができます。これらの値式の基本的な構文は
${...}
です。FTLは、様々なダイアログ・フロー・コンポーネントのプロパティ定義に組み込むことができます。
ノート
ifディレクティブ(
ifディレクティブ(
<#if>...</#if>
)を使用して式を定義することもできます。
手順は次のとおりです... | 手順 |
---|---|
変数から値を読み取ります。 | ドット表記法を使用して、value プロパティを追加します:
例:
|
複雑なエンティティーで定義された変数から値を読み取ります。 | ドット表記法を使用して、プロパティを追加します:
例:
YAMLベースのダイアログ・フローを持つスキルのSystem.Output コンポーネントで${MyMoney} などの式を使用すると、参照される通貨のJSONオブジェクトのすべてのプロパティが表示されます。
|
値リスト・エンティティに定義された値セットを返します。 | 組込みのtype 変数およびenumValues 変数を次の構文で使用します:
|
文字列、配列(シーケンス)、数値および日付にはbuilt-inを使用します。Apache FreeMarkerのリファレンスを参照してください。 | value プロパティの後に疑問符(? )および操作名を続けます:
|
FTL式を連結します。 | 疑問符(? )を使用して操作をひとまとめにします:
|
複数言語スキルでのエンティティ値の参照
複数言語スキルがある場合は、エンティティを解決するコンポーネントで「全エンティティ一致の使用」がtrue
に設定されるようにしてください。これで、次の種類の式を記述できるようになります:
- 会話の言語でエンティティ値を参照する式。このような式を使用して、ボタンや確認メッセージなどでユーザーにエンティティ値を表示するといった処理を行うことができます。
そのような式では、
value
を追加して、会話の言語で値を取得します。たとえば、ダイアログ・フロー変数pizza
を定義しており、プロンプトでPizzaSizeエンティティ値を参照する場合は、式で(pizza.value.PizzaSize
ではなく)pizza.value.PizzaSize.value
を使用します。 - プライマリ言語でエンティティの値を参照する式。プライマリ言語の値は、エンティティのすべての言語において対応する値のキーの一種として機能します。この値は、会話が行われている言語を気にせずに、ビジネス・ロジックで参照できます。
このような式では、
primaryLanguageValue
を追加します(例:pizza.value.PizzaSize.primaryLanguageValue
)。