봇 개요
이 봇은 사용자 선택에 따라 로스앤젤레스 국제공항에서 출발/도착하는 항공편 상태를 알려줍니다. 이 봇은 다음을 수행할 수 있습니다.
- 사용자에게 도착이나 출발 정보를 알고 싶은지 묻습니다.
- API에 서비스 호출을 수행하여 공항에 도착 및 출발하는 항공편의 세부 정보를 가져옵니다.
- 도착 또는 출발에 관한 사용자 설정에 따라 항공편 명을 표시합니다.
- 사용자에게 항공편 명 선택을 요청합니다.
- 선택한 항공편의 상태 세부 정보를 표시합니다.
- 모든 오류를 처리합니다.
대화 작업 생성
봇 생성 후, 봇 요약 페이지로 이동합니다. 첫 번째 단계는 의도 대화를 추가하는 것입니다. 의도 대화는 사용자-봇 대화 흐름의 첫 번째 단계입니다.
- 작업 위젯에서 + 새 작업을 클릭하고 대화 작업을 선택합니다.
- 대화 페이지에서 다음 세부 정보를 입력합니다.
- 의도 이름 – 의도 이름을 입력합니다. 대화를 실행하는 구문입니다. 의도 이름은 단순해야 하며 3~4단어를 넘지 않아야 합니다. 예시, 항공편 상태 가져오기.
- 추가 옵션에서, 설명 및 기타 대화 관련 세부 정보를 추가할 수 있습니다. 기본 설정을 유지합시다.
- 진행을 클릭합니다.
- 대화 기반 대화 빌더로 업그레이드하라는 메시지가 표시되면, 업그레이드를 선택합니다. 이전 대화 빌더의 지시 사항은 여기를 참조하세요
- 사용자 의도 창에는, 기본적으로, 대화 빌더 패널이 표시됩니다.
- 대화 빌더 창을 닫습니다. 대화 빌더를 직접 사용하여 대화 작업을 구축합니다.
사용자 기본 설정 엔티티 노드 생성
엔티티 노드는 사용자에게 정보를 수집하는 데 일반적으로 사용됩니다. 도착이나 출발 세부 정보의 사용자 기본 설정을 캡처하는 데 사용합시다.
- 사용자 의도 노드 옆에 있는 + 아이콘을 클릭합니다.
- 엔티티 > + 새 엔티티를 선택합니다.
- 왼쪽 노드 패널에서 엔티티를 끌어서 놓을 수도 있습니다.
- 새로 추가된 엔티티 노드를 클릭하여 엔티티 창을 엽니다.
- 기본적으로, 구성 요소 속성 탭이 선택되어 있습니다.
- 일반 설정 섹션에서, 다음 세부 정보를 입력합니다.
- 사용자 프롬프트 섹션에서, 다음 텍스트를 입력합니다.
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 설정이 사용됩니다.
- 기본 설정 엔티티 노드 옆에 있는 + 아이콘을 클릭합니다.
- 봇 조치 > + 새 봇 조치를 선택합니다.
- 일반 설정 섹션에서, 다음 세부 정보를 입력합니다.
- 이름: FlightDetails
- 표시 이름: Flight Details
- 봇 조치 노드 옆에 있는 +를 클릭하여 봇 조치를 확장합니다.
- 봇 조치 노드 내에서 +를 클릭합니다
- 서비스 > + 새 서비스를 선택합니다.
- 서비스 노드는 백엔드 API를 호출하여 LAX 공항의 출발 및 도착 항공편 정보를 얻는 데 사용합니다.
- 서비스 노드를 클릭하여 서비스 창을 엽니다. 기본적으로, 구성 요소 속성 탭이 선택되어 있습니다.
- 일반 설정 섹션에서, 다음 세부 정보를 입력합니다.
- 연결 섹션에서 기본 연결 규칙을 봇 조치의 끝으로 설정합니다
- 서비스 창을 닫습니다.
- 봇 조치 노드를 축소합니다.
항공편 선택 엔티티 노드 생성
이 엔티티 노드는 사용자가 상태 세부 정보를 원하는 항공편 명을 캡처하기 위한 것입니다.
- Flight Details 봇 조치 노드 옆에 있는 + 아이콘을 클릭합니다.
- 엔티티 > 새 엔티티 노드 +를 선택합니다.
- 엔티티 노드는 사용자가 선택한 항공편 명을 캡처하는 데 필요합니다.
- 엔티티 창에서, 기본적으로, 구성 요소 속성 탭이 선택되어 있습니다.
- 일반 설정 섹션에서, 다음 세부 정보를 입력합니다.
- 이름: SelectFlight
- 표시 이름: Select Flight
- 유형: 문자열(사용자는 사용자 정의 스크립트를 작성하여 다음 단계를 거쳐 API 문자열 출력을 값 목록으로 변환할 수 있습니다. 이는 사용된 더미 API의 요건입니다)
- 사용자 프롬프트 섹션에서, 다음 텍스트를 입력합니다.
Please provide the flight number.
- 관리: 사용자는 웹 SDK 채널에 특정 프롬프트를 정의할 수 있습니다.
- 관리를 클릭합니다.
- 프롬프트 메시지 추가를 클릭합니다.
- 새 프로프트 메시지 창의 채널 드롭다운 목록에서 웹/모바일 클라이언트를 선택합니다.
- 메시지 섹션에서, 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를 작성하는 데 사용합니다. 여기서, 사용자는 스크립트를 사용하여 선택한 항공편 세부 정보를 추출할 수 있습니다. 이후 사용자는 이 스크립트에 더 많은 기능을 추가할 수 있습니다.
- Select Flight 엔티티 노드 옆에 있는 + 아이콘을 클릭합니다.
- 봇 조치 > + 새 봇 조치를 선택합니다.
- 일반 설정 섹션에서, 다음 세부 정보를 입력합니다.
- 이름: Flight Validation
- 표시 이름: Flight Validation
- 봇 조치 노드 옆에 있는 +를 클릭하여 봇 조치를 확장합니다.
- 봇 조치 노드 내에서 +를 클릭합니다
- 스크립트 > 새 스크립트 노드 +를 선택합니다.
- 스크립트 창에서 기본적으로 구성 요소 속성 탭이 선택되어 있습니다.
- 일반 설정 섹션에서, 다음 세부 정보를 입력합니다.
- 이름: ValidateFlight
- 표시 이름: Validate Flight
- 스크립트 정의 섹션에서 스크립트 정의하기를 클릭합니다.
- 스크립트 추가 대화 상자에서 다음 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; } }
- 저장을 클릭합니다.
- 연결 섹션에서 기본 연결 규칙을 봇 조치의 끝으로 설정합니다
- 스크립트 창을 닫습니다.
- 봇 조치 노드를 축소합니다.
메시지 노드 생성
메시지 노드는 봇이 사용자에게 보내는 메시지를 표시하는 데 사용됩니다. 여기서, 사용자는 메시지 노드를 사용하여 사용자 기본 설정에 따라 적절한 항공편 세부 정보를 표시할 수 있습니다.
- 항공편 검증 스크립트 노드 옆에 있는 + 아이콘을 클릭합니다.
- 메시지 > 새 메시지 노드 +를 선택합니다.
- 메시지 창에서 기본적으로 구성 요소 속성 탭이 선택되어 있습니다.
- 일반 설정 섹션에서, 다음 세부 정보를 입력합니다.
- 이름: FlightDetails
- 표시 이름: Flight Details
- 봇 응답 섹션에서, 다음 텍스트를 입력합니다.
Here are your flight details.
- Enter를 클릭하여 저장합니다.
- 프롬프트 관리: 사용자는 웹 SDK 채널에 특정 프롬프트를 정의할 수 있습니다.
- 관리를 클릭합니다.
- 봇 응답 관리 페이지에서 봇 응답 추가를 클릭합니다.
- 채널 드롭다운 목록에서 웹/모바일 클라이언트를 선택합니다.
- 메시지 섹션에서, 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));
- 저장을 클릭합니다.
- 메시지 창으로 돌아갑니다.
- 메시지 창에서, 연결 탭을 클릭합니다.
- 드롭다운 목록에서, 연결되지 않음에서 대화의 끝으로 기본 연결을 변경합니다.
- 저장을 클릭합니다.
- 메시지 창을 닫습니다.
이벤트 추가
현재, 봇은 사용자 입력을 기다리고 있습니다. 또한 봇은 대화 시작 시 사용자를 안내할 수 있습니다. 따라서, 웹/모바일 SDK에서 새 연결이 설정될 때마다 이 작업을 시작하는 이벤트 처리기를 추가할 수 있습니다.
- 대화 빌더를 닫고 봇 작업 페이지로 이동합니다.
- 왼쪽 탐색 창에서, 인텔리전스 > 이벤트를 선택합니다.
- 이벤트 목록에서, On Connect 이벤트에 대한 설정을 클릭합니다.
- On Connect 창에서, 기본적으로 작업 시작 옵션이 선택되어 있으므로 그대로 유지합니다.
- 드롭다운 목록에서 항공편 상태 가져오기 작업을 선택합니다.
- 저장 및 활성화를 클릭합니다.
봇 테스트
대화 작업 테스트를 위해, 오른쪽 하단의 봇과 대화 옵션을 사용할 수 있습니다. onConnect 이벤트가 설정되었으므로, 대화가 자동으로 시작됩니다. 봇 지시 사항을 따릅니다.
- 도착/출발 선택
- 항공편 명을 선택하는 대신에 목록에 없는 편명을 수동으로 입력합니다.
- 죄송합니다. 문제가 발생하여 작업을 삭제했습니다와 같은 일반적인 메시지를 볼 수 있습니다. 다시 시도해주세요”.
다음 단계에서, 이 문제를 해결하는 방법을 확인할 수 있습니다.
스크립트 노드 수정
문자열 유형이 항공편 선택 엔티티에서 사용되므로, 사용자가 목록에서 선택하지 않고, 잘못된 항공편 명을 수동으로 입력한 시나리오를 처리할 수 있습니다. 이 작업은 연결을 기반으로 적절한 메시지를 표시하여 수행할 수 있습니다. 이 단계에서는, 이전에 저장한 스크립트를 수정하여 사용자 항목의 검증을 추가할 수 있습니다.
- 대화 빌더 페이지를 엽니다. 두 가지 방법으로 가능합니다
- 왼쪽 탐색 창에서 대화형 스킬 -> 대화 작업을 클릭하고 항공편 상태 가져오기 작업을 선택합니다.
- 왼쪽 탐색 창에서 요약을 클릭하고 항공편 상태 가져오기 작업을 선택합니다.
- 항공편 검증 스크립트 노드를 선택합니다.
- 항공편 검증 스크립트 창의 스크립트 정의 섹션에서 스크립트 편집을 클릭합니다.
- 스크립트 추가 대화 상자에서 다음 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; }
- 항공편 검증 스크립트 창을 닫습니다.
조건부 흐름 생성
다음은 항공편 검증 스크립트 노드에서 조건부 흐름을 추가하는 단계입니다. 이 스크립트 노드에서 새 메시지 노드로 가는 새로운 연결이 형성됩니다. 이것은 봇의 오류 메시지를 사용자에게 표시하고 리디렉션하여 항공편 명을 다시 선택하기 위함입니다.
오류 메시지 생성
- 항공편 검증 봇 조치 노드와 항공편 세부 정보 메시지 노드 사이의 연결 위로 마우스를 이동합니다.
- 노드 추가 버튼이 나타나면, 클릭합니다.
- 새 봇 메시지 노드를 생성합니다.
- 메시지 > 새 메시지 노드 +를 선택합니다.
- 메시지 창에는, 기본적으로, 구성 요소 속성 탭이 선택되어 있습니다.
- 일반 설정 섹션에서, 다음 세부 정보를 입력합니다.
- 이름: ErrorMessage
- 표시 이름: Error Message
- 봇 응답 섹션에서, 다음 텍스트를 입력합니다.
The Flight number entered is incorrect. Let us start again.
- Enter를 클릭하여 저장합니다.
- 연결 탭을 클릭합니다.
- 드롭다운 목록에서 연결되지 않음에서 SelectFlight로 기본 연결을 변경합니다.
- 저장을 클릭합니다.
- 오류 메시지 창을 닫습니다.
ValidateFlight 스크립트 연결
- 항공편 검증 봇 조치 노드를 클릭합니다.
- 항공편 검증 봇 조치 창에서 연결 탭을 클릭합니다.
- + IF 추가를 클릭합니다.
- IF 섹션에서,
- 컨텍스트를 선택합니다
- If 조건의 경우, 유효한 것으로서 텍스트를 입력합니다.
- 연산자를 equals로 선택합니다.
- 값을 true로 선택합니다.
- 이 조건이 참이면, 대화는 FlightDetails로 이동합니다.
- ELSE 섹션에서,
- 이 조건이 거짓이면 대화는 ErrorMessage로 이동합니다.
- 저장을 클릭합니다.
- 항공편 검증 스크립트 창을 닫습니다.
성공적으로 첫 번째 봇을 생성하고 테스트했습니다. 다음 단계는 다음과 같습니다.
- 항공편 상태를 알고 싶습니다, QR040의 상태는 어떠합니까?와 같은 다양한 사용자 발화에 응답하도록 봇을 학습시킵니다 봇 학습시키기를 통해 이를 달성할 수 있습니다.
- 사용자가 접근하도록 채널을 활성화하고 봇을 게시합니다. 자세한 내용은 여기를 확인하세요.
ボットの概要
このボットは、ユーザーの選択に応じて、ロサンゼルス国際空港に到着/出発するフライトステータスを提供します。このボットは次のことができます:
- ユーザーに到着または出発について知りたいかどうかを尋ねます。
- 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のステータスは何ですか?などのさまざまなユーザーの発話に対応するようにボットをトレーニングします。これは、ボットをトレーニングすることで実現できます。
- チャネルを有効にし、ユーザーがアクセス出来る様にボットを公開します。詳細はこちらをご確認ください。