その他の変数タイプ

フロー変数およびグローバル変数の他に、ユーザー・スコープ、プロファイルおよびシステム変数を使用できます。

ユーザー・コンテキストのプロファイル範囲変数

チャット・クライアントからプロファイル設定にアクセスするprofile-scope変数を使用して、ユーザーの名前、ロケールおよびローカル時間の値にアクセスできます。

例:
"Hello ${profile.firstName}, how can I help you today?"

これは出力のprofile.firstNameのイメージです。
これらの事前定義変数を使用して、スキル・ユーザーのコンテキストの詳細を出力します。
手順は次のとおりです... これを使用...
ボット・ユーザーの名を取得します。 ${profile.firstName}
ボット・ユーザーの姓を取得します。 ${profile.lastName}
ボット・ユーザーのロケールを取得します。 ${profile.locale}
ユーザーのタイムゾーンを取得します(ミリ秒単位でオフセットされます)。 ${profile.timezoneOffset}

これらの事前定義済変数は、メッセージング・プラットフォームが渡す値から自動的に設定されます。値はメッセージング・プラットフォームによって異なり、一部のメッセージング・プラットフォームでは提供されない場合があります。たとえば、デジタル・アシスタント(エージェント)の統合では、profile.firstNameprofile.lastNameおよびprofile.emailに値が含まれるのは、ユーザーがOracle Service Cloudにサインインした場合、またはOracle Service Cloudチャット起動ページで、ユーザーがチャットをリクエストする前に、名、姓、電子メール・アドレスのフィールドに入力した場合のみです。Oracle Web Clientの場合、これらのプロファイル値はinitUserProfileプロパティまたはupdateUserメソッドで設定する必要があります。

再訪のためのユーザー固有値の保存

ユーザー・スコープ変数を作成して、セッション間で保持できます。

一般に、スキルまたはデジタル・アシスタントとのユーザー会話が終了すると、ユーザー入力から設定された変数値は破棄されます。ただし、ユーザー・スコープ変数を定義して、以前のセッションからのユーザー入力を保持し、新しい会話を拡張することもできます。ユーザー・スコープ変数は、コンポーネント自体に直接作成します。

ユーザー・スコープ変数を作成するには:

  1. 作成するコンポーネントのプロパティ・インスペクタの「変数」フィールドで、ドロップダウンから「ユーザー・スコープ変数」を選択します。
  2. 表示される「スコープ付き変数名」フィールドに、変数名を入力します。

    user.接頭辞を含まない名前を入力します。(この接頭辞はユーザー・スコープ変数を参照するときに使用しますが、定義時には使用しません。)

ユーザー・スコープ変数を参照するには、${user.VAR_NAME}のような式を使用します。

たとえば、ピザ・スキル- ビジュアル・フロー・デザイナのサンプル・スキルでは、ユーザーがservice.reg.placeOrderフローで順序を設定した後に、lastOrderNumberユーザー・スコープ変数が設定されます。この変数は、スキルが開始されるたびにコールされるフローの最初の状態(handler.startSkill)の式${((user.lastOrderNumber)?has_content)}によって参照され、ユーザーが以前にオーダーしたかどうかを判断します。

ノート

ユーザー・スコープ変数の値はチャネル固有です。たとえば、ユーザーがWebチャネルのスキルにアクセスし、後でMicrosoft Teamsチャネルを介してスキルにアクセスした場合、Teamsチャネルはユーザー変数の独自のインスタンスを持ち、Webチャネル内の前の会話の値を認識しません。

システム変数

変数 タイプ 説明
system.nlpresult NLP結果 ユーザー発話のNLP結果を格納するために使用されます。完全なNLP結果を取得するには、式${skill.system.nlpresult.value}を使用します。
system.intent.utterance 文字列 この変数に値がある場合は、最後のユーザー・メッセージではなくインテント照合に使用されます。この変数にアクセスするには、式${skill.system.intent.utterance}を使用します。
system.event マップ 組込みイベントの1つがメイン・フローまたはサブ・フローにマップされている場合、この変数はイベントの処理に使用できるイベント・プロパティを保持します。たとえば、イベント・ペイロードを取得するには、${skill.system.event.value.EVENT_NAME}という形式の式を使用します。
system.rb リソース・バンドル 言語リソース・バンドル・エントリへのアクセスに使用されます。リソース・バンドル・エントリにアクセスするには、${skill.system.rb.RB_ENTRY_NAME}形式の式を使用できます。