컨텍스트 관리

대부분의 경우 에이전트를 빌드할 때 설계 시점에 컨텍스트를 구성합니다. 예를 들어 'I would like to add pizza to my shopping cart'와 같은 학습 문구가 있는 경우

일부 고차원적 시나리오에서는 실시간 대화 중인 런타임에 컨텍스트를 가져오고 설정하는 코드 작성이 필요할 수도 있습니다. 예를 들어 기기 위치를 감지하고 나중에 위치를 참조 할 수 있도록 컨텍스트에 추가한 경우

이 문서에서는 Dialogflow 콘솔, API 또는 fulfillment를 사용하여 설계 시점 및 런타임에 컨텍스트를 가져오고 설정하는 방법을 설명합니다.

컨텍스트 이름 지정

컨텍스트 이름 지정에 다음 규칙이 적용됩니다.

규칙 예시
영숫자 이름을 사용합니다. mycontext1
공백 대신 - 또는 _를 사용합니다. my-context-1
이름은 대소문자를 구분하지 않습니다. Abc123abc123은 같은 이름으로 간주됩니다.
API 사용 시에는 모든 컨텍스트 이름에 소문자를 사용합니다. abc123

설계 시점에 컨텍스트 설정

콘솔

  1. Dialogflow 콘솔로 이동합니다.
  2. 에이전트를 선택합니다.
  3. 왼쪽 사이드바 메뉴에서 Intents(인텐트)를 선택합니다.
  4. 인텐트 데이터의 Contexts(컨텍스트) 섹션을 펼칩니다.
  5. 인텐트 데이터에서 Add output context(출력 컨텍스트 추가) 또는 Add input context(입력 컨텍스트 추가) 필드를 클릭합니다.
  6. 컨텍스트의 이름을 입력하고 Return 키를 누릅니다.
  7. 출력 컨텍스트의 경우 선택사항으로 수명 서클을 클릭하여 수명을 변경합니다. 수명 UI 스냅샷
  8. 필요에 따라 컨텍스트를 더 추가합니다.
  9. Save(저장)를 클릭합니다.

API

인텐트 참조를 확인하세요.

런타임에 컨텍스트 설정

Fulfillment

웹훅 서비스에서 WebhookResponse를 전송할 때 outputContexts 필드를 원하는 활성 컨텍스트로 설정합니다.

API

Sessions 유형의 detectIntent 호출 요청에 활성 컨텍스트를 설정하는 데 사용되는 queryParameters.contexts 필드가 포함됩니다.

다음은 detectIntent 요청의 REST JSON 예시입니다.

POST https://dialogflow.googleapis.com/v2/{session=projects/*/agent/sessions/*}:detectIntent

{
  "queryInput": {
    "text": {
      "languageCode": "en-US",
      "text": "I would like to add pizza to my shopping cart."
    }
  },
  "queryParams": {
    "contexts": [{
        "name": "projects/project-id/agent/sessions/session-id/contexts/product-chosen",
        "lifespanCount": 5,
        "parameters": {
          "product": "Pizza",
          "device-location" "@52.3377871,4.8698096,17z"
        }
      }]
  }
}

언제든지 Contexts 유형의 create, delete, update 메서드를 호출할 수 있습니다.

런타임에 컨텍스트 가져오기

Fulfillment

웹훅 서비스가 WebhookRequest를 수신할 때 queryResult.outputContexts 필드에 활성 컨텍스트가 포함됩니다.

API

Sessions 유형의 detectIntent 호출에 대한 응답에 활성 컨텍스트 목록을 제공하는 queryResult.outputContexts 필드가 포함됩니다.

다음은 detectIntent 응답의 REST JSON 예시입니다.

{
  "responseId": "response-id",
  "queryResult": {
    "queryText": "I would like to add pizza to my shopping cart.",
    "parameters": {
      "product": "pizza"
    },
    "allRequiredParamsPresent": true,
    "fulfillmentText": "The product has been added.",
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            "The product has been added."
          ]
        }
      }
    ],
    "outputContexts": [
      {
        "name": "projects/project-id/agent/sessions/session-id/contexts/product-chosen",
        "lifespanCount": 5,
        "parameters": {
          "product": "Pizza",
          "device-location" "@52.3377871,4.8698096,17z"
        }
      }
    ],
    "intent": {
      "name": "projects/project-id/agent/intents/intent-id",
      "displayName": "buy-product"
    },
    "intentDetectionConfidence": 0.8057143,
    "languageCode": "en",
  }
}

언제든지 Contexts 유형의 get 및 list 메서드를 호출할 수 있습니다.