작업 및 매개변수

이 페이지에서는 인텐트의 작업매개변수 설정을 설명하고, 런타임 시 인텐트가 일치할 때 이러한 설정이 사용되는 방법을 설명합니다.

이 데이터를 찾을 수 있는 위치

에이전트를 빌드할 때는 Dialogflow ES 콘솔을 사용하는 것이 가장 일반적입니다(문서 보기, 콘솔 열기). 아래의 안내는 콘솔 사용에 중점을 둡니다. 작업 및 매개변수 데이터에 액세스하려면 다음 안내를 따르세요.

  1. Dialogflow ES 콘솔로 이동합니다.
  2. 에이전트를 선택합니다.
  3. 왼쪽 사이드바 메뉴에서 인텐트를 선택합니다.
  4. 인텐트를 선택합니다.
  5. 아래로 스크롤하여 작업 및 매개변수 섹션으로 이동합니다.

작업 및 매개변수 필드의 스크린샷

콘솔 대신 API를 사용하여 에이전트를 빌드하는 경우 인텐트 참조를 확인하세요. API 필드 이름은 콘솔 필드 이름과 유사합니다. 아래 안내에서 콘솔과 API의 중요한 차이점을 볼 수 있습니다.

작업

작업 필드는 서비스의 로직을 실행하는 데 도움이 되는 간단한 편의 필드입니다.

에이전트를 빌드할 때 이 필드를 유용하다고 생각하는 텍스트로 설정할 수 있습니다.

런타임 시 인텐트가 일치할 때 Dialogflow는 fulfillment 웹훅 요청 또는 API 상호작용 응답에 작업 값을 제공합니다. 서비스의 특정 로직을 트리거하는 데 사용할 수 있습니다.

매개변수

런타임 시 인텐트가 일치할 때 Dialogflow는 최종 사용자 표현에서 추출된 값을 매개변수로 제공합니다. 각 매개변수에는 데이터가 정확히 어떻게 추출되는지를 나타내는 항목 유형이라는 유형이 있습니다. 원시 최종 사용자 입력과 달리 매개변수는 일부 로직을 수행하거나 응답을 생성할 때 손쉽게 사용할 수 있는 구조화된 데이터입니다.

에이전트를 만들 때 학습 문구의 일부를 주석 처리하고 관련 매개변수를 구성하여 데이터 추출 방식을 제어할 수 있습니다.

다음 목록은 매개변수 구성 필드를 보여줍니다. 'Tuesday(화요일)'가 주석 처리된 경우 'book a room on Tuesday(화요일에 객실 예약)'이라는 학습 문구에 대한 예가 표시되어 있습니다.

  • 필수: 매개변수가 있어야만 인텐트가 완성되는 경우 이 체크박스를 선택하세요. 아래의 필수 매개변수를 사용하여 슬롯 채우기 섹션을 참조하세요.
  • 매개변수 이름: 매개변수를 식별하는 이름입니다. 예: date
  • 항목: 매개변수와 관련된 항목 유형입니다. 예를 들면 @sys.date입니다.
  • : 대부분의 경우 $parameter-name과 같은 매개변수 참조로 설정되며, 이는 런타임에 추출되는 값의 자리표시자로 사용됩니다. 그러나 이 필드를 사용하여 대체 값을 선택할 수도 있습니다. 아래 매개변수 값 및 매개변수 참조 섹션을 참조하세요. 예를 들면 $date입니다.
  • 목록: 값이 목록으로 반환되어야 하는 경우 이 체크박스를 선택하세요. 아래의 목록 매개변수 섹션을 참조하세요.
  • 프롬프트: 이 매개변수가 제공되지 않은 경우 에이전트가 최종 사용자에게 묻는 질문입니다. 이 필드는 필수 필드가 선택된 경우에만 사용됩니다. 아래의 필수 매개변수를 사용하여 슬롯 채우기 섹션을 참조하세요.
  • 기본값: 최종 사용자가 매개변수 값을 제공하지 않을 경우 매개변수에 사용되는 기본값입니다. 콘솔을 사용하여 기본값을 변경하려면 매개변수 행으로 마우스를 가져가서 오른쪽에 있는 메뉴를 클릭해야 합니다.

런타임 시 인텐트가 일치할 때 Dialogflow는 fulfillment 웹훅 요청 또는 API 상호작용 응답에 매개변수 데이터를 제공합니다. 이는 매개변수 값에 매개변수 이름을 매핑한 형태로 제공됩니다.

에이전트를 만들 때 응답에 매개변수 값을 포함할 수 있습니다. 아래 매개변수 값 및 매개변수 참조를 참조하세요.

목록 매개변수

콘솔을 사용하여 에이전트를 빌드할 때 목록 옵션을 선택하면 매개변수가 목록으로 구성됩니다. 목록에는 여러 요소가 포함될 수 있습니다. 예를 들어 생산 주문 에이전트는 다음과 같은 최종 사용자 표현을 기대할 수 있습니다.

  • 'I want apples(사과 주세요)'
  • 'I want apples and oranges'
  • 'I want apples, oranges, and bananas(사과, 오렌지, 바나나 주세요)'

목록 매개변수로 학습 문구를 주석 처리할 경우 문구에 매개변수 예시를 한 개 이상 포함할 수 있으며 각 문구를 개별적으로 주석 처리할 수 있습니다.

목록 매개변수 주석의 스크린샷

단일 학습 문구에서 동일한 매개변수로 2개 이상의 단어 또는 어구를 주석 처리하면 목록 옵션이 자동으로 사용 설정됩니다. 이 옵션을 사용 중지하지만 주석을 동일하게 유지하면 이 주석이 있는 페이지를 열 때 목록이 자동으로 다시 선택됩니다.

다국어 에이전트에서 목록 옵션은 언어별 옵션이 아닙니다.

매개변수 값 및 매개변수 참조

매개변수 참조는 런타임에 추출되는 매개변수 값을 보유하는 변수입니다. 에이전트를 만들 때 인텐트 응답, 매개변수 프롬프트, 매개변수 필드에 매개변수 참조를 사용할 수 있습니다.

예를 들어 인텐트 응답에 $parameter-name을 사용할 수 있습니다. Dialogflow는 사용자에게 응답할 때 해당 매개변수 참조를 런타임에 추출된 매개변수 값으로 바꿉니다. 이는 최종 사용자가 제공한 정보를 요약하는 데 유용합니다. 예를 들어 인텐트 응답은 다음과 비슷할 수 있습니다. 'Okay, I booked a room for you on $date(네, $date에 객실을 예약했습니다)'.

기본 매개변수 참조

연결된 항목에서 추출한 매개변수 값을 참조하려면 다음 형식을 사용합니다.

$parameter-name

예를 들어 매개변수 이름이 date인 경우 $date로 참조할 수 있습니다.

원래 값에 대한 매개변수 참조

특정 항목과 일치하는 텍스트는 처리하기에 더 편리한 텍스트로 변환되는 경우가 많습니다. 예를 들어 최종 사용자 표현의 'apples'라는 단어는 과일 항목에 해당하는 'apple'로 추출될 수 있습니다. 최종 사용자가 쓰거나 말한 매개변수 값을 정확히 그대로 참조하려면 다음 형식을 사용합니다.

$parameter-name.original

예를 들어 매개변수 이름이 date인 경우 원래 값을 $date.original로 참조할 수 있습니다.

모호한 날짜에 대한 매개변수 참조

매개변수가 @sys.date 시스템 항목과 연결되어 있고 최종 사용자가 연도, 월, 일을 지정하지 않은 부분적인 날짜를 제공하면 Dialogflow는 가장 가까운 미래의 날짜와 일치합니다. 그러나 사용자는 이 날짜의 변형을 검색할 수도 있습니다.

명시적 부분 일치를 검색할 수 있는데, Dialogflow는 다음 형식을 사용하여 알 수 없는 부분을 U로 대체합니다.

$parameter-name.partial

다음 형식을 사용해서 이전 시간 중 가장 가까운 날짜를 검색할 수 있습니다.

$parameter-name.recent

예를 들어 오늘 날짜가 2021년 8월 11일이고 매개변수 이름이 date이면 사용자가 "August 13(8월 13일)"이라고 말합니다.

매개변수 참조 결정된 값
$date 2021-08-13
$date.partial UUUU-08-13
$date.recent 2020-08-13

복합 항목의 매개변수 참조

복합 항목은 다른 하위 항목을 포함하는 항목입니다. 매개변수의 하위 항목 값을 참조하려면 다음 형식을 사용합니다.

$parameter-name.sub-entity-name

예를 들어 매개변수 이름이 move이고 하위 항목 이름이 direction인 경우 하위 항목 값을 $move.direction으로 참조할 수 있습니다.

활성 컨텍스트의 매개변수 참조

컨텍스트는 매개변수 값의 임시 스토리지 역할을 할 수 있습니다. 활성 컨텍스트에서 가져온 매개변수 값을 참조하려면 다음 형식을 사용합니다.

#context-name.parameter-name

예를 들어 매개변수 이름이 room이고 reservation이 활성 컨텍스트인 경우 매개변수 값을 #reservation.room으로 참조할 수 있습니다.

이벤트 매개변수의 매개변수 참조

이벤트 매개변수를 참조하려면 다음 형식을 사용합니다.

#event-name.parameter-name

예를 들어 매개변수 이름이 duration이고 이벤트 이름이 alarm인 경우 이벤트 매개변수를 #alarm.duration으로 참조할 수 있습니다.

매개변수 값 필드

매개변수 필드의 매개변수 참조에는 특별한 의미가 있습니다. 이 필드의 콘텐츠는 인텐트 응답과 매개변수 프롬프트의 $parameter-name에 대한 확인된 값을 결정합니다. Dialogflow는 다음 순서로 매개변수 데이터를 처리합니다.

  1. 연결된 항목을 사용하여 최종 사용자 표현에서 매개변수 값을 추출합니다.
  2. 매개변수 필드에 대한 콘텐츠를 확인합니다.
  3. $parameter-name을 매개변수 필드의 확인된 콘텐츠로 설정합니다. 필드가 $parameter-name으로 설정되지 않은 경우 $parameter-name의 값을 다른 값으로 재설정합니다.
  4. 인텐트 응답 및 매개변수 프롬프트의 콘텐츠를 확인합니다.

다음은 사용자 표현 'I want to buy a small shirt'에 대한 이 순서 지정 효과를 보여주는 몇 가지 예시입니다.

매개변수 참조 위치 구성된 콘텐츠 확인된 콘텐츠
매개변수 필드 $size S
인텐트 응답 $size 사이즈를 선택했습니다. S 사이즈를 선택했습니다.
매개변수 참조 위치 구성된 콘텐츠 확인된 콘텐츠
매개변수 필드 $size.original small
인텐트 응답 $size 사이즈를 선택했습니다. 스몰 사이즈를 선택했습니다.
매개변수 참조 위치 구성된 콘텐츠 확인된 콘텐츠
매개변수 필드 $size S
인텐트 응답 $size.original 사이즈를 선택했습니다. 스몰 사이즈를 선택했습니다.

필수 매개변수를 사용하여 슬롯 채우기

에이전트를 빌드할 때 매개변수를 필수 항목으로 표시할 수 있습니다. 최종 사용자가 이러한 각 필수 매개변수에 데이터를 지정해야만 인텐트가 완성됩니다.

필수 매개변수 필드의 스크린샷

런타임 시 인텐트가 일치할 때 최종 사용자가 각 필수 매개변수에 대한 데이터를 제공하지 않으면 Dialogflow 에이전트가 최종 사용자로부터 정보를 계속 수집합니다. 이러한 프로세스를 슬롯 채우기라고 합니다.

슬롯 채우기용 웹훅이 사용 설정되지 않은 경우, Dialogflow는 최종 사용자로부터 필요한 모든 데이터를 수집한 후에 fulfillment 웹훅 요청을 전송합니다.

Dialogflow는 슬롯 채우기의 각 단계에 API 상호작용 응답을 보냅니다. 이러한 슬롯 채우기 응답 각각에 대해 인텐트와 작업은 동일하며 지금까지 수집된 매개변수가 제공됩니다.

에이전트를 만들 때 에이전트가 최종 사용자로부터 매개변수 데이터를 가져오는 데 사용할 프롬프트를 제공해야 합니다. 또한 에이전트가 항상 같은 질문을 하지 않도록 프롬프트 변형을 제공할 수도 있습니다.

매개변수 프롬프트의 스크린샷

예를 들어 의류 매장 에이전트에 다음에 대한 필수 매개변수가 있는 인텐트가 있다고 가정해 보겠습니다.

  • clothing type(의류 유형)
  • quantity(수량)
  • size(사이즈)
  • color(색상)

완성된 인텐트는 다음과 유사할 것입니다.

사용자: I'd like to buy a t-shirt.(티셔츠를 사고 싶습니다.)
에이전트: How many do you want?(몇 벌이 필요하신가요?)
사용자: 3
에이전트: What color would you like?(어떤 색상을 원하세요?)
사용자: Black(검정색)
에이전트: What size?(어떤 사이즈를 원하세요?)
사용자: Medium(중간)
에이전트: Got it, that was three black t-shirts in medium(알겠습니다. 검정색 티셔츠 3벌, 미디엄 사이즈입니다.)

최종 사용자가 단일 표현에서 2개 이상의 매개변수에 대한 데이터를 제공하면 Dialogflow는 제공된 데이터를 수집하고, 누락된 데이터를 계속 질문합니다. 예를 들어 최종 사용자가 'I'd like to buy three black t-shirts(검은색 티셔츠 세 벌을 사고 싶습니다)'라고 말하면 Dialogflow는 사용자에게 사이즈를 물어봅니다.

매개변수 정렬

에이전트를 빌드할 때 매개변수를 정렬할 수 있으며, 그러면 에이전트가 누락된 데이터를 묻는 순서가 결정됩니다.

콘솔에서 에이전트를 빌드할 때는 매개변수에 마우스를 가져가면 오른쪽에 재정렬 아이콘이 표시됩니다. 이 아이콘을 드래그하여 목록에서 매개변수의 위치를 변경할 수 있습니다.

프롬프트의 매개변수 참조

에이전트를 만들 때 프롬프트에서 매개변수 참조를 사용할 수 있지만 프롬프트 전의 필수 매개변수에 대해서만 사용할 수 있습니다. 예를 들어 color 매개변수가 quantity 매개변수보다 앞에 있는 경우 quantity 매개변수에 대해 How many $color t-shirts would you like to buy? 프롬프트를 사용할 수 있습니다.

슬롯 채우기 취소

최종 사용자가 'Cancel(취소)', 'Stop it(멈춰)', 'That's enough(그만해)' 등과 같은 종료 문구를 말하면 에이전트는 'Okay, cancelled(네, 취소되었습니다)'로 응답하고 슬롯 채우기 컨텍스트를 지웁니다.

API를 사용하는 경우 슬롯 채우기가 취소되었을 대 DetectIntentResponse.queryResult.cancelsSlotFilling 필드가 true로 설정됩니다. 자세한 내용은 Sessions 유형의 detectIntent 문서를 참조하세요.