ボットの概要
このボットは、ユーザーの選択に応じて、ロサンゼルス国際空港に到着/出発するフライトステータスを提供します。このボットは次のことができます:
- ユーザーに到着または出発について知りたいかどうかを尋ねます。
- APIにサービスコールをして、空港を発着するフライトの詳細を取得します。
- 到着または出発のユーザー設定に基づいてフライトナンバーを表示します。
- ユーザーにフライトナンバーを選択するように要求します。
- 選択されたフライトステータスの詳細を表示します。
- エラーがあれば処理します。
ボットを構築する
標準ボットを作成できます。作成するには、次の手順に従います。
ダイアログタスクを作成
ボットの作成後、ボットの概要ページに移動します。最初のステップは、インテントダイアログを追加することです。インテントダイアログは、ユーザーとボットの会話フローの最初のステップです。
- タスクウィジェットで、新しいタスクを追加をクリックし、ダイアログタスクを選択します。
- [ダイアログの作成]ページで、次の情報を入力します。
- インテント名-インテント名を入力します。これは、ダイアログをトリガーするフレーズです。インテント名は単純で、10〜15文字以内である必要があります。たとえば、「フライトステータスの取得」です。
- その他のオプションで、説明やその他のダイアログ関連の詳細を追加できます。デフォルト設定のままにしておきましょう。
- 続行をクリックします。
- 会話駆動型ダイアログビルダーにアップグレードするように求められますので、アップグレードを選択します。古いダイアログビルダーの手順については、こちらを参照ください
- [ユーザーインテント]ウィンドウには、デフォルトで会話ビルダーパネルが表示されます。
- 会話ビルダーウィンドウを閉じます。ダイアログビルダーを直接使用して、ダイアログタスクを構築します。
ユーザー設定エンティティノードを作成
通常エンティティノードは、ユーザーから情報を収集するために使用されます。これを使用して、到着又は出発の詳細に関するユーザーの好みをキャプチャします。
- ユーザーインテントノードの横にある+アイコンをクリックします
- エンティティ > 新しいエンティティを追加を選択します。
- 左側のノードパネルからエンティティをドラッグアンドドロップすることもできます。
- 新しく追加されたエンティティノードをクリックして、エンティティウィンドウを開きます。
- デフォルトでは、コンポーネントのプロパティタブが選択されています。
- 一般設定セクションで、次の情報を入力します:
- ユーザープロンプトセクションで、次のテキストを入力します:
Hello {{context.session.UserContext.firstName}}! Welcome to *Los Angeles International Airport*. I can help you with flight Arrival/Departure information. Please select your preference.
メモ:コンテキスト変数は、ユーザー名を取得します。また、空港名を太字で表示するためにマークダウンが使用されます。 - 値の一覧の表示セクションで、[はい、デフォルトメッセージにチャネル専用の標準フォーマットを使用し、利用可能な値のリストをエンドユーザーに表示します]オプションを選択します。これにより、サポートされているチャネルでボタンテンプレートとして値のリストが表示されます。
- エンティティウィンドウを閉じます。
サービスノードを作成
サービスボットアクションノードを使用すると、バックエンドAPI呼び出しを行うことができます。ここでは、APIを呼び出すてめにサービスノードを使用し、LAX空港発着のフライトのフライト情報を取得します。このチュートリアルでは、ダミーのAPIセットアップが使用されます。
- 設定エンティティノードの横にある+アイコンをクリックします。
- ボットアクション>新しいボットアクションを追加を選択します。
- 一般設定セクションで、次の情報を入力します:
- 名前:フライトの詳細
- 表示名:フライトの詳細
- ボットアクションノードの横にある+をクリックして、ボットアクションを展開します。
- ボットアクションノード内から[+]をクリックします
- サービス>[+新しいサービスを選択します。
- サービスノードは、バックエンドAPI呼び出し、LAX空港発着のフライトのフライト情報を取得するために使用されます。
- サービスノードをクリックしてサービスウィンドウを開きます。デフォルトでは、コンポーネントのプロパティタブが選択されています。
- 一般設定セクションで、次の情報を入力します:
- 接続セクションで、デフォルトの接続ルールをボットアクションの終了に設定します
- サービスウィンドウを閉じます。
- ボットアクションノードを折りたたみます。
フライト選択エンティティノードの作成
このエンティティノードは、ユーザーがステータスの詳細を必要とするフライトナンバーを取得するためのものです。
- フライトの詳細ボットアクションノードの横にある+アイコンをクリックします。
- エンティティ > 新しいエンティティノード追加を選択します。
- エンティティノードは、ユーザーが選択したフライトナンバーを取得するために必要です。
- エンティティウィンドウでは、デフォルトでコンポーネントのプロパティタブが選択されています。
- 一般設定セクションで、次の情報を入力します:
- 名前:フライトを選択
- 表示名:フライトを選択
- タイプ:文字列(ユーザーは、次の手順でAPI文字列出力を値のリストに変換するカスタムスクリプトを作成できます。これは、使用するダミーAPIの要件です)
- ユーザープロンプトセクションで、次のテキストを入力します。
Please provide the flight number.
- 管理:ユーザーは、Web SDKチャネルの特定のプロンプトを定義できます。
- 管理をクリックします
- プロンプトメッセージを追加をクリックします。
- 新しいプロンプトメッセージウィンドウで、チャネルドロップダウンリストから[Web /モバイルクライアント]を選択します。
- メッセージセクションで、JavaScriptタブをクリックします。
- 次のJavaScriptを入力します。JavaScriptは、API呼び出しから出力された文字列からユーザーの好みに一致するフライトナンバーを抽出し、クイック返信フォーマットで表示します。
var data = context.Fetchflightdetails.response.body.details; context.flights = []; context.info; var msg; for (var i = 0; i < data.length; i++) { if (context.entities.Preference == data[i].Type) { var details = { "Airlines" : data[i].Airlines, "FlightNo" : data[i].FlightNo, "Airport" : data[i].Airport, "AirportName" : data[i].AirportName, "Time" : data[i].Time }; context.flights.push(details); } } var message = { "type" : "template", "payload" : { "template_type" : "quick_replies", "text" : "Here are the flights " + context.entities.Preference + " details for Los Angeles International Airport today. Please select the flight number to see details", "quick_replies" : [] } }; for (i=0; i < context.flights.length; i++) { var replies = { "content_type":"text", "title" : context.flights[i].FlightNo, "payload" : context.flights[i].FlightNo }; message.payload.quick_replies.push(replies); } return JSON.stringify(message);
- 「保存」をクリックします。
- ダイアログビルダーに戻り、エンティティウィンドウを閉じます。
スクリプトノードの作成
スクリプトノードは、ダイアログタスクでカスタムJavaScriptを作成するために使用されます。ここで、ユーザーは選択したフライトの詳細を抽出するためにスクリプトを使用できます。後で、ユーザーはこのスクリプトに更に機能を追加できます。
- フライトエンティティの選択ノードの横にある+アイコンをクリックします。
- ボットアクション> 新しいボットアクションを追加を選択します。
- 一般設定セクションで、次の情報を入力します:
- 名前:フライトの検証
- 表示名:フライトの検証
- ボットアクションノードの横にある+をクリックして、ボットアクションを展開します。
- ボットアクションノード内から[+]をクリックします
- スクリプト> 新しいスクリプトノード追加を選択します。
- スクリプトウィンドウでは、デフォルトでコンポーネントのプロパティタブが選択されています。
- 一般設定セクションで、次の情報を入力します:
- 名前:フライトの検証
- 表示名:フライトの検証
- スクリプト定義セクションで、スクリプトの定義をクリックします。
- [スクリプトの追加]ダイアログボックスで、次のJavaScriptをコピーします。このコードは、選択したフライトナンバーの詳細を抽出します。
context.details; var x = context.flights.length; for (var l = 0; l < x; l++) { if (context.entities.SelectFlight == context.flights[l].FlightNo) { context.details = { "Airlines" : context.flights[l].Airlines, "FlightNo" : context.flights[l].FlightNo, "Airport" : context.flights[l].Airport, "AirportName" : context.flights[l].AirportName, "Time" :context.flights[l].Time }; break; } }
- 「保存」をクリックします。
- 接続セクションで、デフォルトの接続ルールをボットアクションの終了に設定します
- スクリプトウィンドウを閉じます。
- ボットアクションノードを折りたたみます。
メッセージノードの作成
メッセージノードは、ボットからユーザーへのメッセージを表示するために使用されます。ここで、ユーザーはメッセージノードを使用して、ユーザーの好みに合わせて適切なフライトの詳細を表示できます。
- フライトスクリプトの検証ノードの横にある+アイコンをクリックします。
- メッセージ> 新しいメッセージノード追加を選択します
- メッセージウィンドウでは、デフォルトでコンポーネントのプロパティタブが選択されています。
- 一般設定セクションで、次の情報を入力します:
- 名前:フライトの詳細
- 表示名:フライトの詳細
- ボットレスポンスセクションで、次のテキストを入力します:
Here are your flight details.
- 入力をクリックして保存します。
- プロンプトの管理:ユーザーは、Web SDKチャネルの特定のプロンプトを定義できます。
- 管理をクリックします。
- ボットレスポンス管理のページで、ボットレスポンの追加をクリックします。
- チャネルドロップダウンリストからWeb/Mobile clientを選択します。
- メッセージセクションで、JavaScriptタブをクリックします。
- 次のJavaScriptをコピーします。JavaScriptは、フライトの詳細を表形式で表示するように作成されています。
var message = { "type": "template", "payload": { "template_type": "mini_table", "layout": "horizontal", "text":"Flight " + context.entities.Preference + " Information" , "elements": [ { "primary":[["Flight No"], [context.details.FlightNo, "right"]], "additional":[["Airlines", context.details.Airlines],["From",context.details.Airport],["Time",context.details.Time],["Remarks","On Time"]] } ] } }; print(JSON.stringify(message));
-
- 「保存」をクリックします。
- メッセージウィンドウに戻ります。
- メッセージウィンドウで、接続タブをクリックします。
- ドロップダウンリストから、デフォルトの接続を[未接続]から[ダイアログの終了]に変更します。
- 保存をクリックします。
- メッセージウィンドウを閉じます。
イベントを追加
現在、ボットは開始時にユーザー入力を待っています。また、ボットは会話の開始時にユーザーをガイドできます。このために、Web / モバイル SDKから新しい接続が確立されるたびに、このタスクを開始するイベントハンドラーを追加できます。
- ダイアログビルダーを閉じて、ボットタスクページに移動します。
- 左側のナビゲーションペインから、インテリジェンス> イベントを選択します。
- イベントリストから、接続時イベントに対して構成をクリックします。
- [接続時]ウィンドウでは、デフォルトでタスクの開始オプションが選択されているので、それを保持します。
- ドロップダウンリストから、フライトステータスの取得タスクを選択します。
- 保存して有効にするをクリックします。
ボットのテスト
ダイアログタスクをテストするには、右下の[ボットと会話]オプションを使用できます。接続時イベントが構成されているため、ダイアログが自動的に開始されます。ボットの指示に従ってください:
- 到着/出発を選択
- フライトナンバーを選択する代わりに、リストに存在しない番号を手動で入力します。
- 申し訳ありませんが、問題が発生し、タスクを破棄しなければならなかったなどの一般的なメッセージが表示されます。再試行してください。
次の手順では、これを修正する方法を確認できます。
スクリプトノードの変更
文字列タイプはフライトの選択エンティティで使用されるため、ユーザーがリストから選択する代わりに、誤ったフライト番号を手動で入力と言ったシナリオを処理できます。これを行うには、接続に基づいて適切なメッセージを表示します。このステップでは、ユーザーエントリの検証を追加するために、前に保存したスクリプトを変更する事ができます。
- ダイアログビルダーページを開きます。以下のどちらかを行うことができます
- 左側のナビゲーションペインで、会話スキル]-> [ダイアログタスクをクリックし、フライトステータスの取得タスクを選択します。
- 左側のナビゲーションペインで、概要をクリックし、フライトステータスの取得タスクを選択します。
- フライトスクリプトの検証ノードを選択します。
- フライトスクリプトの検証ウィンドウのスクリプト定義セクションで、スクリプトの編集をクリックします。
- [スクリプトの追加]ダイアログボックスで、次のJavaScriptをコピーし、既存のコードを置き換えます。ユーザーが入力したフライトナンバーがAPIサービス呼び出しによって返されたエントリと一致したときに設定される有効なタグを追加できます。
context.valid = false; context.details; var x = context.flights.length; for (var l = 0; l < x; l++) { if (context.entities.SelectFlight == context.flights[l].FlightNo) { context.valid = true; context.details = { "Airlines" : context.flights[l].Airlines, "FlightNo" : context.flights[l].FlightNo, "Airport" : context.flights[l].Airport, "AirportName" : context.flights[l].AirportName, "Time" :context.flights[l].Time }; break; } } if (context.valid === false) { delete context.entities.SelectFlight; }
- [フライトスクリプトの検証]ウィンドウを閉じます。
条件付きフローを作成
以下は、[フライトスクリプトの検証]ノードから条件付きフローを追加する手順です。このスクリプトノードから新しいメッセージノードへの接続が新たに確立されます。これは、ボットからユーザーに対しエラーメッセージを表示し、フライトナンバーを再度選択するように促すためです。
エラーメッセージの作成
- [フライト検証]ボットアクションノードと[フライト詳細]メッセージノードの間の接続にカーソルを合わせます。
- ノードの追加ボタンが表示されたら、それをクリックします。
- 新しいボットメッセージノードを作成します。
- メッセージ> 新しいメッセージノード追加を選択します。
- メッセージウィンドウでは、デフォルトでコンポーネントのプロパティタブが選択されています。
- 一般設定セクションで、次の情報を入力します:
- 名前:エラーメッセージ
- 表示名:エラーメッセージ
- ボットレスポンスセクションで、次のテキストを入力します:
The Flight number entered is incorrect. Let us start again.
- 入力をクリックして保存します。
- 接続タブをクリックします。
- ドロップダウンリストから、デフォルトの接続を[未接続]から[フライトの選択]に変更します。
- 保存をクリックします。
- エラーメッセージウィンドウを閉じます。
フライトスクリプト接続の検証
- フライトの検証ボットアクションノードをクリックします。
- [フライトの検証]ボットアクションウィンドウで、接続タブをクリックします。
- + ADD IFをクリックします。
- IFセクションの下で、
- コンテキストを選択します
- IF条件として、テキストを有効として入力します。
- 演算子を等しいものとして選択します。
- 値を真値として入力します。
- この条件が真の場合、ダイアログはフライトの詳細に移動します。
- ELSEセクションの下で、
- この条件が誤の場合、ダイアログはエラーメッセージに移動します。
- 「保存」をクリックします。
- [フライトスクリプトの検証]ウィンドウを閉じます。
これで、最初のボットが正常に作成およびテストされました。次のステップは次のとおりです:
- フライトのステータスを知りたい、QR040のステータスは何ですか?などのさまざまなユーザーの発話に対応するようにボットをトレーニングします。これは、ボットをトレーニングすることで実現できます。
- チャネルを有効にし、ユーザーがアクセス出来る様にボットを公開します。詳細はこちらをご確認ください。