에이전트 만들기 및 맞춤설정

Dialogflow에서 새로 만들어진 에이전트에는 기본 시작 인텐트와 기본 대체 인텐트의 두 가지 기본 인텐트가 있습니다. 에이전트 빌드의 첫 번째 단계에서는 새 인텐트를 만드는 것 외에도 에이전트의 목적과 캐릭터에 맞게 이러한 인텐트를 맞춤설정해야 합니다.

시작하기 전에

이 가이드를 시작하기 전에 빠른 시작에서 다룬 Dialogflow 기본 사항을 숙지해야 합니다.

에이전트 만들기

Dialogflow ES 콘솔을 사용하여 'MarysBikeShop'이라는 에이전트를 만듭니다. 만드는 법을 모르겠다면 빠른 시작을 다시 확인하세요.

기본 시작 인텐트 맞춤설정

우선 Google 대화 설계 권장사항에 따라 기본 시작 인텐트의 응답을 맞춤설정하겠습니다. 권장사항은 인사말에서 환영 인사하기, 기대치 설정, 사용자에게 제어권 넘기기의 세 가지 주요 목표를 달성하는 것입니다.

이 권장사항을 기반으로 에이전트의 인사말을 작성할 수 있습니다.

Welcome. I can tell you the shop hours, or I can set up an appointment. Which would you like?(안녕하세요. 상점의 영업시간을 안내하거나 약속을 잡아 드릴 수 있습니다. 어떻게 도와드릴까요?)

기본 시작 인텐트를 업데이트하려면 다음 단계를 따르세요.

  1. 기본 시작 인텐트를 클릭합니다.
  2. 응답 섹션으로 이동합니다.
  3. 텍스트 응답 테이블에서 모든 기본 응답을 삭제합니다.
  4. 텍스트 응답 테이블에 다음 응답을 복사하고 붙여넣습니다.

    Welcome. I can tell you the shop hours, or I can set up an appointment. Which would you like?

  5. 저장을 클릭합니다.

  6. Dialogflow 콘솔의 시뮬레이터를 사용하여 업데이트를 테스트합니다.

    그림 2. 시작 인텐트와 그에 일치하는 발화 및 응답을 보여주는 플로차트

응답 변형 만들기

새 인사말을 작성한 후에는 다른 변수를 만들어야 합니다. 다음 변수를 기본 시작 인텐트에 응답으로 포함하세요.

  • Welcome. I can tell you the shop hours, or I can make an appointment. What can I do for you?
  • Hello there. I can tell you the shop hours, or I can schedule an appointment. How may I help you today?

인텐트에 여러 응답을 입력하면 Dialogflow는 목록에서 응답 변수를 무작위로 선택합니다. 하지만 fulfillment에 대한 코드를 작성하기 시작하면 응답 변형을 더욱 정교하게 처리할 수 있으니 유의하세요. fulfillment를 사용하면 인텐트에 복잡한 로직을 사용할 수 있습니다. Dialogflow의 fulfillment 구성요소는 이후 섹션에서 다룹니다.

응답 변형에서 인사말은 'Which would you like?(어떻게 도와드릴까요?)' 및 'What can I do for you(무엇을 도와드릴까요?)'와 같은 질문으로 끝납니다. 이 시점에서 에이전트는 사용자의 발화를 기대하며, 발화에서는 사용자가 에이전트에게 무엇을 원하는지 드러나야 합니다. 다음 섹션에서는 사용자의 요청을 식별하고 해결할 수 있는 에이전트의 첫 번째 커스텀 인텐트를 만듭니다.

커스텀 인텐트 만들기

자전거 판매점 에이전트가 다음 두 가지 작업을 수행하도록 하고자 합니다.

  • 고객에게 영업시간 알리기
  • 고객을 위해 일정 예약하기

우선 자전거 판매점 영업시간을 사용자에게 알릴 수 있는 인텐트를 만들어 보겠습니다. 먼저 이 인텐트를 위한 샘플 대화를 작성합니다.

      사용자: When are you open?(영업시간이 어떻게 되나요?)

      에이전트: We're open from 9 AM to 6 PM every day. Is there anything else I can do for you?(매일 오전 9시부터 오후 6시까지 영업합니다. 그 밖에 도와드릴 일이 있을까요?)

이 대화를 처리할 수 있는 인텐트를 만들려면 다음 단계를 따르세요.

  1. Hours라는 새 인텐트를 만듭니다.
  2. Hours 인텐트의 학습 문구 섹션에서 다음 학습 문구를 입력합니다. When are you open?
  3. 응답 섹션에서 텍스트 응답 테이블에 다음 응답을 입력합니다. We're open from 9 AM to 6 PM every day. Is there anything else I can do for you?
  4. 저장을 클릭합니다.

    그림 3. 기본 시작 인텐트와 새 커스텀 인텐트인 Hours를 보여주는 플로차트.

위의 설정을 통해 기본 인텐트가 작동합니다. 사용자가 'When are you open?(영업시간이 어떻게 되나요?)'이라는 질문을 하면, Dialogflow는 사용자 발화와 커스텀 인텐트 Hours를 연결합니다. 그러면 인텐트는 다음 문구로 응답합니다. 'We're open from 9 AM to 6 PM every day. Is there anything else I can do for you?(매일 오전 9시부터 오후 6시까지 영업합니다. 그 밖에 도와드릴 일이 있을까요?)'

학습 문구 추가

Hours 인텐트에는 현재 'When are you open?(영업시간이 어떻게 되나요?)'이라는 하나의 학습 문구만 있으므로 의미가 동일한 다른 유사한 발화를 식별할 수 있는 지식이 부족합니다. 에이전트가 동일한 의도를 표현하는 다양한 사용자 발화를 연결할 수 있도록 더 많은 학습 문구를 제공해야 합니다.

자연어에서는 대부분 여러 가지 방식을 사용하여 의미가 동일한 여러 문구를 만들 수 있습니다. 각 인텐트는 인텐트의 복잡성에 따라 적어도 학습 문구 10~20개로 시작하는 것이 좋습니다. 에이전트를 테스트할 때 Dialogflow의 학습 도구를 사용하여 학습 문구를 계속 추가합니다.

'When are you open?(영업시간이 몇 시부터인가요?)'이라는 문구의 경우 다음과 같이 사용자가 대신 말할 수 있는 10가지 변형을 떠올릴 수 있습니다.

  • Are you open today?
  • How late are you open on weekends?
  • When do you close?
  • What time do you open tomorrow morning?
  • Are you open now?
  • Business hours.
  • How early can I drop in?
  • Tell me your opening hours.
  • What are your hours?
  • How late can I come in?

이러한 변형을 학습 문구로 추가하려면 다음 단계를 따르세요.

  1. Hours 인텐트를 클릭합니다.
  2. 학습 문구 섹션에 위의 각 문구를 복사하고 붙여넣습니다.
  3. 저장을 클릭합니다.
  4. Dialogflow 콘솔의 시뮬레이터를 사용하여 다양한 사용자 발화로 인텐트를 테스트합니다.

지금까지 사용자에게 인사를 건네고 사용자의 특정 요청을 해결할 수 있는 에이전트를 만들었습니다. 그러나 사용자가 에이전트가 이해할 수 없는 말을 할 경우에는 어떻게 될까요?

다음 섹션에서는 일치하지 않는 발화를 처리하기 위해 설계된 특별한 인텐트인 대체 인텐트를 살펴봅니다.

대체 인텐트 맞춤설정

대체 인텐트는 사용자 발화가 다른 인텐트와 일치하지 않을 때 연결되는 특별한 인텐트입니다. 기본 시작 인텐트와 마찬가지로 기본 대체 인텐트라는 일반적인 대체 인텐트가 모든 에이전트에 포함되어 있습니다.

대체 인텐트는 에이전트가 이해할 수 있는 형식으로 발화를 구성하도록 사용자에게 프롬프트를 표시할 수 있습니다. 기본 대체 인텐트를 업데이트하려면 다음 단계를 따르세요.

  1. 기본 대체 인텐트를 클릭합니다.
  2. 응답 섹션으로 이동합니다.
  3. 텍스트 응답 테이블에서 모든 기본 응답을 삭제합니다.
  4. 텍스트 응답 테이블에 다음 응답을 복사하고 붙여넣습니다.

    Sorry, did you want to hear our hours, or set up an appointment?

  5. 저장을 클릭합니다.

    그림 4. 왼쪽 상단에 대체 인텐트를 표시하는 플로차트

대체 응답의 프롬프트 질문 'did you want to hear our hours, or set up an appointment?(영업시간을 알려드릴까요? 아니면 약속을 잡을까요?)'는 사용자가 인식 가능한 발화를 제공할 수 있도록 안내합니다. 에이전트는 사용자로부터 'I want to know the hours(영업시간을 알려주세요)' 또는 ''I want to set up an appointment(약속을 잡고 싶어요)' 중 하나의 발화를 기대합니다.

이 시점에서 에이전트에는 'I want to set up an appointment(약속을 잡고 싶어요)'라는 발화를 처리할 수 있는 인텐트가 없습니다. 다음 섹션에서는 약속을 잡는 요청을 처리할 수 있는 고급 인텐트를 만들어 보겠습니다.