ダイアログビルダーでエンティティ、確認、メッセージの各ノードを作成した後、Kore.aiでは以下のことができます。
- エンドユーザーに表示されるデフォルトのメッセージやユーザープロンプトを変更する。
- 新しいプロンプトまたはメッセージを追加します。
- チャネル固有のプロンプトやメッセージを追加する。
プロンプトのタイプ
ダイアログタスクは、2タイプのユーザープロンプトをサポートしています。
- 標準:ダイアログビルダーでノードを追加するときに定義されるプロンプトは、標準プロンプトまたはデフォルトプロンプトです。1つのノードに複数の標準プロンプトが定義されている場合、プラットフォームはランダムに1つを選択してエンドユーザーに表示します。
- チャネル固有:オプションとして、メール、SMS、Twitterなど特定のチャネルに対するユーザープロンプトを定義することもできます。数字のスライダー、日付と時刻のピッカー、レンジセレクターなど、チャネルに応じてさまざまなウィジェットを使用できます。
プロンプトエディター
プロンプトエディタには、次の機能を提供する3つのタブがあります。
- シンプル:ユーザープロンプトを定義およびフォーマットするための基本的なエディターコントロールとHTML。テキストを入力し、太字、斜体、ヘッダースタイル、ハイパーリンク、順序付きリストと順序なしリスト、および行の挿入用のボタンを使用してフォーマット化します。
- JavaScript:ユーザープロンプトの定義、形式、およびレンダリングを行う高度なJavaScriptエディター。
- プレビュー:エンドユーザーに表示されるマークアップで、レンダリングされた出力メッセージのサンプルを表示します。
以下は、天気APIからのレスポンスをカスタム形式でユーザーに表示する“フライトの予約”ボットのJavaScriptメッセージです。 エラープロンプトの場合、“現在のプロンプト”を再試行の順序トグルで有効にしていると、各エラープロンプトメッセージの前にハンドルバーのアイコンが表示されます。これを使用して、メッセージをその順序で表示するように並べ替えることができます。
ユーザープロンプトの設定
エンティティ、確認、またはメッセージノードの コンポーネントプロパティ タブからプロンプトまたはボットメッセージを追加または編集できます。エンティティノードと確認ノードの場合はプロンプトを参照し、メッセージノードの場合はレスポンスを参照します。
- ダイアログタスクビルダーで、プロンプトやレスポンスを設定する各ノードの横にある+アイコンをクリックします。
- 確認(またはエンティティまたはメッセージ)> 新規確認(またはエンティティまたはメッセージ)ノードを選択します。
- 確認 (またはエンティティまたはメッセージ)ウィンドウは、デフォルトではコンポーネントのプロパティタブが選択された状態で表示されます。
- ユーザープロンプト(またはボットレスポンス)セクションで管理をクリックします。メモ:デフォルトのサンプルメッセージをテキスト編集する場合は、テキストボックスでメッセージを直接変更し、管理をクリックせずにEnterを押します。
- 以下のいずれかを実行します。
- コンテキストオブジェクト変数やjavascriptのコードを追加してデフォルトのサンプルメッセージを編集するには、サンプルメッセージをクリックします。メッセージエディターが開きます。
- 新しいプロンプトメッセージを追加するには、プロンプトメッセージの追加/プロンプトの管理をクリックします。メッセージエディターが開きます。
- チャネルドロップダウンリストでは、すべてのチャネルがデフォルト値となっています。チャネル固有のメッセージを作成するには、リストからチャネルを選択します。
- メッセージエディターでは、プレーンテキストタブがデフォルトの選択です。Javascriptのメッセージを作成したい場合は、 JavaScript タブをクリックします。メモ:保存されたコンテキスト変数は、{{variable brackets}}で使用できます。例:’こんにちは{{context.session.UserContext.firstName}}.どのようなご用件でしょうか?’
- メッセージを作成し、保存をクリックします。
ボットのレスポンスをさらに追加するには、ステップ2bから繰り返します。
プレーンテキストプロンプト
エディターの プレーンテキスト タブを用いて、基本的なエディター制御とHTMLを使用するユーザープロンプトを構成します。テキストを入力して、さらに、太字、斜体、ヘッダースタイル、ハイパーリンク、順序付きリスト、記号付きリスト、行の挿入などのフォーマット設定ボタンを使用して、テキストの形式を設定できます。プレーンテキストタブは、以下のマークアップをサポートしています。
マークダウン | 出力 |
---|---|
#h1 | 見出し1 |
#h2 | 見出し2 |
#h3 | 見出し3 |
#h4 | 見出し4 |
#h5 | 見出し5 |
#h6 | 見出し6 |
“`Hello“` | |
*太字* | 太字 |
~斜体~ | 斜体 |
[Link](http://www.google.com) | リンク |
![Image](https://kbob.github.io/images/sample-4.jpg) | |
段落番号 1. これは1です 2. これは2です |
段落番号
|
箇条書き * これは1です * これは2です |
箇条書き
|
This is >>indented |
|
これは線 _____ | これは線 _____ |
これは<br>改行です | これは 改行です |
JavaScriptのプロンプトまたはレスポンス
エディターのJavaScriptタブにおいて、システム変数やセッション変数を用いてユーザープロンプトメッセージを取り扱うカスタムコードを追加することができます。ある場所の天気予報を表示するサンプルコードを以下に示します。
var loc=context.weatherapi.response.body.query.results.channel.item.condition.text.toLowerCase(); print("Here are the details:\n"); if(loc.indexOf("clear")>=0) { print('Its clear outside.'); } else if(loc.indexOf("sunny")>=0) { print("Its sunny outside"); } else if(loc.indexOf("cloud")>=0) { print("Its very cloudy day"); } else if (loc.indexOf('snow')>=0) { print('Its snowy day'); } else if(loc.indexOf('rain')>=0) { print('Yes, it looks like rainy day.'); } else if(loc.indexOf('breeze')>=0) { print("It's very breezy out there."); } else if(loc.indexOf('wind')>=0) { print("It's very windy out there."); } else if(loc.indexOf('shower')>=0) { print("It showering outside."); } print("Weather condition: " + context.weather +"\n"); print("Updated at: " + context.lastupdate+"\n"); print("Temperature: " + context.temp+"\n"); print("Wind: " + context.wind+"\n"); print("Pressure: " + context.pressure+"\n"); print("Visibility: " + context.humidity+"\n"); print("Humidity: " + context.visibility+"\n");
詳細については、タスクでのセッション変数とコンテキスト変数の使用を参照してください。
プロンプトまたはレスポンスのプレビュー
プレビュータブでは、マークアップによってエンドユーザーに表示されるレンダリング出力メッセージのサンプルを見ることができます。コンテキスト変数を含むコードの出力をレンダリングするには、タブ内の キーと値のボックスを使用するように定義して、プレビュー用の有効なサンプル出力をレンダリングします。
チャネル固有のユーザープロンプト
デフォルトでは、ダイアログタスクは、すべてのチャネルの標準的ユーザープロンプトを設定します。ただし、1つ以上のチャネルに特定のレスポンスを定義して、そのチャネルのエンドユーザーに、デフォルトのレスポンスの代わりにそれを表示することができます。チャネル固有のレスポンスを定義するには、Kore.aiのように、チャネルを選択して、必要に応じてJavaScript タブ上でユーザープロンプトを定義します。各チャネルでは1つの応答のみ定義できます。
メモ:以下のキーでデフォルト値に戻します。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));