챗봇 Advanced 가이드

대화 컴포넌트: 폼 + 액션메소드

폼은 사용자의 입력을 선택적으로 받을 수 있는 방법입니다.

시나리오 예시: 오늘 날씨 알려줘라는 질문에 #{도시선택}이라는 폼을 제공하도록 설계하였습니다. 그리고 서울을 선택하면 ${weather}라는 액션메소드를 실행하여 답변을 주는 시나리오입니다.

chatbot-03-063.png

  1. 엔티티를 생성합니다.

    '도시'라는 엔티티를 입력합니다. 대표어에는 '서울'과 '뉴욕'을 입력합니다.

    chatbot-03-064.png

  1. 액션메소드를 생성합니다.

    ${weather}를 생성합니다.

    호출할 URL은 GET 방식으로 city = 도시명을 넘기면 현재의 온도값을 보내주도록 개발되어 있다고 가정합니다. 호출 URL에서 넘겨줄 인자 값에 city=$[도시]를 입력하여 액션메소드를 생성합니다.

    chatbot-03-065.png

    참고

    액션메소드 테스트를 위해서 간단하게 Serverless 함수를 하나 만들었습니다. 우측의 "echo 호출"버튼을 클릭하여 간단히 테스트하실 수 있습니다.

    https://beta-chatbot.ncloud.com/api/v1/actionmethod/echo?city=$[도시]
    
  1. 폼을 생성합니다.

    #{도시선택}을 생성합니다. 서울을 선택하거나 텍스트로 서울이라고 입력한 경우에 ${weather} 액션메소드가 호출됩니다.

    chatbot-03-066.png

  1. 대화를 생성합니다.

    발화 예시 질문에 '오늘 날씨 알려줘'라고 입력하고 답변에는 #{도시선택}을 입력합니다.

    학습을 클릭하고 테스트를 완료합니다

대화 컴포넌트: 폼 + 폼, 폼 + 대화

챗봇 서비스에서는 폼을 사용하여 사용자의 선택을 제한하지 않아도 사용자의 자연스러운 입력을 통해서 서비스 구성이 가능합니다. 그러나 정해진 시나리오를 통해서 사용자의 선택을 이끌어가야 할 경우에는 폼을 연속해서 연결하거나 폼에서 대화로 연결하는 것이 가능합니다.

  1. 폼과 폼을 연결하는 방법은 다음과 같습니다.

chatbot-03-067.png

  • 버튼 액션은 텍스트 답변을 선택합니다.
  • 텍스트 입력 창에 다음에 연결할 폼을 입력합니다.

예를들어 #{서비스추천} 폼은 버튼에 따라 #{게임서비스} 폼이나 #{모바일 및 웹서비스} 폼을 호출할 수 있습니다.

  1. 폼과 대화를 연결하는 방법은 다음과 같습니다.

chatbot-03-068.png

  • 버튼 액션은 대화 연결을 선택합니다.
  • 버튼 선택 시 연결할 대화의 이름을 입력합니다. 만약 등록되지 않은 대화 이름을 입력하면, 해당 이름으로 신규 대화가 생성됩니다.

예를 들어 #{모바일 및 웹서비스} 폼은 버튼에 따라 '모바일 서비스'대화'웹 서비스' 대화를 호출할 수 있습니다.

태스크

챗봇의 서비스 시나리오에 따라 일반 대화 또는 태스크를 선택할 수 있습니다. 만약 피자 주문이나 택배 반품과 같이 사용자와의 인터렉티브한 대화를 통해 여러 정보를 수집해야한다면 태스크를 활용하는 것을 권장합니다.

태스크가 실행되면, 슬롯으로 지정된 엔티티 값을 사용자로부터 받습니다. 필수 슬롯 값이 모두 채워지면 최종 답변이 응답되는 구조입니다.

대화 이름을 입력하여 대화를 생성합니다.

chatbot-03-080.png

고급 설정대화 종류탭에서 태스크를 선택합니다.

chatbot-03-081.png

질문을 등록합니다.

chatbot-03-082.png

등록된 질문 또는 모델이 판단한 유사한 질문이 인식되면 태스크가 실행됩니다.

슬롯정보를 입력합니다.

chatbot-03-083.png

챗봇은 순서대로 슬롯을 채워나갑니다. 하지만 챗봇이 채우는 슬롯의 순서와 상관없이 사용자는 다른 순서의 슬롯을 응답하거나, 복수의 슬롯을 응답하여 한번에 채울 수도 있습니다.

  • 슬롯 종류 : 체크 박스를 클릭하여 필수 슬롯과 선택 슬롯 설정을 전환할 수 있습니다. 필수 슬롯이 채워지지 않은 태스크는 실패하게되고, 최종 답변을 응답하지 않습니다. 반면에 선택 슬롯은 채워지지 않더라도 태스크가 실패하지 않습니다.
  • 슬롯 이름 : 슬롯의 이름을 입력합니다. 슬롯의 이름은 해당 태스크 안에서 중복되지 않는 값으로 입력합니다.
  • 엔티티 : 슬롯으로 받을 엔티티를 선택합니다. 도메인 엔티티와 시스템 엔티티 모두 활용 가능하며 다른 슬롯에서 사용된 엔티티를 중복으로 선택할 수 있습니다.
  • 값 : 사용자가 채운 슬롯의 값을 최종 답변 또는 되묻기 질문에 불러와 응답할 수 있습니다. 채워진 슬롯의 값을 사용하기 위한 표현식을 입력해주세요.
  • 되묻기 질문 : 슬롯을 채우기 위해 되물을 질문을 입력해주세요. 챗봇은 나열된 슬롯 순서대로 되묻기 질문을 응답하여 슬롯을 채워나갑니다.
  • 기타 설정 : 슬롯의 세부 사항을 설정할 수 있습니다.

chatbot-03-084.png

  • 되묻기 선택지 : 슬롯을 채우기 위한 선택지를 Quick reply 형태로 노출할 수 있습니다. 최대 10개의 선택지를 노출할 수 있습니다.
    • 대표어 선택 : 엔티티 대표어 리스트를 불러와 활용합니다.
    • 텍스트 입력 : 선택지를 직접 텍스트로 입력하여 활용합니다.
    • 기존 되묻기 선택지 : 다른 슬롯의 되묻기 선택지를 불러와 활용합니다.

chatbot-03-085.png

  • 되묻기 횟수 : 되묻기 질문을 응답할 횟수를 지정할 수 있습니다.
  • 되묻기 횟수 초과 메시지 : 되묻기 횟수가 초과된 경우 대신 응답할 메시지를 입력합니다. 필수 슬롯의 경우 되묻기 횟수가 초과되면 슬롯 필링 실패로 인해 최종답변을 응답하지 않습니다. 대신 입력된 되묻기 횟수 초과 메시지를 응답합니다. 만약 입력된 되묻기 횟수 초과 메시지가 없다면 현재 사용자 발화에 매칭된 답변 또는 실패메시지가 응답되게 됩니다.

chatbot-03-086.png

  • 값 유형 : 사용자가 채운 슬롯의 값을 최종 답변 또는 되묻기 질문에 불러와 사용할 때 어떤 방식으로 사용할 지 선택할 수 있습니다.
    • 대표어 치환 값 : 사용자가 응답한 값이 아닌 대표어로 치환한 값을 불러와 사용합니다. 대표어 치환값은 사전형 엔티티인 경우에만 사용가능합니다.
    • 사용자 응답 값 : 사용자가 응답한 값을 그대로 불러와 사용합니다.
    • 예를들어 @피자 엔티티에 대표어 '콤비네이션 피자' - 유사어 '콤비네이션', '콤비 피자'가 등록되어 있었다고 가정할 수 있습니다. 만약 대표어 치환 값으로 설정하였다면, 사용자가 '콤비 피자'라고 응답하여 피자 슬롯을 채운 경우 챗봇은 최종답변으로 '콤비 피자'를 주문하셨습니다. 대신에 '콤비네이션 피자'를 주문하셨습니다. 라고 응답할 수 있습니다.
    • 기본값 : 기본값은 필수 슬롯인 경우에만 설정할 수 있습니다. 사용자가 필수 슬롯을 채우지 못한 경우에 태스크를 실패하지 않고, 입력된 기본값으로 대신 슬롯을 채울 수 있습니다.
    • 예를들어 @피자개수 엔티티에 기본값으로 "1판"이 등록되어있다고 가정할 수 있습니다. 만약 사용자가 피자 개수 슬롯을 채우지 못했다면 기본값인 "1판"으로 슬롯이 저장됩니다.

chatbot-03-087.png

  • 이전 대화의 슬롯 유지 : 슬롯을 모두 채운 후 컨텍스트가 유지되었다면, 챗봇은 채워진 슬롯 정보를 삭제하지 않고 기억하여 다른 태스크에 활용할 수 있습니다.
  • 컨텍스트로 이어진 대화에 등록된 슬롯만 유지할 수 있습니다. 따라서 유지하고 싶은 슬롯이 등록된 대화가 컨텍스트로 이어질 수 있도록 구성해야합니다.

최종 답변을 등록합니다.

chatbot-03-088.png

  • 필수 슬롯이 모두 채워지면 챗봇은 최종 답변을 응답합니다.
  • 이때 슬롯의 값 표현식을 활용하여 사용자 발화를 활용한 답변을 응답할 수 있습니다. 값을 답변 입력창에 그대로 입력하면 사용자가 채운 슬롯을 그대로 불러와 챗봇이 응답하게 됩니다.
  • 만약 최종 답변에서 액션 메소드를 호출한다면, 해당 태스크에서 채워진 엔티티 값을 한꺼번에 전달하게 됩니다.

태스크 종료 메시지를 설정합니다.

태스크 진행 도중 사용자가 즉시 대화를 중단하고 싶은 상황이 발생할 수 있습니다. 하지만 사용자가 슬롯과 관계없는 말을 해도 챗봇은 슬롯을 채우기 위해 되묻기 질문을 계속하게 됩니다. 이런 상황에서 태스크 종료 키워드와 메시지를 활용하여 사용자는 강제적으로 태스크를 멈출 수 있습니다.

chatbot-03-017g.png

  • 태스크 종료 메시지
    • 사용자가 태스크 진행 도중 태스크 종료 키워드를 입력하였다면, 즉시 태스크를 중지하고 등록된 슬롯 정지 메시지를 응답합니다.
  • 태스크 종료 키워드
    • 태스크 종료 키워드는 태스크 진행 중에만 동작합니다.
    • 최대 10건의 키워드를 등록할 수 있으며, exact로 동일한 질문이 입력된 경우에만 동작합니다.

태스크 설계하기 : 피자 주문 예시

  1. 엔티티 생성하기

    • 피자, 피자사이즈, 피자개수, 음료수 엔티티를 만듭니다.

      chatbot-03-069.png

  1. 액션메소드 만들기

    채워진 슬롯 정보를 담아서 호출할 액션 메소드를 만듭니다.

    chatbot-03-072.png

  1. 태스크 만들기 ① 피자 주문 의도를 가진 질문을 입력합니다. chatbot-03-082.png

    ② 앞 단계에서 만들어진 피자, 피자사이즈, 피자종류, 음료수 엔티티를 활용하여 슬롯을 추가합니다. chatbot-03-083.png

    • 피자, 피자사이즈, 피자개수 엔티티는 필수 슬롯으로 지정합니다.
    • 음료수 엔티티는 선택 슬롯으로 지정합니다.
      • 되묻기 질문과 횟수, 되묻기 선택지 등 여러 슬롯정보들을 의도한 챗봇 서비스에 맞게 입력합니다.
③ 최종 답변으로 객관식 답변 유형을 선택하여 "네" 선택지의 답변 부분에 `${피자 주문}` 액션메소드를 호출하도록 지정합니다.![chatbot-03-091.png](./images/chatbot-03-088.png)
  1. 학습을 완료한 뒤, 완성된 피자 주문 태스크를 테스트합니다.

    chatbot-03-092.png

태스크 설계하기 : 날씨 기능 예시 (이전 대화의 슬롯 유지)

만약 사용자가 "오늘서울 날씨 알려줘"라고 질문하여 슬롯을 모두 채워 챗봇의 답변을 들었다고 가정해봅시다. 다시 사용자가 "내일은?" 이라고 물어본 경우에 챗봇이 지역 정보를 다시 물어본다면, 똑똑한 챗봇이라는 인상을 주기 어려울 것입니다. 따라서 이전 슬롯에서 채운 지역 슬롯을 다시 유지할 수 있어야하는데요. 아래는 컨텍스트를 활용해서 이전 대화의 슬롯을 유지하는 대화 예시 입니다.

  1. 엔티티 생성하기

    • 날짜, 도시 엔티티를 만듭니다.

    chatbot-03-093.png

  1. 액션메소드 만들기

    채워진 슬롯 정보를 담아서 호출할 액션 메소드를 만듭니다.

    chatbot-03-094.png

  1. 태스크 만들기 ① 태스크를 생성한 후 Output 컨텍스트에 지역별날씨를 입력합니다.

    chatbot-01-023.png

② 날씨 확인 의도를 가진 질문을 입력합니다. chatbot-03-096.png

③ 앞 단계에서 만들어진 날짜, 지역 엔티티를 활용하여 슬롯을 추가합니다. chatbot-03-097.png

  • 날짜, 도시 엔티티를 필수 슬롯으로 지정합니다
  • 되묻기 질문과 횟수, 되묻기 선택지 등 여러 슬롯정보들을 의도한 챗봇 서비스에 맞게 입력합니다.

④ 최종 답변으로 날씨 액션메소드를 호출하도록 지정합니다.
chatbot-03-098.png

  1. 또 다른 태스크 만들기 ① 새로운 태스크를 생성한 후 Input 컨텍스트에 지역별날씨를 입력합니다.

    chatbot-03-099.png

② "서울은?", "뉴욕은?"과 같이 도시 정보만을 담은 질문을 입력합니다.

chatbot-03-100.png

③ 앞 단계에서 만들어진 날짜, 도시 엔티티를 활용하여 슬롯을 추가합니다. chatbot-03-101.png

  • 날짜, 도시 엔티티를 필수 슬롯으로 지정합니다.
  • 되묻기 질문과 횟수, 되묻기 선택지 등 여러 슬롯정보들을 의도한 챗봇 서비스에 맞게 입력합니다.

④ 날짜 슬롯은 이전 대화의 슬롯을 유지하도록 설정합니다.

chatbot-03-102.png

⑤ 최종 답변으로 날씨 액션메소드를 호출하도록 지정합니다.

chatbot-03-103.png

  1. 학습을 완료한 뒤, 완성된 날씨 태스크를 테스트합니다.

    chatbot-03-104.png

연관 정보 바로가기

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

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

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

    처리중...