その他の変数タイプ
フロー変数およびグローバル変数の他に、ユーザー・スコープ、プロファイルおよびシステム変数を使用できます。
ユーザー・コンテキストのプロファイル範囲変数
チャット・クライアントからプロファイル設定にアクセスするprofile-scope変数を使用して、ユーザーの名前、ロケールおよびローカル時間の値にアクセスできます。
"Hello ${profile.firstName}, how can I help you today?"

これらの事前定義変数を使用して、スキル・ユーザーのコンテキストの詳細を出力します。
手順は次のとおりです... | これを使用... |
---|---|
ボット・ユーザーの名を取得します。 | ${profile.firstName} |
ボット・ユーザーの姓を取得します。 | ${profile.lastName} |
ボット・ユーザーのロケールを取得します。 | ${profile.locale}
|
ユーザーのタイムゾーンを取得します(ミリ秒単位でオフセットされます)。 | ${profile.timezoneOffset} |
これらの事前定義済変数は、メッセージング・プラットフォームが渡す値から自動的に設定されます。値はメッセージング・プラットフォームによって異なり、一部のメッセージング・プラットフォームでは提供されない場合があります。たとえば、デジタル・アシスタント(エージェント)の統合では、profile.firstName
、profile.lastName
およびprofile.email
に値が含まれるのは、ユーザーがOracle Service Cloudにサインインした場合、またはOracle Service Cloudチャット起動ページで、ユーザーがチャットをリクエストする前に、名、姓、電子メール・アドレスのフィールドに入力した場合のみです。Oracle Web Clientの場合、これらのプロファイル値はinitUserProfile
プロパティまたはupdateUser
メソッドで設定する必要があります。
再訪のためのユーザー固有値の保存
ユーザー・スコープ変数を作成して、セッション間で保持できます。
一般に、スキルまたはデジタル・アシスタントとのユーザー会話が終了すると、ユーザー入力から設定された変数値は破棄されます。ただし、ユーザー・スコープ変数を定義して、以前のセッションからのユーザー入力を保持し、新しい会話を拡張することもできます。ユーザー・スコープ変数は、コンポーネント自体に直接作成します。
ユーザー・スコープ変数を作成するには:
- 作成するコンポーネントのプロパティ・インスペクタの「変数」フィールドで、ドロップダウンから「ユーザー・スコープ変数」を選択します。
- 表示される「スコープ付き変数名」フィールドに、変数名を入力します。
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} 形式の式を使用できます。
|