Тип контента
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Типы позволяют настроить механизм Assistant NLU (понимание естественного языка) для извлечения структурированных данных из пользовательского ввода. Вы можете использовать типы в следующих ситуациях:
В намерениях вы можете аннотировать обучающие фразы типами для создания слотов. Когда пользователи говорят что-то, что соответствует слоту, механизм NLU извлекает это как типизированный параметр, поэтому вы можете обработать это в сцене .
На этапе заполнения слотов сцены вы можете указать несколько слотов, которые вы хотите, чтобы пользователь предоставил, прежде чем он сможет перейти или выйти из сцены.
На этапе условий сцены вы можете основывать логику на том, имеет ли параметр определенное значение, определенное в типе.
Пользовательские типы
Пользовательские типы позволяют вам создать собственную спецификацию типа, чтобы уведомить NLU о назначении набора значений одному ключу. Вы можете указать типы различными способами:
- Слова и синонимы позволяют сопоставлять несколько значений одному ключу, который называется записью. Ваш тип может содержать одну или несколько записей. Если вы выберете этот вариант, вы также сможете включить следующие настройки NLU:
- Включить нечеткое сопоставление . Эта функция позволяет сопоставлять записи, содержащие более одного слова, даже если слова произносятся в другом порядке.
- Принимать неизвестные значения . Если вы не можете указать все возможные значения, языковой процессор может принимать неизвестные слова или фразы на основе окружающих входных данных и данных обучения намерению, таких как элементы, которые могут быть добавлены в список покупок.
- Регулярные выражения позволяют типу сопоставлять значения с использованием шаблонов регулярных выражений, основанных на стандарте Google RE2 .
- Текст произвольной формы позволяет типу соответствовать всему, что говорит пользователь. Аннотирование намерения с помощью этого типа позволяет использовать все входные данные в качестве параметра, который можно передать в собственный NLU.
Типы систем
Системные типы позволяют аннотировать и извлекать известные данные из пользовательского ввода, используя предоставленные системой обучающие данные и значения. Поддерживаются следующие типы систем:
Тип | Описание |
---|
actions.type.DateTime | Содержит дату, время и часовой пояс в зависимости от настроек устройства пользователя. Доступно для заполнения слотов и аннотации обучающих фраз. |
actions.type.Date | Содержит только дату. Доступно только для заполнения слотов. |
actions.type.Time | Содержит только время. Доступно только для заполнения слотов. |
actions.type.Number | Тип Number соответствует порядковым и кардинальным числам. |
Использование DateTime
, Date
и Time
Эти типы ведут себя по-разному в зависимости от того, где вы используете тип и вводимые пользователем данные, соответствующие этому типу.
Использование с намерениями
Аннотирование обучающих фраз в намерениях поддерживает только тип DateTime
. Пользовательский ввод не обязательно должен соответствовать всему значению DateTime
. Например, если пользователь указывает только год, параметр сеанса может выглядеть следующим образом:
"date_time": {
"year": 2019
}
Использование с заполнением слотов
Заполнение слотов поддерживает DateTime
, Date
и Time
.
- Если тип слота —
DateTime
, Ассистент запрашивает у пользователя, пока не будет предоставлено полное значение. - Если тип слота —
Date
, Ассистент будет запрашивать у пользователя, пока не будет предоставлено значение даты. При сборе параметр, который вы получаете, представляет собой полный DateTime
со временем, установленным на 00:00. - Если типом интервала является
Time
, Ассистент запрашивает у пользователя, пока не будет предоставлено значение времени. При сборе параметр, который вы получаете, представляет собой полный объект DateTime
с датой, установленной на текущую дату.
Например, предположим, что пользователь из Лос-Анджелеса сказал: «Окей, Google, создай напоминание на 15 января 2024 года в 20:00». Когда DateTime
извлекается в процессе заполнения слота, полный параметр может выглядеть следующим образом:
"date_time": {
"day": 15,
"hours": 20,
"minutes": 0,
"month": 1,
"nanos": 0,
"seconds": 0,
"time_zone": {
"id": "America/Los_Angeles"
},
"year": 2024
}
Использование с условиями
Условия допускают использование только чисел и строк, поэтому использование параметра DateTime
верхнего уровня приводит к результату False для условия. Например:
-
$session.params.my_dateTime.day > 5
— допустимое условие, поскольку значение day
является числом и поддерживается. -
$session.params.my_dateTime > "01-01-2010"
— недопустимое условие, поскольку объект DateTime верхнего уровня не является числом или строкой.
Переопределения типов среды выполнения
Переопределения типов во время выполнения позволяют динамически создавать или изменять типы при выполнении. Эта функция позволяет добавлять или заменять спецификацию типа во время выполнения. Например, вы можете проверить внутренний источник данных, чтобы загрузить пункты ежедневного меню в тип вашего выполнения.
Дополнительную информацию о том, как создавать переопределения типов, см. в руководстве по веб-перехватчикам .
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-25 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-25 UTC."],[[["\u003cp\u003eTypes are used to extract structured data from user input, allowing you to create slots in intents, manage slot filling within scenes, and define conditions based on parameter values.\u003c/p\u003e\n"],["\u003cp\u003eYou can create custom types using words and synonyms, regular expressions, or free-form text to define how the NLU interprets user input.\u003c/p\u003e\n"],["\u003cp\u003eSystem types such as \u003ccode\u003eDateTime\u003c/code\u003e, \u003ccode\u003eDate\u003c/code\u003e, \u003ccode\u003eTime\u003c/code\u003e, and \u003ccode\u003eNumber\u003c/code\u003e provide built-in data extraction for common data formats.\u003c/p\u003e\n"],["\u003cp\u003eRuntime type overrides enable dynamic modification of types during fulfillment, allowing you to adjust types based on real-time data.\u003c/p\u003e\n"]]],[],null,["# Types let you configure the Assistant NLU (natural language understanding)\nengine to extract structured data from user input. You\ncan use types in the following situations:\n\n- In [intents](/assistant/conversational/intents), you can annotate training phrases with types to\n create slots. When users say something that matches a slot, the NLU engine\n extracts it as a typed parameter, so you can process it in a [scene](/assistant/conversational/scenes).\n\n- Within a scene's [slot filling](/assistant/conversational/scenes#slot_filling) stage, you can specify\n multiple slots that you want the user to provide before they can\n transition or exit out of the scene.\n\n- Within a scene's [conditions](/assistant/conversational/scenes#conditions) stage, you can base\n logic on whether a parameter has a specific value that's defined in a type.\n\nCustom types\n------------\n\nCustom types let you create your own type specification to notify the NLU to\nassign a set of values to a single key. You can specify types in a variety of\nways:\n\n- **Words and synonyms** allow you to map multiple values to a single key, which are called an entry. Your type can contain one or many entries. If you choose this option, you can also enable the following NLU settings:\n - **Enable fuzzy matching** - This feature allows entries with more than one word to be matched, even when the words are spoken in a different order.\n - **Accept unknown values** - When you can't specify all possible values, the language processor can accept unknown words or phrases based on surrounding input and intent training data, such as items that might be added to a grocery list.\n- **Regular expressions** allows the type to match values using regular expression patterns based on [Google's RE2 standard](https://github.com/google/re2/wiki/Syntax).\n- **Free form text** allows the type to match anything a user says. Annotating an intent with this type lets you consume all input as a parameter that you can pipe to your own NLU.\n\nSystem types\n------------\n\nSystem types let you annotate and extract well-known data from user input\nusing system-provided training data and values. The following system types are\nsupported:\n\n| Type | Description |\n|-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------|\n| **`actions.type.DateTime`** | Contains date, time, and timezone based on the user's device settings. Available for slot filling and training phrase annotation. |\n| **`actions.type.Date`** | Contains date only. Available for slot filling only. |\n| **`actions.type.Time`** | Contains time only. Available for slot filling only. |\n| **`actions.type.Number`** | The `Number` type matches ordinal and cardinal numbers. |\n\n### `DateTime`, `Date`, and `Time` usage\n\nThese types behave differently depending on where you use the type and the\nuser input that matches the type.\n\n#### Using with intents\n\nAnnotating training phrases in intents supports only the `DateTime` type. User\ninput doesn't need to match an entire `DateTime` value. For example, if a user\nprovides only the year, the session parameter might look like this: \n\n \"date_time\": {\n \"year\": 2019\n }\n\n#### Using with slot filling\n\nSlot filling supports `DateTime`, `Date`, and `Time`.\n\n- If the slot type is `DateTime`, the Assistant prompts the user until a full value is provided.\n- If the slot type is `Date`, the Assistant prompts the user until a date value is provided. When collected, the parameter you receive is a full `DateTime` with the time set to 00:00.\n- If the slot type is `Time`, the Assistant prompts the user until a time value is provided. When collected, the parameter your receive is a full `DateTime` object with the date set to the current date.\n\nFor example, suppose a user in Los Angeles said, \"Hey Google, create a reminder\nfor January 15, 2024 at 8 pm.\" When `DateTime` is extracted as part of a slot\nfilling process, the full parameter might look like this: \n\n \"date_time\": {\n \"day\": 15,\n \"hours\": 20,\n \"minutes\": 0,\n \"month\": 1,\n \"nanos\": 0,\n \"seconds\": 0,\n \"time_zone\": {\n \"id\": \"America/Los_Angeles\"\n },\n \"year\": 2024\n }\n\n#### Using with conditions\n\nConditions only allow the use of numbers and strings, so using the top level\n`DateTime` parameter results in a **False** result for the condition. For\nexample:\n\n- `$session.params.my_dateTime.day \u003e 5` is a valid condition, because the `day` value is a number and is supported.\n- `$session.params.my_dateTime \u003e \"01-01-2010\"` is an invalid condition, because the top level 'DateTime' object is not a number or string.\n\nRuntime type overrides\n----------------------\n\nRuntime type overrides let you dynamically create or modify types in\nfulfillment. This feature lets you add to or replace a type's specification at\nruntime. For example, you can check a backend data source to load daily menu\nitems into a type in your fulfillment.\n\nSee the [webhooks](/assistant/conversational/webhooks#runtime_type_overrides) guide for more information\non how to build type overrides."]]