대화 컴포넌트

대화 컴포넌트는 자연어 기반 챗봇 엔진의 특성을 잘 이해한 후 꼭 필요한 곳에만 써야 효과적입니다.

대화 생성 방법에 익숙해졌다면 고급 기능인 대화 컴포넌트 관리를 이용해 보세요. 대화 컴포넌트는 기능은 챗봇의 답변에서 좀 더 사용자 친화적인 답변을 할 수 있도록 도와주는 기능입니다.

네이버 클라우드 플랫폼 챗봇은 3가지의 대화 컴포넌트를 제공합니다.

  • 액션메소드: 외부의 URL을 호출하여 그 응답 결과값을 답변에 포함하여 제공하는 기능입니다.
  • 폼: 객관식 단일/다중 선택 및 주관식의 답변을 제공하고, 그에 따른 피드백으로 대화를 이어가는 기능입니다.
  • 태스크: 슬롯 채우기 기법으로 여러 단계를 거쳐 특정 대화의 슬롯을 모두 채우고 나면 지정한 폼을 실행하여 대화를 마무리하는 기능입니다.

액션메소드와 폼은 대화 컴포넌트로서, 액션메소드를 호출한 뒤 그 다음 단계로 폼을 호출할 수 있습니다. 반대로 폼을 호출한 뒤, 사용자의 선택에 따라 액션메소드를 연달아 호출할 수도 있습니다. 주로 Rule 기반 챗봇에서 제공되는 기능이지만, 액션메소드와 폼을 적절히 구성함으로써 Rule 기반 챗봇의 '기능성 멀티턴'을 제공할 수 있습니다.

액션메소드

액션메소드는 ${ActionMethodName}의 형태로 정의되며 GET과 JSON(POST)의 두 가지 방식을 제공합니다.

  • GET 방식

    chatbot-03-021.png

    GET 방식은 먼저 액션메소드명을 정의하고 외부 URL을 정의합니다. GET 방식의 액션메소드는 URL 호출의 결과 값이 답변의 내용으로 들어갑니다.

    예를 들어 답변을 "현재 정자동의 날씨는 ${weather}도입니다."라고 정의한 경우, ${weather}의 값은 정의한 URL을 호출해서 Response로 돌아오는 정보입니다. 이 값이 '24'이면 챗봇은 "현재 정자동의 날씨는 24도입니다."라고 답변합니다.

  • JSON(POST) 방식

    JSON(POST) 방식은 GET 방식과 동일하나, URL 호출에 데이터를 포함하여 보낼 수 있습니다. 데이터를 보내는 형식은 JSON 형태입니다.

    chatbot-03-022.png

폼은 사용자의 질문에 따라서 객관식 및 주관식의 질문을 제공하고, 그 답변에 따른 피드백으로 대화를 이어갈 수 있게 하는 기능입니다.

폼 이름을 정의하면, 답변에서 #{FormName}의 형태로 컴포넌트를 사용할 수 있습니다.

폼은 다음의 두 가지 타입을 제공합니다.

  • 객관식: 다중의 선택지에서 하나의 선택을 입력받도록 합니다.

chatbot-03-023.png

예를 들어 고객에게 확인받는 Yes/No를 객관식 폼으로 만들었다면 이 컴포넌트를 다양한 경우에 사용할 수 있습니다. 폼을 적용하려면 1) 객관식 답변 유형을 선택하여 폼을 불러오거나, 2) 답변 입력창에서 #을 입력하고 폼 목록이 보이면 상황에 맞게 선택하여 적용합니다.

  • 주관식: 봇의 질문에 사용자의 Text 응답을 받아서 답변을 제공하도록 합니다.

주관식 폼에서는 먼저 사용자가 질문을 하면 먼저 주관식 폼의 안내 문구를 먼저 안내합니다. 그리고 사용자의 입력이 있으면 주관식 폼의 답변을 챗봇에서 내보냅니다. 응답 흐름은 다음과 같습니다.

사용자: 견적 문의하기

챗봇 답변: 안내 메일을 받을 수 있는 이메일을 입력해주세요. 입력한 정보는 담당자에게 전달됩니다.     ==> (FORM의 안내문구)

사용자: abc@navercorp.com

챗봇 답변:  담당자에게 이메일 주소를 전달했습니다. 감사합니다. 
==> (FORM의 답변)

chatbot-03-023.png

주관식 폼 답변이 나가는 경우 해당 메시지에 액션메소드가 존재한다면, 해당 액션메소드의 헤더에 X-KAA-USERMSG를 key로 하여 utf-8로 인코딩된 메시지가 전달됩니다.

chatbot-03-023.png

태스크

태스크는 복잡한 피자 주문 혹은 택배 반품과 같이 여러 가지 정보를 수집한 후 최종 액션(정보 컨펌)을 실행하여 대화를 마무리할 수 있는 기능입니다. 흔히 챗봇에서 말하는 슬롯 채우기(Slot Filling) 기능입니다.

chatbot-03-024.png

피자 주문이라는 키워드가 인지되면 태스크가 실행되며, 태스크에서 지정한 필수 엔티티 값을 챗봇 이용자에게 받습니다. 필수 엔티티 값이 다 채워지면 종료 시 호출할 폼이 실행되는 구조를 갖습니다.

단, 태스크 대화로 진입하면 이 태스크가 마무리될 때까지 이 대화 안에서 머물기 때문에 태스크를 사용하는 케이스를 명확하게 해야 하고, 이 태스크에서 빠져나올 수 있게 하는 방법도 구현해야 합니다.

실제 간단한 챗봇 대화 생성에는 태스크를 사용하는 케이스가 거의 없습니다. 태스크를 잘 만드는 방법보다는 사용자의 대화를 견고하게 작성하는 것이 챗봇의 성능을 높일 수 있습니다.

연관 정보 바로가기

도메인 생성, 대화 목록과 컴포넌트 관리 및 통계 관리와 관련하여 아래 사용 가이드를 참고하실 수 있습니다.

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...