대화형 작업을 사용하면 사용자가 제품 및 서비스에 액세스할 수 있는 자체 대화 인터페이스로 Google 어시스턴트를 확장할 수 있습니다. 작업은 어시스턴트의 강력한 자연어 이해 (NLU) 엔진을 활용하여 자연어 입력을 처리 및 이해하며 해당 입력을 기반으로 작업을 실행합니다.
개요
대화형 작업은 대화의 진입점 (호출이라고 함)을 정의하는 간단한 객체입니다.
호출은 사용자가 어시스턴트에 작업 중 하나와 대화를 시작하고 싶다고 알리는 방법을 정의합니다. 작업 호출은 사용자가 작업을 요청할 때 일치되는 단일 인텐트로 정의됩니다.
대화는 작업이 호출된 후 사용자가 작업과 상호작용하는 방법을 정의합니다. 인텐트, 유형, 장면, 프롬프트로 대화를 빌드합니다.
또한 작업은 추가 작업을 웹훅을 통해 작업과 통신하는 웹 서비스인 처리에 위임할 수 있습니다. 이를 통해 데이터 검증, 다른 웹 서비스 호출, 비즈니스 로직 수행 등의 작업을 수행할 수 있습니다.
사용자에게 중요한 사용 사례를 기반으로 하나 이상의 작업을 작업 프로젝트라는 논리적 컨테이너로 묶습니다.
작업 프로젝트에는 전체 호출 모델 (모든 호출의 모음)이 포함되어 있어 사용자가 대화 모델의 논리적인 위치 (사용자가 할 수 있는 모든 말과 사용자에게 응답할 수 있는 모든 방법)에서 시작할 수 있습니다.
그림 1. 대화 모델의 진입점 역할을 하는 작업 모음입니다. 호출할 수 있는 인텐트는 전역으로 간주됩니다.
호출
호출은 사용자가 어시스턴트에 작업을 호출하도록 요청할 수 있는 브랜드, 이름 또는 캐릭터를 나타내는 표시 이름과 연결됩니다.
사용자는 이 표시 이름을 단독으로 사용하거나 (기본 호출이라고 함) 선택적 딥 링크 구문과 함께 사용하여 작업을 호출할 수 있습니다.
예를 들어 사용자는 다음 문구를 말하여 프로젝트에서 'Google에 관한 사실'이라는 표시 이름으로 세 개의 개별 작업을 호출할 수 있습니다.
"Hey Google, Google에 관한 사실에 관해 말해 줘"
"Hey Google, Google에 관한 사실에 관해 말해 회사에 관한 사실 알려 줘"
"Hey Google, Google에 관한 사실과 대화해 역사에 관한 사실을 알려 줘"
예에서 첫 번째 호출은 기본 호출입니다. 이 호출은 actions.intent.MAIN라는 특수한 시스템 인텐트와 연결됩니다. 두 번째 및 세 번째 호출은 사용자가 특정 기능을 요청할 수 있는 추가 구문을 지정할 수 있는 딥 링크 호출입니다. 이러한 호출은 전역으로 지정한 사용자 인텐트에 상응합니다. 이 예시의 각 호출은 대화의 진입점을 제공하며 단일 작업에 해당합니다.
그림 2. 기본 호출의 예
그림 2에서는 일반적인 기본 호출 흐름을 보여줍니다.
사용자는 작업을 요청할 때 일반적으로 어시스턴트에 표시 이름으로 요청합니다.
어시스턴트는 사용자의 요청을 요청과 일치하는 상응하는 인텐트와 일치시킵니다. 이 경우에는 actions.intent.MAIN가 됩니다.
작업은 인텐트 일치에 관한 알림을 받고 상응하는 프롬프트로 응답하여 사용자와 대화를 시작합니다.
대화
대화는 호출된 후 사용자가 작업과 상호작용하는 방식을 정의합니다. 이러한 상호작용은 대화에 유효한 사용자 입력, 해당 입력을 처리하는 로직, 사용자에게 다시 응답하는 관련 프롬프트를 정의하여 빌드합니다. 다음 그림과 설명은 대화의 하위 수준 구성요소인 인텐트, 유형, 장면, 프롬프트에서 일반적인 대화 차례가 작동하는 방식을 보여줍니다.
그림 3. 대화의 예
그림 3은 일반적인 대화 차례를 보여줍니다.
사용자가 말을 하면 어시스턴트 NLU가 입력을 적절한 인텐트에 매칭합니다. 인텐트는 인텐트의 언어 모델이 사용자 입력과 근접하거나 정확하게 일치할 수 있는 경우 일치됩니다. 언어 모델은 학습 문구 또는 사용자가 말할 가능성이 있는 것의 예를 지정하여 정의합니다. 어시스턴트는 이러한 학습 문구를 받아서 더 확장하여 인텐트의 언어 모델을 만듭니다.
어시스턴트 NLU는 인텐트를 매칭할 때 입력에서 필요한 매개변수를 추출할 수 있습니다. 이러한 매개변수에는 날짜 또는 숫자와 같은 유형이 연결되어 있습니다. 인텐트 학습 문구의 특정 부분에 주석을 달아 추출하려는 매개변수를 지정합니다.
그러면 장면이 매칭된 인텐트를 처리합니다. 장면을 작업의 로직 실행자라고 생각할 수 있습니다. 즉, 대화를 진행하는 데 필요한 로직을 실행하는 번거로운 작업을 실행합니다. 장면은 루프로 실행되어 인텐트 매개변수 유효성 검사, 슬롯 채우기 실행, 사용자에게 다시 메시지 전송 등의 작업을 실행할 수 있는 유연한 실행 수명 주기를 제공합니다.
장면 실행이 완료되면 일반적으로 사용자에게 대화를 계속하라는 메시지를 다시 보내거나 적절한 경우 대화를 종료할 수 있습니다.
주문 처리
호출 또는 대화 중에 작업은 처리 서비스에 일부 작업을 실행하도록 알리는 웹훅을 트리거할 수 있습니다.
그림 4. 대화의 예
그림 4에서는 처리를 사용하는 일반적인 방법인 처리를 사용하여 프롬프트를 생성하는 방법을 설명합니다.
작업을 실행하는 특정 지점에서 JSON 페이로드가 포함된 등록된 웹훅 핸들러 (처리 서비스)에 요청을 전송하는 웹훅을 트리거할 수 있습니다.
Fulfillment는 요청을 처리합니다(예: REST API를 호출하여 일부 데이터 조회 수행 또는 JSON 페이로드에서 일부 데이터 검증). 처리를 사용하는 가장 일반적인 방법은 런타임 시 동적 프롬프트를 생성하여 대화를 현재 사용자에 보다 적합하게 조정하는 것입니다.
처리에서 JSON 페이로드가 포함된 작업에 응답을 다시 반환합니다. 페이로드의 데이터를 사용하여 실행을 계속하고 사용자에게 다시 응답할 수 있습니다.
[null,null,["최종 업데이트: 2025-07-26(UTC)"],[[["\u003cp\u003eConversational Actions extend Google Assistant, letting you create conversational interfaces for your services using natural language understanding.\u003c/p\u003e\n"],["\u003cp\u003eActions are invoked by users through specific phrases, triggering a conversation flow defined by intents, types, scenes, and prompts.\u003c/p\u003e\n"],["\u003cp\u003eFulfillment webhooks can be used to enhance Actions by validating data, calling external services, and generating dynamic prompts during conversations.\u003c/p\u003e\n"],["\u003cp\u003eActions are grouped within an Actions project which manages the invocation model and overall conversation flow.\u003c/p\u003e\n"]]],["Conversational Actions enable interactions with Google Assistant via natural language. Users initiate these interactions through **invocations**, using a display name or deep links. **Conversations** follow, where Assistant's NLU matches user input to **intents**, extracting **parameters**. **Scenes** then process these intents, executing logic and sending **prompts**. **Fulfillment** services handle tasks like data validation or dynamic prompt generation through webhooks, allowing actions to interact with web services and tailor responses. An **Actions project** bundles actions together.\n"],null,["# Conversational Actions let you extend Google Assistant with your own\nconversational interfaces that give users access to your products and\nservices. Actions leverage Assistant's powerful natural language\nunderstanding (NLU) engine to process and understand natural language input\nand carry out tasks based on that input.\n\nOverview\n--------\n\nA Conversational Action is a simple object that defines an\nentry point (referred to as invocation) into a conversation:\n\n- An **invocation** defines how users tell Assistant they want to start a conversation with one of your Actions. An Action's invocation is defined by a single [intent](/assistant/conversational/intents) that gets matched when users request the Action.\n- A **conversation** defines how users interact with an Action after it's invoked. You build conversations with [intents](/assistant/conversational/intents), [types](/assistant/conversational/types), [scenes](/assistant/conversational/scenes), and [prompts](/assistant/conversational/prompts).\n- In addition, your Actions can delegate extra work to **fulfillment**, which are web services that communicate with your Actions via webhooks. This lets you do data validation, call other web services, carry out business logic, and more.\n\nYou bundle one or many Actions together, based on the use cases that are\nimportant for your users, into a logical container called an Actions project.\nYour Actions project contains your entire invocation model (the collection of\nall your invocations), which lets users start at logical places in your\nconversation model (all the possible things users can say and all the possible\nways you respond back to users).\n**Figure 1** . A collection of Actions that serve as entry points into a conversation model. Intents that are eligible for invocation are considered to be *global*.\n\nInvocation\n----------\n\nInvocation is associated with a **display name** that represents a brand,\nname, or persona that lets users ask Assistant to invoke your Actions.\nUsers can use this display name on its own (called the main invocation) or in\ncombination with optional, **deep link** phrases to invoke your Actions.\n\nFor example, users can say the following phrases to invoke three separate\nActions in an project with a display name of \"Facts about Google\":\n\n- *\"Ok Google, talk to Facts about Google\"*\n- *\"Ok Google, talk to Facts about Google to get company facts\"*\n- *\"Ok Google, talk to Facts about Google to get history facts\"*\n\nThe first invocation in the example is the **main invocation** . This\ninvocation is associated with a special system intent named\n`actions.intent.MAIN`. The second and third invocations are deep link\ninvocations that let you specify additional phrases that let users ask for\nspecific functionality. These invocations correspond to user intents that you\ndesignated as global. Each invocation in this example provides an entry point\ninto a conversation and corresponds to a single Action.\n**Figure 2**. Example of main invocation\n\nFigure 2 describes a typical main invocation flow:\n\n1. When users request an Action, they typically ask Assistant for it by your display name.\n2. Assistant matches the user's request with the corresponding intent that matches the request. In this case, it would be `actions.intent.MAIN`.\n3. The Action is notified of the intent match and responds with the corresponding prompt to start a conversation with the user.\n\nConversation\n------------\n\nConversation defines how users interact with an Action after it's invoked. You\nbuild these interactions by defining the valid user input for your\nconversation, the logic to process that input, and the corresponding prompts\nto respond back to the user with. The following figure and explanation shows\nyou how a typical conversation turn works with a conversation's low level\ncomponents: [intents](/assistant/conversational/intents), [types](/assistant/conversational/types), [scenes](/assistant/conversational/scenes), and\n[prompts](/assistant/conversational/prompts).\n**Figure 3**. Example of a conversation\n\nFigure 3 describes a typical conversation turn:\n\n1. When users say something, the Assistant NLU matches the input to an appropriate intent. An intent is matched if the *language model* for that intent can closely or exactly match the user input. You define the language model by specifying *training phrases*, or examples of things users might want to say. Assistant takes these training phrases and expands upon them to create the intent's language model.\n2. When the Assistant NLU matches an intent, it can extract *parameters* that you need from the input. These parameters have *types* associated with them, such as a date or number. You annotate specific parts of an intent's training phrases to specify what parameters you want to extract.\n3. A *scene* then processes the matched intent. You can think of scenes as the logic executors of an Action, doing the heavy lifting and carrying out logic necessary to drive a conversation forward. Scenes run in a loop, providing a flexible execution lifecycle that lets you do things like validate intent parameters, do slot filling, send prompts back to the user, and more.\n4. When a scene is done executing, it typically sends a prompt back to users to continue the conversation or can end the conversation if appropriate.\n\nFulfillment\n-----------\n\nDuring invocation or a conversation, your Action can trigger a webhook that\nnotifies a fulfillment service to carry out some tasks.\n**Figure 4**. Example of a conversation\n\nFigure 4 describes how you can use fulfillment to generate prompts, a common\nway to use fulfillment:\n\n1. At specific points of your Action's execution, it can trigger a webhook that sends a request to a registered webhook handler (your fulfillment service) with a JSON payload.\n2. Your fulfillment processes the request, such as calling a REST API to do some data lookup or validating some data from the JSON payload. A very common way to use fulfillment is to generate a dynamic prompt at runtime so your conversations are more tailored to the current user.\n3. Your fulfillment returns a response back to your Action containing a JSON payload. It can use the data from the payload to continue it's execution and respond back to the user."]]