입력 및 출력 컨텍스트

입력 및 출력 컨텍스트는 인텐트에 적용됩니다. 이들은 함께 작동하여 대화 흐름을 제어합니다.

  • 출력 컨텍스트활성 컨텍스트를 제어합니다. 인텐트가 일치하면 이 인텐트에 구성된 출력 컨텍스트가 활성화됩니다.
  • 입력 컨텍스트는 인텐트 일치를 제어합니다. 컨텍스트가 활성화된 경우 Dialogflow에서는 현재 활성 컨텍스트의 하위 집합인 입력 컨텍스트로 구성된 인텐트가 일치될 가능성이 더 높습니다.

컨텍스트를 사용하면 다음을 수행할 수 있습니다.

  • 인텐트 일치 순서를 제어합니다.
  • 동일한 학습 문구를 사용하여 컨텍스트별 인텐트를 만듭니다.

예를 들어 다음 인텐트를 가정해 보겠습니다.

인텐트 이름 학습 문구 매개변수 입력 컨텍스트 출력 컨텍스트 응답
pet-init '어떻게 생겼나요?' - - - '어떤 종류의 반려동물을 좋아하세요?'
pet-select-dogs '개가 좋아' - - dogs '개에 대해 무엇을 알고 싶으세요?'
pet-select-cats '고양이가 좋아' - - cats '고양이에 대해 무엇을 알고 싶으세요?'
dog-show '어떻게 생겼나요?' - dogs - '개 사진입니다.'
cat-show '어떻게 생겼나요?' - cats - '고양이 사진입니다.'

최종 사용자가 I like dogs라고 말하는 경우:

  • pet-select-dogs 인텐트가 일치합니다.
  • 출력 컨텍스트는 dogs이므로 활성 컨텍스트가 됩니다.

최종 사용자가 I like cats라고 말하는 경우:

  • pet-select-cats 인텐트가 일치합니다.
  • 출력 컨텍스트는 cats이므로 활성 컨텍스트가 됩니다.

최종 사용자가 What do they look like?라고 말하는 경우:

  • dogs이 활성 컨텍스트인 경우:
    • dog-show 인텐트가 일치합니다.
    • 최종 사용자에게 개 사진이 표시됩니다.
  • cats가 활성 컨텍스트인 경우:
    • cat-show 인텐트가 일치합니다.
    • 최종 사용자에게 고양이 사진이 표시됩니다.
  • 활성 컨텍스트가 없는 경우:
    • pet-init 인텐트가 일치합니다.
    • 최종 사용자에게 어떤 종류의 반려동물을 좋아하는지 묻습니다.

출력 컨텍스트

여러 출력 컨텍스트를 인텐트 하나에 적용할 수 있습니다. 인텐트가 일치하면 인텐트에 적용된 모든 출력 컨텍스트가 활성화됩니다.

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

출력 컨텍스트가 있는 인텐트가 일치하면 수집된 매개변수 값은 활성 컨텍스트용 매개변수 참조가 있는 임시 스토리지 역할을 할 수 있습니다. 컨텍스트가 활성 상태인 동안 향후 인텐트 일치 중에 이 값에 액세스할 수 있습니다.

예를 들어 위의 반려동물 예시를 다음과 같이 변형해 보겠습니다.

인텐트 이름 학습 문구 매개변수 입력 컨텍스트 출력 컨텍스트 응답
pet-init '어떻게 생겼나요?' - - - '어떤 종류의 반려동물을 좋아하세요?'
pet-select '', '고양이'를 좋아합니다.' pet - pet-chosen '$pet?에 대해 무엇을 알고 싶으세요?'
pet-show '어떻게 생겼나요?' - pet-chosen - '#pet-chosen.pet 사진입니다.'

최종 사용자가 I like dogs 또는 I like cats라고 말하는 경우:

  • pet-select 인텐트가 일치합니다.
  • pet 매개변수가 선택한 반려동물 유형으로 설정됩니다.
  • 출력 컨텍스트는 pet-chosen이므로 활성 컨텍스트가 됩니다.

최종 사용자가 What do they look like?라고 말하는 경우:

  • pet-chosen이 활성 컨텍스트인 경우:
    • pet-show 인텐트가 일치합니다.
    • 최종 사용자가 이전 대화 차례에서 dogs를 선택한 경우 최종 사용자에게 개 사진이 표시됩니다.
    • 최종 사용자가 이전 대화 차례에서 cats를 선택한 경우 최종 사용자에게 고양이 사진이 표시됩니다.
  • 활성 컨텍스트가 없는 경우:
    • pet-init 인텐트가 일치합니다.
    • 최종 사용자에게 반려동물 유형을 선택하라는 메시지가 표시됩니다.

수명

각 활성 컨텍스트에는 컨텍스트가 활성 상태인 동안에 대화 차례 수를 정의하는 수명이 있습니다. 기본 수명은 일반 인텐트의 경우 대화 차례 5회이고 후속 조치 인텐트의 경우 대화 차례 2회입니다. 모든 컨텍스트의 기본 수명을 재정의할 수 있습니다. 또한 모든 컨텍스트가 활성화된 후 20분이 지나면 만료됩니다. 인텐트가 이미 활성 상태인 출력 컨텍스트와 일치하면 수명 및 만료 타이머가 재설정됩니다.

예를 들어 반려동물 정보 에이전트의 다음 인텐트 설명을 살펴보세요.

인텐트 이름 학습 문구 매개변수 입력 컨텍스트 출력 컨텍스트 응답
pet-init '어떻게 생겼나요?' '어떤 소리를 내나요?' '얼마나 크나요?' - - - '어떤 종류의 반려동물을 좋아하세요?'
pet-select '', '고양이'를 좋아합니다.' pet - pet-chosen(수명 = 2) '$pet?에 대해 무엇을 알고 싶으세요?'
pet-show '어떻게 생겼나요?' - pet-chosen - '#pet-chosen.pet 사진입니다. 더 알고 싶은 것이 있으세요?'
pet-audio '어떤 소리를 내나요?' - pet-chosen - '#pet-chosen.pet의 소리입니다. 더 알고 싶은 것이 있으세요?'
pet-size '얼마나 크나요?' - pet-chosen - '#pet-chosen.pet의 크기 표입니다. 더 알고 싶은 것이 있으세요?'

다음 표에는 pet-chosen 컨텍스트의 수명을 보여주는 이 애완동물 정보 에이전트의 대화상자 예시가 나와 있습니다.

차례 대화상자 설명
1 에이전트: 어떤 종류의 반려동물을 좋아하세요? pet-init 인텐트가 일치합니다.
2 사용자: 나는 고양이를 좋아해요.
에이전트: 고양이에 대해 무엇을 알고 싶으세요?
pet-select 인텐트가 일치합니다. pet-chosen 출력 컨텍스트가 활성 컨텍스트가 됩니다.
3 사용자: 어떻게 생겼나요?
에이전트: 고양이 사진입니다. 더 알고 싶은 것이 있으세요?
pet-show 인텐트에는 pet-chosen 입력 컨텍스트가 있으므로 일치합니다. pet-chosen 컨텍스트는 차례 1회 동안 활성화되었습니다.
4 사용자: 어떤 소리를 내나요?
에이전트: 고양이 소리입니다. 더 알고 싶은 것이 있으세요?
pet-audio 인텐트에는 pet-chosen 입력 컨텍스트가 있으므로 일치합니다. pet-chosen 컨텍스트는 차례 2회 동안 활성화되었습니다.
5 사용자: 얼마나 큰가요?
에이전트: 어떤 종류의 반려동물을 좋아하세요?
pet-chosen 컨텍스트는 더 이상 활성 상태가 아니므로 pet-init 인텐트가 다시 일치합니다.

입력 컨텍스트

컨텍스트가 활성화되면 Dialogflow에서는 현재 활성 컨텍스트에 해당하는 입력 컨텍스트로 구성된 인텐트가 일치할 가능성이 더 높습니다. 자세한 인텐트 일치 규칙은 다음과 같습니다.

  1. 일치하려면 인텐트의 입력 컨텍스트 목록이 현재 컨텍스트 목록의 하위 집합이어야 합니다. 이는 입력 컨텍스트가 없는 인텐트의 경우에도 마찬가지입니다.
  2. 1번 규칙을 충족하는 인텐트의 경우 현재 활성 컨텍스트 목록과 가장 가깝게 일치하는 입력 컨텍스트 목록이 있는 인텐트가 일치할 가능성이 더 높습니다.

예를 들면 다음과 같습니다.

  • 입력 컨텍스트가 없는 인텐트는 언제든지 일치할 수 있습니다.
  • 활성 컨텍스트가 없으면 입력 컨텍스트가 없는 인텐트만 일치할 수 있습니다.
  • 컨텍스트 'A'와 'B'가 활성 상태이면 'A'와 'C' 입력 컨텍스트가 있는 인텐트는 일치할 수 없습니다.
  • 컨텍스트 'A, 'B', 'C'가 활성 상태이면 'A'와 'B' 입력 컨텍스트가 있는 인텐트는 일치할 수 있습니다.
  • 컨텍스트 'A'와 'B'가 활성 상태이면 'A'와 'B' 입력 컨텍스트가 있는 인텐트는 입력 컨텍스트가 없는 인텐트나 입력 컨텍스트 'A'만 있는 인텐트보다 일치할 가능성이 더 높습니다.