내장 인텐트 (Dialogflow)

내장 인텐트는 작업이 특정 카테고리의 사용자 요청을 처리할 수 있음을 Google 어시스턴트에 알리기 위해 지정할 수 있는 고유 식별자입니다. 예를 들어 다음은 어시스턴트가 내장 인텐트와 일치시키는 사용자 쿼리의 예입니다.

  • '게임 플레이' 내장 인텐트: "Hey Google. 기억력 게임 하자."
  • '별자리 운세 보기' 내장 인텐트: "Hey Google. 별자리 운세 알려 줘"

작업 검색 중에 어시스턴트는 개발자가 지정한 내장 인텐트를 포함하여 작업에 관한 메타데이터를 사용하여 사용자에게 작업을 추천할 수 있습니다. 대화 왕복을 최소화하기 위해 어시스턴트는 또한 사용자 쿼리의 매개변수를 스캔하여 작업에 전달하려고 시도합니다.

매개변수 및 사용자 쿼리 예를 포함하여 어시스턴트에서 지원하는 내장 인텐트의 전체 목록을 보려면 내장 인텐트 참조를 확인하세요.

내장 인텐트 통합

작업을 빌드하는 방법에 따라 내장 인텐트를 통합하는 다양한 방법이 있습니다.

Dialogflow

Dialogflow를 사용하여 작업을 만드는 경우 Dialogflow 콘솔에서 내장 인텐트를 그래픽으로 연결할 수 있습니다.

Dialogflow로 내장 인텐트를 연결하려면 다음 단계를 따르세요.

  1. Dialogflow 콘솔을 열고 에이전트를 선택한 후 인텐트 화면으로 이동합니다.
  2. 에이전트가 특정 내장 인텐트를 수신할 때 트리거하는 인텐트를 만들거나 선택합니다. 이벤트 섹션을 열고 이벤트 추가를 클릭합니다.

    그림 1. Dialogflow 콘솔에서 Dialogflow 이벤트 추가
  3. 이벤트 필드에 에이전트의 내장 인텐트 이벤트 이름 (예: actions_intent_PLAY_GAME)을 입력합니다.

    그림 2. Dialogflow 콘솔에서 내장 인텐트를 에이전트에 연결하기
  4. 저장을 클릭합니다.

Actions SDK

Actions SDK를 사용하여 작업을 빌드하는 경우 내장 인텐트와 작업 패키지의 작업 간의 매핑을 지정해야 합니다.

Actions SDK를 사용하여 내장 인텐트를 연결하려면 다음 단계를 따르세요.

  1. Action 정의의 name 필드에 내장 인텐트를 지정합니다.
  2. Actions SDK 개요에 설명된 대로 gactions 도구를 사용하여 작업 프로젝트에 작업 패키지를 업로드합니다.

예를 들어 다음 스니펫은 CHECK_AIR_QUALITY 내장 인텐트를 추가하는 방법을 보여줍니다.

{
   "actions":[
      {
         "description":"Default Welcome Intent",
         "name":"MAIN",
         "fulfillment":{
            "conversationName":"conversation_1"
         },
         "intent":{
            "name":"actions.intent.MAIN"
         }
      },
      {
         "description":"Check Air Quality",
         "name":"CHECK_AIR_QUALITY",
         "fulfillment":{
            "conversationName":"conversation_1"
         },
         "intent":{
            "name":"actions.intent.CHECK_AIR_QUALITY"
         }
      }
   ],
   "conversations":{
      "conversation_1":{
         "name":"conversation_1",
         "url":"https://example.com/fulfillment",
         "fulfillmentApiVersion":2
      }
   }
}

내장 인텐트 매개변수 처리

내장 인텐트를 통해 작업을 호출하면 처리에서 추가 매개변수를 수신할 수 있습니다. 인텐트 스키마는 매개변수 이름과 매개변수 유형을 기본 유형 또는 schema.org 항목으로 정의합니다. 대화형 작업 내장 인텐트의 스키마를 보려면 내장 인텐트 참조를 확인하세요.

내장 인텐트의 매개변수는 선택사항입니다. 어시스턴트는 사용자의 내장 인텐트 호출에서 추출할 수 있는 경우 매개변수로 매개변수를 채우는 작업을 처리합니다.

예를 들어 actions.intent.CHECK_AIR_QUALITY 내장 인텐트의 스키마는 선택적 매개변수 4개를 정의합니다.

매개변수 이름 유형
attributes 문자열 값입니다.
location schema.org/Place 객체
temporalCoverage schema.org/Duration 객체
timeIndicator EnumeratedDuration (Google 전용 확장 프로그램).

다음 코드 스니펫은 사용자가 "내일 샌프란시스코의 공기질은 어때?"라고 말하여 작업을 호출할 때 대화 웹훅 (JSON) 요청의 예를 보여줍니다.

"inputs":[
      {
         "intent":"actions.intent.CHECK_AIR_QUALITY",
         "rawInputs":[
            {
               "inputType":"VOICE",
               "query":"what is the air quality in san francisco tomorrow"
            }
         ],
         "arguments":[
            {
               "name":"location",
               "structuredValue":{
                  "geo":{
                     "longitude":-122.41941550000001,
                     "latitude":37.7749295
                  },
                  "@context":"https://schema.org",
                  "@type":"Place",
                  "name":"san francisco"
               }
            },
            {
               "name":"temporalCoverage",
               "rawText":"2018-04-25",
               "textValue":"2018-04-25"
            }
         ]
      }
   ]

이 예에서 매개변수는 다음 값을 사용합니다.

  • location 매개변수에는 '샌프란시스코'의 schema.org/Place 값이 포함됩니다.
  • temporalCoverage 매개변수에는 호출 시간을 기준으로 내일 날짜의 schema.org/Duration 값이 포함됩니다.
  • 사용자의 호출 문구에 이러한 정보가 포함되어 있지 않으므로 attributestimeIndicator 매개변수의 값이 없습니다.

Node.js용 Actions on Google 클라이언트 라이브러리를 사용하는 경우 다음 스니펫과 같이 매개변수 값을 검색할 수 있습니다.

app.intent('actions.intent.CHECK_AIR_QUALITY', (conv) => {
  const attributes = conv.arguments.get('attributes');
  const location = conv.arguments.get('location');
  const temporal_coverage = conv.arguments.get('temporalCoverage');
  Const time_indicator = conv.arguments.get('timeIndicator')

  // Your Action logic. If you need to use any of the parameter values,
  // you should check first that it is defined. Arguments.get returns
  // undefined if it can't find a value for a parameter.

});

내장 인텐트와의 통합 테스트

통합을 테스트하려면 다음 단계를 따르세요.

  1. 테스트 작업이 사용 설정된 상태에서 작업 시뮬레이터를 열거나 기기에서 어시스턴트를 엽니다.
  2. 내장 인텐트와 연결된 쿼리를 말하거나 입력합니다. 예: “게임 하자.”
  3. 표시된 앱 선택 대화상자에서 작업을 찾습니다.
  4. 앱을 선택하여 앱에 인텐트를 보냅니다.
그림 3. 내장 인텐트 구문에서
결과 표시되는 작업 선택 대화상자
그림 4. 내장 인텐트에 연결된 작업 호출

내장 인텐트 사용 권장사항

내장 인텐트를 사용할 때는 다음 권장사항을 따라야 합니다.

  • 내장 인텐트를 특정 작업에 매핑: 특정 내장 인텐트가 작업을 트리거하면 가능한 한 적은 마찰로 사용자를 작업의 특정 인텐트와 기능으로 보냅니다. 예를 들어 작업이 PLAY_GAME 내장 인텐트를 지원하고 이 인텐트를 수신하는 경우 즉시 사용자를 작업의 게임 기능으로 보내야 합니다. 사용자가 게임을 플레이하고 싶은지 다시 묻지 마세요.
  • 내장 인텐트 매개변수 처리: 어시스턴트가 처리에 전송하는 내장 인텐트 매개변수 값을 사용해야 합니다. 사용자에게 이러한 값을 다시 요청하지 마세요.