작업 정의 (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 배열에서 모든 진입점의 작업을 지정합니다.

    예를 들어 다음 코드는 다음을 정의하는 추가 'buy' 작업을 보여줍니다.
    • 인텐트 이름: 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"
}