IBM Cloud Docs
チュートリアル: Web チャットからのアクションのコンテキスト変数の設定

チュートリアル: Web チャットからのアクションのコンテキスト変数の設定

このチュートリアルでは、Web チャットを使用して、アクションがアクセスできるコンテキスト変数の値を設定する方法を説明します。

このチュートリアルで説明する完全な実例については、 Setting context variables for watsonx Assistant Web chatを参照してください。

コンテキスト変数を使用して、会話全体でアシスタントが使用する情報を保管できます。

コンテキスト・データは、セッション全体を通じて維持されます。 コンテキストは、各メッセージの一部としてアシスタントに送信され、 contextというオブジェクトで各応答とともに返されます。 アクション・スキルのコンテキスト変数は、以下の場所に保管されます。

"context": {
  "skills": {
    "action skill": {
      "skill_variables": {
        ...
      }
    }
  }
}

任意の JSON データを skill_variables オブジェクトに保管し、アクションまたは Web チャットのいずれかによって読み取りまたは変更を行うことができます。

この例は、顧客の名前をコンテキスト変数に保管する方法を示しています。このコンテキスト変数を使用して、パーソナライズされた挨拶を表示できます。 これと同じ方法を使用して、アシスタントが使用する可能性のある他の情報を保管できます。 例としては、顧客のロケーション、口座残高、保管プリファレンスなどがあります。

Web チャットからコンテキスト変数の値を設定するには、以下の手順を実行します。

  1. pre:send イベントのハンドラーを作成します。 このハンドラーは、出力メッセージ・イベントのペイロードを変更して、 User_Nameというコンテキスト変数に値を割り当てます。

    会話の開始時にユーザー名を 1 回だけ設定します。 この例では、ホーム画面が有効になっていないことを想定しています。これは、Web チャットが空のメッセージを使用して新しい会話を開始し、アシスタントからの挨拶をトリガーすることを意味します。

    この例では、ハードコーディングされたユーザー名 Cadeを使用します。 実動アシスタントでは、Web サイトのユーザー・プロファイルから顧客の名前を取得できます。

    function preSendHandler(event) {
      // Only do this on messages that request the welcome message.
      if (event.data.input && event.data.input.text === '') {
        event.data.context.skills['actions skill'] = event.data.context.skills['actions skill'] || {};
        event.data.context.skills['actions skill'].skill_variables = event.data.context.skills['actions skill'].skill_variables || {};
        event.data.context.skills['actions skill'].skill_variables.User_Name = 'Cade';
      }
    }
    
  2. onLoad イベント・ハンドラーで、 on() インスタンス・メソッドを使用して pre:send イベントにサブスクライブし、 preSendHandler() 関数をコールバックとして登録します。

    instance.on({ type: 'pre:send', handler: preSendHandler });
    

アシスタント・アクションは、会話を通じて User_Name 変数にアクセスできるようになりました。

完全な作業コードについては、 watsonx Assistant Web チャットのコンテキスト変数の設定 の例を参照してください。