봇 개요
이 봇은 사용자 선택에 따라 로스앤젤레스 국제공항에서 출발/도착하는 항공편 상태를 알려줍니다. 이 봇은 다음을 수행할 수 있습니다.
- 사용자에게 도착이나 출발 정보를 알고 싶은지 묻습니다.
- 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의 상태는 어떠합니까?와 같은 다양한 사용자 발화에 응답하도록 봇을 학습시킵니다 봇 학습시키기를 통해 이를 달성할 수 있습니다.
- 사용자가 접근하도록 채널을 활성화하고 봇을 게시합니다. 자세한 내용은 여기를 확인하세요.