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

작업 정의 (Dialogflow)

작업은 앱의 호출 및 탐색 모델을 정의하는 앱의 진입점입니다. 작업 패키지라는 JSON 파일에 작업을 선언하며, 나중에 승인을 위해 작업 프로젝트를 테스트하거나 제출할 때 개발자 프로젝트에 업로드합니다. 작업 패키지는 작업 프로젝트의 작업을 정의하는 JSON 파일입니다.

작업 패키지에서 작업을 정의하려면 작업이 호출되는 방식과 인텐트가 트리거되는 시점에 해당하는 처리 엔드포인트를 정의하는 인텐트를 만듭니다. 다음과 같은 유형의 작업을 만들 수 있습니다.

  • 기본 작업: 모든 작업 프로젝트에는 사용자가 대화를 시작하는 진입점 역할을 하는 시작 인텐트가 있어야 합니다. 환영 인텐트는 사용자가 작업 이름을 명시적으로 말하여 작업을 명시적으로 호출할 때 트리거됩니다 (예: "Hey Google, ExampleAction에 말해 줘"). 이 시작 인텐트는 actions.intent.MAIN 인텐트 이름으로 식별됩니다.
  • 딥 링크를 위한 추가 작업: 직접 정의한 인텐트로 작업 패키지에 추가 작업을 만들 수 있습니다. 이렇게 하면 사용자가 인텐트와 함께 작업 이름을 말하여 특정 기능을 호출할 수 있습니다(예: "Hey Google, ExampleAction과 대화하여 신발을 찾으세요").

이러한 호출 모델의 작동 방식에 대한 자세한 내용은 인텐트 및 호출을 참조하세요.

기본 작업 정의

모든 작업 패키지에는 actions.intent.MAIN 인텐트를 처리하는 인텐트가 하나만 있어야 합니다. 이 인텐트는 사용자가 이름으로 작업을 호출할 때 트리거됩니다 (예: "Hey Google, ExampleAction에 말해 줘").

action.json라는 상용구 작업 패키지 파일을 생성하려면 다음 단계를 따르세요.

  1. gactions CLI를 다운로드합니다.
  2. 작업 프로젝트의 소스 파일을 위한 로컬 디렉터리를 만듭니다.
  3. 터미널에서 다음 명령어를 실행합니다.

    $ cd PROJECT_DIRECTORY
    $ gactions init

작업 패키지 파일이 생성되면 자리표시자 콘텐츠를 해당 값으로 바꿉니다. 다음은 ExampleAction에 관한 변경사항이 포함된 action.json의 예입니다.

{
  "actions": [
    {
      "description": "Default welcome intent",
      "name": "MAIN",
      "fulfillment": {
        "conversationName": "ExampleAction"
      },
      "intent": {
        "name": "actions.intent.MAIN",
        "trigger": {
          "queryPatterns": [
            "talk to ExampleAction"
          ]
        }
      }
    }
  ],
  "conversations": {
    "ExampleAction": {
      "name": "ExampleAction",
      "url": "https://www.example.com/ExampleAction"
    }
  },
  "locale": "en"
}

추가 작업 정의

진입점 역할을 하는 추가 작업을 제공할 수 있습니다. 이를 통해 사용자는 원하는 행동을 더 자세히 지정할 수 있으므로 의도를 분명히 알 수 있습니다 (예: "Hey Google, ExampleAction과 대화하여 신발을 찾아줘").

추가 작업을 정의하려면 다음 단계를 따르세요.

  1. actions 배열에서 모든 진입점의 작업을 지정합니다.

    예를 들어 다음 코드는 정의하는 '구매' 작업을 추가로 보여줍니다.
    • com.example.ExampleAction.BUY의 인텐트 이름
    • parameters는 이 인텐트가 트리거될 때 사용자 입력에서 파싱합니다. 사용자가 작업을 호출할 때 작업 구문의 특정 데이터가 필요한 경우 유용합니다.
    • queryPatterns - 인텐트를 트리거하기 위해 사용자가 할 말을 정의합니다. 쿼리 패턴에는 파싱할 매개변수를 정의하는 Schema.org 유형이 포함될 수 있습니다.
    {
      "description": "Direct access",
      "name": "BUY",
      "fulfillment": {
        "conversationName": "ExampleAction"
      },
      "intent": {
        "name": "com.example.ExampleAction.BUY",
        "parameters": [
          {
            "name": "color",
            "type": "org.schema.type.Color"
          }
        ],
        "trigger": {
          "queryPatterns": [
            "find some $org.schema.type.Color:color sneakers",
            "buy some blue suede shoes",
            "get running shoes"
          ]
        }
      }
    }
          
  2. conversations 객체의 항목에 상응하는 conversationName를 지정하여 이 인텐트의 처리를 지정합니다.

    {
      "conversations": {
        "ExampleAction": {
          "name": "ExampleAction",
          "url": "https://www.example.com/ExampleAction"
        }
      }
    }
        

다음은 전체 작업 패키지의 예입니다.

{
  "actions": [
    {
      "description": "Default welcome intent",
      "name": "MAIN",
      "fulfillment": {
        "conversationName": "ExampleAction"
      },
      "intent": {
        "name": "actions.intent.MAIN",
        "trigger": {
          "queryPatterns": [
            "talk to ExampleAction"
          ]
        }
      }
    },
    {
      "description": "Direct access",
      "name": "BUY",
      "fulfillment": {
        "conversationName": "ExampleAction"
      },
      "intent": {
        "name": "com.example.ExampleAction.BUY",
        "parameters": [
          {
            "name": "color",
            "type": "org.schema.type.Color"
          }
        ],
        "trigger": {
          "queryPatterns": [
            "find some $org.schema.type.Color:color sneakers",
            "buy some blue suede shoes",
            "get running shoes"
          ]
        }
      }
    }
  ],
  "conversations": {
    "ExampleAction": {
      "name": "ExampleAction",
      "url": "https://www.example.com/ExampleAction"
    }
  },
  "locale": "en"
}