チャットBotの概要
会話型ボット
Kore.ai のアプローチ
Kore.ai 会話型プラットフォーム
ボットの概念と用語
自然言語処理 (NLP)
ボットタイプ
ボットタスク
Kore.ai プラットフォームを使う
ボットビルダーのアクセス
Kore.ai ボットビルダーを使う
初めてのボット構築
ボット構築を始める
シンプルなボットを構築
ボットビルダー
標準ボットの構築
設計
開発 - 標準ボット
ストーリーボード
ダイアログタスク
ユーザーインテントノード
ダイアログノード
エンティティノード
サポートするエンティティタイプ
複合エンティティ
サポートする色
サポートする会社名
フォームノード
ロジックノード
メッセージノード
確認ノード
サービスノード
カスタム認証の実装
サービスノード用双方向 SSL
スクリプトノード
エージェント転送ノード
Webフックノード
ノードのグループ化
接続と遷移
ダイアログの管理
プロンプトエディタ
アラートタスク
アラートタスク
無視する単語 & フィールドメモリ
デジタルフォーム
デジタルビュー
知識グラフ
用語
構築
生成
ボットオントロジーのインポート/エクスポート
解析
知識の抽出
スモールトーク
自然言語
概要
機械学習
ML (機械学習) モデル
基本概念
NLP (自然言語処理) の設定 & ガイドライン
知識グラフのトレーニング
示唆
ランキング & リゾルバ
高度な NLP 設定
インテリジェンス
概要
コンテキスト管理
セッションおよびコンテキスト変数
コンテキストオブジェクト
ダイアログ管理
サブインテント
エンティティの変更
複数インテントの検出
センチメント分析 (英語)
トーン分析
センチメント管理
デフォルトの会話
デフォルトの標準レスポンス
チャネルの有効化
テスト & デバグ
ボットと会話
発話テスト
バッチテスト
会話の記録 & テスト
ボットの公開
ボットの分析
概要
ダッシュボード
カスタムダッシュボード
会話フロー
ボットメトリクス (英語)
アドバンスド トピック
ボット認証
言語管理
共同開発
IVR 統合
データ テーブル
ユニバーサル ボット
定義
構築
トレーニング
カスタマイズ
言語の有効化
スマート ボット
スマート ボットの定義
イベントベースのボットアクション
koreUtil ライブラリ
ボット設定
ボットの機能
ボット設定
PII 設定
エラーメッセージのカスタマイズ
セッションを管理する
ボット管理
ボットのバージョン
ボット変数
API ガイド (英語)
API 概要
API リスト
API コレクション
SDK (英語)
SDK 概要
SDK セキュリティ
SDK アプリ登録
Web 上の SDK チュートリアル
メッセージ形式とテンプレート
モバイル SDK プッシュ通知
メッセージ形式とテンプレート
ウィジット SDK チュートリアル
WebSocket 接続
BotKit SDK の利用
インストール
設定
イベント
機能
BotKit SDK チュートリアル - エージェント転送
BotKit SDK チュートリアル - フライト検索サンプルボット
外部 NLP エンジンの利用
ボット管理者
ボット管理者コンソール
ダッシュボード
ユーザー管理
御社ユーザーの管理
御社グループの管理
ロールを管理
ボット管理
エンロール
ユーザーの招待
一括招待
ユーザーのインポート
AD からユーザーを同期
セキュリティ & コンプライアンス
シングル サインオンを使う
セキュリティの設定
クラウド コネクタ
分析
請求処理
How To
シンプルなボットの構築
バンキングボットの構築
送金タスク
残高の更新タスク
知識グラフを作成
知識グラフへ抽出したFAQを入力
スマート アラートのスケジュール
エージェント転送の設定
パネルやウィジットの設定
デジタル ビューの設定
デジタル フォームの設定
データをデータテーブルに追加
データテーブルのデータを更新
フォームデータをデータテーブルに追加
コンテキストの切り替え
意図を使う
インテントやエンティティのパターン
エンティティ ルール
マルチ言語なボットの動き
カスタム ダッシュボード
ボット メトリクスをフィルターするためのカスタムタグ
グローバル変数
コンテンツ変数
ボット機能を使う
ボットリリースのライフサイクル
グループノードを利用したインテントのスコーピング
Kore-Unblu インテグレーション
  1. Home
  2. Docs
  3. Bots
  4. Bot Building
  5. Dialog Task
  6. タスク内でのセッション変数およびコンテキスト変数の使用

タスク内でのセッション変数およびコンテキスト変数の使用

タスクを定義すると、ボットプラットフォームが提供するセッション変数や、定義したカスタム変数にアクセスすることができ、変数のスコープを定義するコンテキストの利用も可能になります。

たとえば、APIリクエストによっては、リクエストが実行される前にセッション変数を設定する必要があったり、ダイアログタスクコンポーネントが次のノードに移行するためにセッション変数を取得する必要がある場合があります。さらに、ダイアログタスクは追加のシステム変数でcontextオブジェクトを取得することができます。詳細については、コンテキストオブジェクトを参照してください。

タスクのJavaScriptを定義するコンテキストとセッション変数、およびユーザープロンプトエディタをJavaScriptタブから使用することができます。

セッション変数

このセクションでは、カスタムJavaScriptコードでタスクに使用できるコンテキスト変数とその範囲について説明します。

各コンテキストタイプのキー/値のペアをGETまたはPUTするJavaScriptの構文は次のとおりです。

   "EnterpriseContext" : {
       "get" : function(key){...},//get the specified key
       "put" : function(key, value, ttl){...} //put the value at the key for the specified ttl, ttl is in minutes
   },
   "BotContext" : {
       "get" : function(key){...},//get the specified key
       "put" : function(key, value, ttl){...} //put the value at the key for the specified ttl, ttl is in minutes
   },
   "UserContext" : {
       "get" : function(key){...},//get the specified key
   },
   "UserSession" : {
       "get" : function(key){...},//get the specified key
       "put" : function(key, value, ttl){...} //put the value at the key for the specified ttl, ttl is in minutes
   },
   "BotUserSession" : {
       "get" : function(key){...},//get the specified key
       "put" : function(key, value, ttl){...} //put the value at the key for the specified ttl, ttl is in minutes
   }

例:

    BotContext.put("topicSessionVariable","music",2000);
    UserSession.put("firstName","Mary",20000);
    UserContext.get("firstName");

コンテキストタイプ

ボットプラットフォームでは、以下のタイプのコンテキスト変数が使用可能です。

  • EnterpriseContext – 企業内のすべてのボットおよびユーザーが利用可能なキーと値のペア。たとえば、GitHubボットでは、ユーザーは1つ以上のエンタープライズリポジトリにアクセスする必要があります。リポジトリデータをGitrepository (Enterprise Context) として保持するには、次の JavaScript コードを使用します。
    var userRepository = {
    "title": _labels_[repository],
    "value": repository
    };
    EnterpriseContext.put('Gitrepository', userRepository, 200000);
  • BotContext – この特定のボットのすべてのユーザーが利用可能なキー/値のペア。たとえば、ユーザーの場所によって、セッションにかかる金融取引のデフォルト通貨を設定する場合などがあります。デフォルトの通貨データをcurrency (Bot Context)として、以下のJavaScriptコードで永続化することができます。
    var defaultCurrency = { TODO Custom JavaScript for location-based currency }
    BotContext.put('currency', defaultCurrency, 200000);
  • UserContext – すべてのユーザー向けボットが利用可能なキーと値のペア。これらのキーは読み取り専用で、システムからユーザーデータとして提供されます。
      • UserContext.get(“_id”) – Kore.aiのユーザーID。
      • UserContext.get(“emailId”) – ユーザーIDに関連付けられたメールアドレス。
      • UserContext.get(“lastName”) – ユーザーの名字。
      • UserContext.get(“firstName”) – ユーザーの名前。
      • UserContext.get(“profImage”) – ユーザーの画像またはアバターのファイル名。
      • UserContext.get(“profColor”) – ユーザーのアカウントカラー。
      • UserContext.get(“activationStatus”) – ユーザーのアカウントの状態。
      • UserContext.get(“jTitle”) – ユーザーのタイトル (定義されている場合)。
      • UserContext.get(“orgId”) – ユーザーアカウントの組織ID (定義されている場合)。
      • UserContext.get(“identities”) – 代替ユーザーID (定義されている場合)。

    たとえば、2つのUserContext変数からのGETに基づいて、キーがfullNameとして定義されているUserSession変数を使用して、セッションに値をPUTすることができます。

    var name = UserContext.get("firstName")+UserContext.get("lastName");
    UserSession.put("fullName") = name;
  • UserSession – 企業内のすべてのボットに対して、この特定のユーザーに対して定義できるキー/値のペア。商業、交通、宅配サービスに利用されるユーザーの自宅住所など、すべてのボットが利用できるようにユーザーの位置情報を保存する場合があります。たとえば、以下のJavaScriptコードを使用して、デフォルトの位置情報をHomeLocation (UserSession)として永続化することができます。
    var location = {
     "title": labels[location],
     "value": {
     "latitude": location.latitude,
     "longitude": request.location.longitude
     }
    };
    UserSession.put('HomeLocation', location, '20000');
  • BotUserSession – 特定のユーザーの入力に基づいて、特定のボットに定義できるキー/値のペア。ボットの1つ以上のタスクに対して、ユーザーの位置情報を永続化する場合があります。旅行ボットの場合、ユーザーは同一の自宅と目的地の住所に基づいてフライトやホテルを予約することができます。たとえば、以下のJavaScriptコードを使用して、デフォルトの自宅と目的地のデータをHomeLocation (BotUserSession)DestinationLocation (BotUserSession)として永続化することができます。
    var homelocation = {
     "title": labels[request.sourceLocation],
     "value": {
     "latitude": request.sourceLocation.latitude,
     "longitude": request.sourceLocation.longitude
     }
    };
    BotUserSession.put('HomeLocation', homelocation, '20000');
    var destlocation = {
     "title": labels[request.destLocation],
     "value": {
     "latitude": request.destLocation.latitude,
     "longitude": request.destLocation.longitude
     }
    };
    BotUserSession.put('DestinationLocation', destlocation, '20000’);

スタンダードキー

セッションキーとコンテキストキーに加えて、再利用可能なデータ向けのKore.ai変数プレースホルダがあります。次のいずれかを選択します。

  • _labels_ – GUIDの代わりにフレンドリーラベルを返すために使用します。たとえば、WebサービスAPIからユーザーデータを要求された場合、プロジェクトやワークスペースのIDはGUIDとして返されます。_labels_キーを使用して、GUIDの代わりにGUIDのユーザーフレンドリーな名前をエンドユーザーに表示することができます。Kore.aiでは、ドロップダウンコントロールは _labels_ キーに対するレスポンスを次の例のように保存します。
    {
        "_labels_": {
            "15379386734832": "roadlabs.com",
            "26377329985341": "Test Project",
            "workspace": "roadlabs.com",
            "project": "Test Project"
        },
        "_fields_": {
            "workspace": "15379386734832",
            "project": "26377329985341"
        }
    }

    レスポンスでの_labels_キーの使用については、次のとおりです。

    print('<a href="https://app.asana.com/0/' + workspace.id + '/' + id + '/f" target="_blank">' + title + '</a> in workspace '+_labels_[workspace.id]);
  • _tenant_ – 定義済みの企業のテナントを返すために使用します。たとえば、JIRAにはkoreteam, in https://koreteam.atlassian.net/browse/BBF-3265のようなURLのテナントが必要です。_tenant_キーを使用して、以下のようなタスクレスポンスでリンクを構築することができます。
    var title = request.fields.issuetype.name + ' <a href ="https://' + _tenant_ + '/browse/' + response.key + '" target = "_blank">' + request.fields.summary + '</a>  has been created.';
  • _fields_ – ペイロードレスポンスに関係のないエンドユーザーによって提供されるアクションタスクのフィールド入力を返すために使用されます。たとえば、JIRAアクションタスクでは、エンドユーザーはワークスペース名の入力を求められます。次のように_fields_キーを使用してエンドユーザーの入力を保存することができます。
    _fields_["workspace"]
  • _last_run2016-03-05T12:44:38+00:00のように、ISO 8601形式を使用するWebサービスポーリングの協定世界時データタイムスタンプを返すために使用します。たとえば、Webサービスリクエストがペイロードレスポンス内のすべてのアクティビティを返す場合、_last_runキーを使用して、_last_runの値の前後に表示される結果をフィルタリングすることができます。
メニュー