タスクを定義すると、ボットプラットフォームが提供するセッション変数や自身で定義したカスタム変数、あるいはその変数のスコープを定義するコンテキストにアクセスすることができます。例として、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つ以上の企業リポジトリにアクセスする必要があります。以下のJavaScriptコードによって、リポジトリデータをGitrepository (企業コンテキスト) として存続させることができます。
var userRepository = { "title": _labels_[repository], "value": repository }; EnterpriseContext.put('Gitrepository', userRepository, 200000);
- BotContext – この特定のボットのすべてのユーザーが利用できるキー/値のペアです。例として、ユーザーの所在地に基づいて、セッションの金融取引のデフォルト通貨を設定することができます。以下の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”) –ユーザーのアカウントステータス。以下のようになります。
active
– ユーザーはアクティブであり、他のKore.aiユーザーと対話できます。inactive
– ユーザーはアクティブではありませんが、ユーザーデータはシステムに保持されます。suspended
– ユーザーは管理者によって停止されています。ユーザーはKore.aiにログインできなくなりますが、停止中のユーザーにメッセージを送ることはできます。locked
– ユーザーがログイン試行回数の上限を超えてしまいました。
- UserContext.get(“jTitle”) –ユーザーのタイトル(定義されている場合)。
- UserContext.get(“orgId”) –ユーザーアカウントの組織ID(定義されている場合)。
- UserContext.Get(“customData”) – ユーザー情報をWebチャネルに渡すために使用します。現在はwebSDKのみです。詳細については、ここを参照してください。
- UserContext.get(“identities”) – ユーザーの代替ID(定義されている場合) 。
val
– 代替IDtype
– 代替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 – 特定ユーザーの入力を基にして特定ボットに定義できるキー/値のペア。例として、ボットの複数のタスクに対して、ユーザーの位置情報を存続させたい場合があります。旅行ボットの場合、ユーザーは同じ自宅と目的地の住所に基づいてフライトとホテルを予約できる場合があります。例として、以下の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”には、URL が https://koreteam.atlassian.net/browse/BBF-3265 となるよう、テナント koreteam が必要です。以下のように、
_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_run – ISO 8601形式を使用して、WebサービスのポールのUTC日付のタイムスタンプを返すために使用されます。例:2016-03-05T12:44:38+00:00。例として、Webサービスリクエストがペイロードレスポンスであらゆるアクティビティを返すとすれば、
_last_run
キーを用いて、_last_run
値の前後に表示される結果をフィルタリングすることができます。