대화형 작업이 2023년 6월 13일부터 지원 중단됩니다. 자세한 내용은 대화 작업 지원 중단을 참고하세요.

장면

장면은 인텐트와 함께 대화 모델의 또 다른 주요 구성 요소입니다. 장면은 대화의 개별 상태를 나타내며 주요 목적은 대화를 논리적인 청크로 구성하고 작업을 실행하고 사용자에게 메시지를 반환하는 것입니다.

장면의 몇 가지 기능은 다음과 같습니다.

  • 반복 실행 - 장면은 정의한 전환 기준을 충족할 때까지 루프 내에서 실행됩니다. 이를 통해 단일 장면 내에서 제어 로직 흐름을 훨씬 더 효율적으로 만들 수 있습니다.
  • 대화상자 분리 - 장면을 인텐트와 함께 사용하면 대화상자를 논리적인 청크로 그룹화하여 사용자 요청 및 작업 응답 쌍을 쉽게 빌드할 수 있습니다.
  • 인텐트 일치 범위 지정 - 한 번에 하나의 장면만 활성화할 수 있으므로 인텐트 일치의 범위를 원하는 장면으로 지정하고 이러한 장면이 활성 상태일 때만 일치되도록 할 수 있습니다.
  • 슬롯 채우기 - 여러 인텐트를 만들지 않고도 장면 내에서 슬롯 채우기를 사용하여 여러 유형의 사용자 입력을 수집할 수 있습니다.
  • 시나리오 내 조건 - 웹훅을 트리거하지 않고 슬롯, 세션, 사용자, 홈 저장소를 확인하여 단순 조건부 로직을 실행할 수 있습니다.

대화 모델의 일부로 장면을 맞춤 장면으로 정의할 수 있습니다. 어시스턴트의 대화 로직에는 대화에 표준 기능을 제공하는 시스템 장면도 포함됩니다.

맞춤 장면

맞춤 장면은 작업의 대화 모델의 일부를 구성하는 대화 로직의 구성요소입니다. 맞춤 장면에는 시작하는 방법 및 시기(활성화)와 이를 실행하는 대화형 처리(실행 수명 주기), 장면이 끝나는 방식(전환)을 정의하는 단계가 있습니다.

  • 활성화 - 장면을 실행하려면 전역 인텐트 일치 또는 장면 전환을 통해 장면을 활성화해야 합니다.
  • 실행 - 장면이 활성화되면 잘 정의된 수명 주기에서 실행되며, 슬롯 채우기, 조건부 확인, 프롬프트 생성, 웹훅 이벤트 트리거와 같은 다양한 작업을 실행할 수 있습니다.
  • 전환 - 장면이 정의한 기준을 충족(예: 인텐트 일치 또는 슬롯 채우기 완료)하면 다른 장면으로 전환하여 더 많은 로직을 실행할 수 있습니다. 또는 대화 종료 시스템 장면으로 전환하여 사용자와의 대화를 종료할 수 있습니다.
그림 1. 일반적인 장면 전환 전역 인텐트는 호출 중에 장면을 활성화하고, 장면은 사용자 입력을 소비하고, 인텐트를 일치시켜 다른 장면을 전환 및 활성화합니다.

실행

장면을 실행하려면 먼저 활성 상태여야 합니다. 언제든지 하나의 장면만 활성화할 수 있습니다. 다음과 같은 방법으로 장면을 활성화할 수 있습니다.

  • 호출 - 사용자 입력이 글로벌 인텐트의 언어 모델과 일치하면 호출을 처리할 장면을 활성화할 수 있습니다.
  • 정적 장면 전환 - 장면이 전환 기준을 충족하면 다른 장면으로의 전환을 정의할 수 있습니다.
  • 동적 장면 전환 - 웹훅 핸들러 내에서 프로그래매틱 방식으로 다른 장면으로 전환할 수 있습니다.

실행 수명 주기

장면이 활성화되면 장면이 설정된 전환 기준을 충족할 때까지 반복되는 잘 정의된 수명 주기 내에서 실행됩니다. 장면의 실행 수명 주기는 다음 순서로 실행되는 선택적 단계로 구분됩니다.

  1. 들어가기 - 이 단계는 장면이 활성화되면 한 번만 실행됩니다. 웹훅을 트리거하거나 사용자에게 장면을 한 번 설정하라는 메시지를 표시할 수 있습니다.

  2. 조건 - 조건을 사용하면 수명 주기 단계를 진행하거나, 웹훅을 트리거하거나, 메시지를 전송하기 전에 특정 기준을 평가할 수 있습니다. 이 단계에서는 실행 루프를 종료하는 전환 기준을 정의할 수 있습니다.

  3. 슬롯 채우기 - 장면은 모든 필수 슬롯 (입력된 데이터)을 수집할 때까지 사용자에게 자동으로 메시지를 표시할 수 있습니다. 장면은 실행 루프를 통해 매번 단일 슬롯을 묻는 메시지를 표시합니다. 슬롯이 누락된 경우 장면의 수명 주기는 결국 슬롯 채우기 단계로 다시 돌아가고 다음 필수 슬롯을 묻는 메시지를 표시합니다. 이 단계에서는 실행 루프를 종료하는 전환 기준을 정의할 수 있습니다.

  4. 메시지 - 어시스턴트는 사용자에게 메시지 대기열을 전달하고 대기열을 지웁니다. 메시지 대기열은 이 단계에서 마지막으로 대기열을 삭제한 후 집계된 프롬프트의 병합된 컬렉션입니다.

  5. 입력 - 어시스턴트는 사용자 입력을 소비하고 장면에 반환하므로 이를 처리할 수 있습니다. 여기에는 인텐트 일치(장면 내의 전역 인텐트 또는 사용자 인텐트), 완료되지 않은 경우 슬롯 채우기 계속, 매치되지 않거나 입력 오류 없음이 포함될 수 있습니다. 이 단계에서는 실행 루프를 종료하는 전환 기준을 정의할 수 있습니다. 전환되지 않으면 실행 루프가 조건 단계로 돌아갑니다.

그림 2. 장면 실행 수명 주기

다음 섹션에서는 각 수명 주기 단계를 더 자세히 설명합니다.

들어가기

들어가면 장면의 실행 루프에서 실행되지 않는 유일한 단계입니다. 다음 순서에 따라 장면을 한 번 초기화합니다.

  • 어시스턴트 런타임이 이전에 일치된 인텐트의 슬롯을 채울 수 있는 경우 이제 슬롯 채우기 단계를 위한 장면을 준비합니다. 예를 들어 일부 사용자 입력은 인텐트를 일치시키고 슬롯을 제공할 수 있습니다. 이 인텐트 일치는 장면을 활성화하고 슬롯 이름이 일치하면 장면의 슬롯을 채울 수 있습니다.
  • 웹훅이 사용 설정된 경우 동기식으로 이벤트가 트리거되고 웹 서비스가 응답을 반환할 때까지 기다립니다.
  • 런타임이 웹훅 응답을 수신하면 프롬프트의 매개변수 참조를 확인하고 사용자 표면에 따라 메시지 후보를 선택한 후 후보가 나중에 사용자에게 전송할 변형 1개를 선택합니다.
  • 프롬프트가 포함된 웹훅 응답은 메시지 큐에 추가합니다. 정적 프롬프트도 존재하면 웹훅 메시지가 먼저 메시지 큐로 병합되고 그런 다음 정적 프롬프트가 병합됩니다.
  • 웹훅 응답에 전환이 포함된 경우 이제 이를 수행합니다. 그렇지 않으면 장면이 슬롯 채우기 단계로 진행됩니다.

조건

조건을 사용하면 세션, 사용자 또는 슬롯 데이터에서 조건이 참인지 확인할 수 있습니다. 예를 들어 모든 슬롯이 채워졌는지 확인하고 이를 슬롯으로 처리하기 위해 다른 장면으로 전환하는 기준으로 설정할 수 있습니다.

  • 어시스턴트 런타임은 지정된 순서대로 각 조건을 평가합니다. true로 판정되는 첫 번째 조건은 관련 핸들러를 실행하고 조건 평가를 중지합니다.
  • 슬롯 채우기를 실행하면 조건 else if scene.slots.status = "FINAL"가 조건 목록에 자동으로 추가됩니다. 이 선택적 조건은 슬롯 채우기가 완료되었는지 확인하고 웹훅을 트리거하거나 메시지 큐에 메시지를 추가할 수 있습니다.

조건 평가 후 장면이 전환을 정의하지 않으면 슬롯 채우기를 계속 진행합니다.

슬롯 채우기

이 단계에서는 채워지지 않은 하나의 필수 슬롯에 대한 슬롯 프롬프트를 추가합니다. 장면에 슬롯을 정의하지 않으면 이 단계에서는 아무 작업도 하지 않습니다.

  • 어시스턴트 런타임은 첫 번째 잔여 슬롯을 선택하고 메시지 큐에 해당 메시지를 추가합니다. 장면의 실행 루프가 있으므로 추가 실행 슬롯이 나중에 실행 루프가 이 단계로 돌아올 때 처리됩니다.
  • 현재 활성 슬롯에는 장면의 입력 단계에 정의된 메시지보다 우선 적용되는 오류 처리 프롬프트가 있을 수 있습니다.
  • 사용자가 슬롯을 채우면 웹훅을 트리거하여 웹 서비스에서 슬롯을 검증할 수 있습니다.

메시지

어시스턴트 런타임은 프롬프트 큐를 사용자에게 전송하고 큐를 지우며 사용자 입력을 사용합니다.

입력

어시스턴트 런타임은 입력을 인텐트 또는 슬롯과 일치시키려고 시도합니다.

  • 사용자 인텐트 일치의 경우 장면은 연결된 인텐트 핸들러 (사용자 또는 시스템 인텐트)를 실행합니다. 장면의 인텐트 핸들러가 모든 전역 인텐트보다 우선합니다. 전환을 정의하지 않았다면 장면 실행에서 조건 단계를 루프 실행합니다.
  • 슬롯 일치의 경우 장면은 슬롯 채우기 단계로 돌아갑니다.
  • 시스템 인텐트 일치의 경우 (예: 입력 없음 또는 일치 없음) 메시지 큐에 메시지를 추가하거나 웹훅을 트리거하거나 전환할 수 있습니다. 일치하지 않는 메시지가 여러 개 정의된 경우 어시스턴트 런타임은 슬롯 채우기, 장면, 전역 일치 없음 메시지 순서로 가장 관련성이 높은 항목을 선택합니다. 일치하는 연속 항목이 없으면 일치하는 이벤트가 생성됩니다.

    • no_match_1
    • no_match_2
    • no_match_final

    일치하지 않는 각 수준 (슬롯 채우기, 장면, 전역)은 웹훅 이벤트를 트리거할 수 있습니다. 기본적으로 세 번째이자 마지막 일치 항목은 대화를 종료합니다.

전환

전환은 다음과 같은 단계에서 발생할 수 있습니다.

  • 조건 - 정의한 조건에 따라 다른 장면으로 전환할 수 있습니다. 확인해야 할 일반적인 조건은 슬롯 채우기가 완료되는 것입니다.
  • 입력 (사용자 인텐트 일치) - 인텐트가 일치하면 다른 장면으로의 전환을 트리거할 수 있습니다.
  • 입력 (시스템 인텐트 일치) - 모든 시스템 인텐트 일치 이벤트 중에 웹훅을 트리거할 수 있습니다. 일치 및 입력 이벤트 없음의 경우 기본적으로 장면은 3회 발생 후 Endtalk 장면으로 전환됩니다.

시스템 장면

시스템 장면을 사용하면 어시스턴트에서 제공하는 대화형 대화 로직을 사용할 수 있으므로 사용자 환경에 표준 대화 흐름을 추가할 수 있습니다. 예를 들어 계정 연결 시스템 장면을 사용하면 어시스턴트가 계정 연결 흐름을 일시적으로 인계하여 사용자 계정을 실제로 연결하는 데 필요한 정보를 반환할 수 있습니다. 시스템 장면은 표준 장면 수명 주기를 따르지 않습니다.

다음 목록은 지원되는 시스템 장면 및 사용 방법을 설명합니다.

  • 대화 종료 - 마이크를 닫고 사용자와의 대화를 종료합니다. 이 장면이 실행된 후 어시스턴트가 사용자 환경을 다시 제어합니다.
  • 계정 연결 - 사용자에게 계정 연결 흐름을 안내하고 백엔드 서버의 사용자 계정을 사용자의 Google 계정과 연결하는 데 필요한 정보를 작업에 제공합니다. 이 장면을 사용하는 방법에 관한 자세한 내용은 계정 연결 문서를 참고하세요.
  • 일일 업데이트 - 사용자의 일일 업데이트에 작업을 추가하는 확인 과정을 안내합니다. 이 장면을 사용하는 방법에 관한 자세한 내용은 일일 업데이트 문서를 참고하세요.
  • 알림 - 사용자에게 확인 흐름을 통해 내 작업의 알림을 받도록 안내합니다. 이 장면을 사용하는 방법에 관한 자세한 내용은 푸시 알림 문서를 참고하세요.