いくつかの通知タスクでは、こちらでご覧いただいた通り、Webhookによって送信されたペイロードによって通知が表示された際に、エンドユーザーに表示されるデータの見え方を定義します。
メッセージ定義の定義
タスクに対してBotの応答を2種類定義することができます。
- 全チャネルのデフォルト: API リクエストと定義済のプロセッサからのペイロード応答に基づいた全チャネルのデフォルト タイトルとメッセージ応答を作成します。応答オブジェクトや独自の入力、Kore.ai システムから派生した [変数キー] のセット、カスタム変数、応答サンプルを組み合わせたデータを作成することができます。メッセージは通常、整形された HTML メッセージとして表示され、リクエスト オブジェクト データからの ID 番号や件名の変数を 1 つ以上含んでいます。
- チャネル固有の応答: Facebook Messenger、Skype、SMS、Web/モバイル SDK など、特定のチャネル用にボット応答メッセージをカスタマイズすることができ、選択したチャネルに事前定義したメッセージ テンプレート (テーブル、リスト、グラフなど) を適用することもできます。
メッセージ定義エディター機能
アクション タスクのエディターを開くには、[ボットの応答] > [メッセージ定義] に移動します。メッセージ定義編集器は3つのタブで以下の特性を提供します:
変数キーの追加
以下のステップに従って変数キーを追加してください:
- 標準テキストモードや JavaScript モードで変数キーを追加するには、変数を追加したい場所にカーソルを合わせて [変数キー] をクリックします。
- [リクエスト/応答キー] ダイアログで、挿入する変数を含むキー ノードのタイプを開きます。
- のような、追加する変数を選択して
response.data.id
[OK]をクリックします。
標準キー
[標準キー] は、以下の再利用可能なデータのための 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" } }
- _tenant_ – 定義済のエンタープライズ向けのテナントを返します。たとえば JIRA には、URL が https://koreteam.atlassian.net/browse/BBF-3265 となるよう、テナント koreteam が必要です。以下のように、
_tenant_
キーでタスク応答へのリンクを作成することができます。 - _fields_ – エンドユーザーが提供する、ペイロードの応答の一部ではないタスク フィールドの入力を返すために使用します。たとえば JIRA タスクでは、エンドユーザーはワークスペース名を入力するように促されます。
_fields_
キーを使用して、エンドユーザーの入力を格納します。_fields_["workspace"]
- _last_run – 「2016-03-05T12:44:38+00:00」のような、ISO 8601 形式の Web サービスのポーリングの UTC 日付タイム スタンプを返すために使用します。たとえば、Web サービス リクエストがペイロード応答の全てのアクティビティを返す場合、
_last_run
キーを使用して_last_run
値の前後に表示された結果を絞り込むことができます。_last_run
セッションキー
[セッション キー] は、単一セッション インスタンス におけるユーザー データ用の Kore.ai 変数プレースホルダーです。
- UserContext.get(“_id”) – Kore.ai の userId です。
- UserContext.get(“emailId”) – userId に関連付けられたメール アドレスです。
- UserContext.get(“lastName”) – ユーザーの姓です。
- UserContext.get(“firstName”) – ユーザーの名です。
- UserContext.get(“profImage”) – ユーザーの画像やアバターのファイル名です。
- UserContext.get(“profColor”) – ユーザーアカウントの色です。
- UserContext.get(“activationStatus”) – ユーザーのアカウント ステータスです。
- UserContext.get(“jTitle”) – ユーザーの役職です (定義されている場合) 。
- UserContext.get(“orgId”) – ユーザーアカウントの組織 ID です (定義されている場合) 。
- UserContext.get(“customData”) – 開発者が定義したカスタム キーです。
- UserContext.get(“identities”) – ユーザーの代替 ID です (定義されている場合) 。
追加のセッションキーはボットタスクの定義そしてそのタスクに使用可能のキーのコンテキストの次第に、使用可能になります。セッションとコンテキストキーについての詳細については、タスクのセッション変数とコンテキスト変数を使用を参照してください。
応答キー
応答キーは [API 応答] タブにある [応答サンプル] のテキストから直接解析されます。応答キーは定義済の応答サンプルの次第に変わります。 次のリストは、Asanaタスクで使用できる応答キーの例です。
request.data.workspace request.data.projects request.data.name request.data.notes labels.498346170860 labels.30887755353556 labels["data.workspace"] labels["data.projects"] _tenant_ response.data.id response.data.created_at response.data.modified_at response.data.name response.data.notes response.data.completed response.data.assignee_status response.data.completed_at response.data.due_on response.data.due_at response.data.workspace.id response.data.workspace.name response.data.num_hearts response.data.parent response.data.followers[0].id response.data.followers[0].name response.data.hearted response.data.assignee response.data.projects[0].id response.data.projects[0].name response.data.memberships[0].project.id response.data.memberships[0].project.name response.data.memberships[0].section
レポート キー
レポートキーとはKore.ai 変数プレースホルダーとして、レポートテンプレート定義およびボットの応答を使用してユーザーがクリックできるメッセージに追加の情報へのリンクを表示します。
- reportInfo.reportLink – [レポート テンプレートの定義] セクションで定義された、当該タスクのリンクです。
- reportInfo.reportTitle – [レポート テンプレートの定義] セクションで定義された、当該タスクのタイトルです。
応答のプレビュー
メッセージ エディターで [プレビュー] をクリックすると、以下のオプションのうちの 1 つを使用して、応答プレビューを生成します。
- テストとプレビュー – ボットのタスク設定ページを開いてタスク設定と認証を定義し、Asana のようなサードパーティーの Web サービスにより生成された応答のプレビューを表示します。
- サンプル応答のプレビュー – タスクの [API リクエスト] タブの [応答サンプル] セクションで、定義済のキー/値ペアで提供されたサンプル データを介してプレビューを生成します。
カスタム JavaScript の応答の例
以下の例では、JavaScriptを使用して、タスクの応答メッセージが送信されたときにエンドユーザーに出力メッセージを表示するタイトルを投稿と説明を投稿セクションを定義する応答オブジェクトを示しています。以下の例では、descと書かれた変数は、JSON応答にキャプションの値が定義されている場合にのみ表示されます。
var desc = (caption !== "undefined" ? caption : "")
次の例では、タスクの [タイトル] を使用したクリック可能な URL が、タスクの応答メッセージに表示されます。
var tasklink = '' + title + '';
この最後の例では、リンク変数は、動画または写真のいずれかのタイプに依存します。タイプに応じて、適切なリンクが表示されます。
var link = ""; switch (type) { case "video": var video = (typeof(video_url) != "undefined") ? video_url : permalink_url; link = '<video controls><source src ="' + video + '" type="video/mp4"></video>'; break; case "photo": link = '<img src="' + image_permalink + '"></img>'; break; }
タスクのペイロード応答に基づいて、[JavaScript] タブでタスク固有の要件を処理するためのカスタム JavaScript を作成することができます。
チャネル固有のボットの応答
タスク応答メッセージは、応答メッセージが表示されるチャンネル、例えばKore.ai Messengerクライアント、電子メール、テキストメッセージなどに依存している場合があります。デフォルトでは、すべてのチャンネルのデフォルトで設定した応答メッセージが、すべてのチャンネルに送信されます。ただし、デフォルトの応答ではなく、単一や複数の20+サポートチャンネルに対して、特定の応答を定義して、そのチャンネルのエンドユーザーに表示することができます。
- 特定のチャネルの応答メッセージを定義するには、+チャネルを追加をクリックして、チャネルを選択ドロップダウンリストを表示します。
- たとえば、[Kore.ai] などのチャネルを選択して、[JavaScript] タブでチャネルの応答を設定します 。
各チャンネルには一つの応答が定義可能です。以下のJavaScriptの例は各チャンネルのKore.aiのデフォルトフォーマットテンプレートをオーバーライドする方法。
注意: 以下のキーを使用して、response.message(デフォルトのメッセージを文字列として返す)、response.message.choices(オプションの選択または確認メッセージタイプを配列として返す)のデフォルト値を返します。
- Slack チャネルの上書き例
var message = {}; var attachments = []; var attachment = { 'text': "Exception occurred during API execution", 'color': '#FFCC00', 'attachment_type': 'default' }; attachments.push(attachment); message.attachments = attachments; print(JSON.stringify(message));
- FaceBook チャネルの上書き例
var message = { text: response.message }; var buttons = []; for (var i = 0; i < response.choices.length; i++) { var choiceItem = response.choices[i]; if (choiceItem.length > 20) { choiceItem = choiceItem.substring( 0, 18) + '..'; } var element = { content_type: 'text', title: choiceItem, payload: choiceItem }; buttons.push(element); } message.quick_replies = buttons; print(JSON.stringify(message));
- メール チャネルの上書き例
var message = {}; var text = response.message + ' <br> '; for (var i = 0; i < response.choices.length; i++) { text = text.concat( '<u> + response.choices[i] + ' < /u> <br>'); } message.text = text; print(JSON.stringify(message));
- SMS チャネルの上書き例
var message = {}; var indexArray = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' ]; var text = response.message + '\n'; for (var i = 0; i < response.choices .length; i++) { text = text.concat(indexArray[i] + ') ' + response.choices[ i] + '\n'); } message.text = text; print(JSON.stringify(message));