Типы

Типы позволяют настроить механизм 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 верхнего уровня не является числом или строкой.

Переопределения типов среды выполнения

Переопределения типов во время выполнения позволяют динамически создавать или изменять типы при выполнении. Эта функция позволяет добавлять или заменять спецификацию типа во время выполнения. Например, вы можете проверить внутренний источник данных, чтобы загрузить пункты ежедневного меню в тип вашего выполнения.

Дополнительную информацию о том, как создавать переопределения типов, см. в руководстве по веб-перехватчикам .