その他の変数タイプ
フロー変数およびグローバル変数の他に、ユーザー・スコープ、プロファイルおよびシステム変数を使用できます。
ユーザー・コンテキストのプロファイル範囲変数
チャット・クライアントからプロファイル設定にアクセスする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}形式の式を使用できます。
|