목차
폼 사용가이드
챗봇에서 사용자의 입력을 선택적으로 받을 수 는 방법은 폼(Form)를 통해서 가능합니다.
챗봇이 사용자에게 여러 가지의 선택지 중에 한가지를 선택하도록 설계하려면
1.멀티링크 2.폼
두 가지를 사용할 수 있습니다.
멀티 링크는 폼과 UI는 동일하지만, 선택지를 클릭했을 때 URL 링크로 이동하는 단순한 액션을 취하게 됩니다.
그러나 폼을 사용하면 사용자의 선택에 따라 챗봇은 그 다음의 선택지로 이동, 혹은 더 많은 대화를 입력 및 폼 입력에 따른 조회 등 다양한 기능으로 확장 할 수 있습니다.
폼의 사용 형태
폼을 사용하는 방법은 크게 두 가지 입니다.
1.폼을 연속적으로 연결하기
2.폼과 폼의 응답 정보를 액션 메소드 연결한 대화 만들기
3.주관식 폼 - 사용자에게 입력을 받고, 그정보를 액션메소드로 전달하기
먼저, 폼을 연속적으로 연결하는 방식은 홈페이지의 카테고리 서브 메뉴 찾아 내려가는 방식입니다. 이 기능은 자연어 처리와는 상관없이 시나리오에 따라서 흐름이 연결되는 단순한 방식입니다.
즉, 폼1> 폼2 > 폼3 을 연속적으로 연결하고, 각 단계별 사용자 선택을 유도할 수 있습니다.
실제로도 이 방법으로도 유용하게 사용자 경험을 설계할 수 있습니다. 그러나, 이 형태로 Form을 매우 많이 생성하는 경우, 그 흐름을 운영 유지하기가 어려운 단점이 있습니다. 챗봇 빌더 에서는 폼 흐름을 쉽게 인지할 수 있도록 시나리오 탭에서 폼 흐름을 따갈 수 있는 기능을 제공합니다.
또 한가지 사용방법으로 아래 예시처럼 사용자 선택에 따라 액션 메소드를 실행하고 답변을 연결하는 방법으로 챗봇을 응용할 수 있습니다.
- 시나리오 예시: 오늘 날씨 알려줘라는 질문에
#{도시선택}
이라는 폼을 제공하도록 설계하였습니다. 그리고 서울을 선택하면${weather}
라는 액션메소드를 실행하여 답변을 주는 시나리오입니다.
마지막으로 주관식으로 사용자에게 입력을 받고, 그정보를 다음 턴으로 연결하는 시나리오도 구성할 수 있습니다.
- 시나리오 예시: 고객님의 의견을 남겨주세요 질문에
#{의견 남기기}
이라는 주관식 폼을 제공하도록 설계하였습니다. 그리고 고객이 의견을 챗봇에게 남기면${customerVoc}
라는 액션메소드를 실행하여 사용자의 모든 입력을 Backend Service로 전달하고, 서버의 응답에 따라 고객에게 안내하는 시나리오입니다.
챗봇의 폼 기능으로 유용한 기능을 만드는 예시
1. 폼 + 액션메소드
폼은 사용자의 입력을 선택적으로 받을 수 있는 방법입니다.
시나리오 예시: 오늘 날씨 알려줘라는 질문에 #{도시선택}
이라는 폼을 제공하도록 설계하였습니다. 그리고 서울을 선택하면 ${weather}
라는 액션메소드를 실행하여 답변을 주는 시나리오입니다.
1.엔티티를 생성합니다.
- '도시'라는 엔티티를 입력합니다. 대표어에는 '서울'과 '뉴욕'을 입력합니다.
2.액션메소드를 생성합니다.
${weather}를 생성합니다.
- 호출할 URL은 GET 방식으로
city = 도시명
을 넘기면 현재의 온도값을 보내주도록 개발되어 있다고 가정합니다. 호출 URL에서 넘겨줄 인자 값에city=$[도시]
를 입력하여 액션메소드를 생성합니다.
- 호출할 URL은 GET 방식으로
> **참고**
>
> 액션메소드 테스트를 위해서 간단하게 Serverless 함수를 하나 만들었습니다. 우측의 "echo 호출"버튼을 클릭하여 간단히 테스트하실 수 있습니다.
> ```
> https://beta-chatbot.ncloud.com/api/v1/actionmethod/echo?city=$[도시]
> ```
3.폼을 생성합니다.
- 폼
#{도시선택}
을 생성합니다.- 서울을 선택하거나 텍스트로 서울이라고 입력한 경우에
${weather}
액션메소드가 호출됩니다.
- 서울을 선택하거나 텍스트로 서울이라고 입력한 경우에
4.대화를 생성합니다.
발화 예시 질문에 '오늘 날씨 알려줘'라고 입력하고 답변에는
#{도시선택}
을 입력합니다.- 학습을 클릭하고 테스트를 완료합니다
2. 폼 + 폼, 폼 + 대화
챗봇 서비스에서는 폼을 사용하여 사용자의 선택을 제한하지 않아도 사용자의 자연스러운 입력을 통해서 서비스 구성이 가능합니다. 그러나 정해진 시나리오를 통해서 사용자의 선택을 이끌어가야 할 경우에는 폼을 연속해서 연결하거나 폼에서 대화로 연결하는 것이 가능합니다.
1.폼과 폼을 연결하는 방법은 다음과 같습니다.
- 버튼 액션은 텍스트 답변을 선택합니다.
- 텍스트 입력 창에 다음에 연결할 폼을 입력합니다.
예를들어 #{서비스추천}
폼은 버튼에 따라 #{게임서비스}
폼이나 #{모바일 및 웹서비스}
폼을 호출할 수 있습니다.
2.폼과 대화를 연결하는 방법은 다음과 같습니다.
- 버튼 액션은 대화 연결을 선택합니다.
- 버튼 선택 시 연결할 대화의 이름을 입력합니다. 만약 등록되지 않은 대화 이름을 입력하면, 해당 이름으로 신규 대화가 생성됩니다.
예를 들어 #{모바일 및 웹서비스}
폼은 버튼에 따라 '모바일 서비스'대화
나 '웹 서비스' 대화
를 호출할 수 있습니다.
3. 주관식 폼
사용자에게 선택지를 제시하여 시나리오를 이끌어나가는 객관식폼과는 달리, 주관식폼은 사용자의 자유로운 발화를 답변으로 받아 다음 시나리오로 연결하거나 액션메소드로 사용자의 발화를 전달할 수 있는 기능입니다. 아래는 고객이 불만족하다고 피드백을 응답한 사용자에게 사용자 개선 의견을 받는 시나리오 예시입니다.
1.${사용자개선의견전달} 액션메소드를 생성합니다.
(액션메소드 생성화면 이미지)
- 해당 액션메소드는 주관식 폼에 응답한 유저의 메시지를 utf-8로 인코딩하여 액션메소드 헤더에 X-KAA-USERMSG 담아 전달합니다.
2.#{사용자개선의견} 주관식 폼을 생성합니다.
(주관식 폼 생성 이미지. 답변부분: "죄송합니다 고객님, 의견을 남겨주시면 더욱 더 발전하는 챗봇이 되겠습니다." 유저응답시 답변 부분 :"${사용자개선의견전달} 고객님의 소중한 의견 감사드립니다." )
- 답변에는 고객에게 불편을드려 죄송하다는 내용과 함께, 의견을 남겨주면 개선하겠다는 메시지를 입력합니다.
- 유저 응답시 답변에는 ${사용자개선의견전달} 액션메소드와 함께 의견을 남겨주어 감사하다는 메시지를 입력합니다.
3.피드백을 설정합니다.
(피드백 설정 이미지)
피드백의 불만족 버튼에 대한 응답으로 #{사용자개선의견} 주관식 폼을 입력합니다.
피드백 기능은 연동된 메신저 채널에 따라 해당 기능을 사용할수 있으므로 채널확인 필요합니다.