ym88659208ym87991671
Синтаксис шаблонов фраз для смартапов | Документация для разработчиков

Синтаксис шаблонов фраз в Graph

Обновлено 20 декабря 2023

Иногда необходимо, чтобы смартап реагировал не на все выражения, близкие по смыслу к примерам реплик, а только на четкие шаблоны.

Для этого рядом с каждым примером реплики в блоке Интенты есть переключатель в виде кавычек. Нажмите на переключатель, чтобы перейти в режим шаблонов. При этом кавычки изменятся на символ @.

Что такое шаблоны интентов

Шаблон - это последовательность слов и сущностей, которые обязательно должны встретиться в реплике пользователя, чтобы смартап на нее отреагировал.

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

Синтаксис шаблонов

Шаблоны создаются с помощью специального синтаксиса, описывающего расширенные выражения, которые должен понимать смартап.

Примеры шаблонов:

  • Если в качестве шаблона указать одно слово, например привет, смартап будет реагировать строго на реплику Привет.
  • Если указать * привет* *, смартап будет реагировать так же и на измененное слово, которое может находиться посередине реплики. Так, при этом шаблоне смартап отреагирует не только на Привет, но и на реплики Приветики, Ну привет и другие.
  • Если в шаблоне использовать тильду, смартап будет реагировать на все словоформы в рамках части речи. Например, если указать * ~яблоко *, смартап отреагирует на реплику вроде Дай мне два яблока, пожалуйста, но не будет реагировать на слово яблочко или яблочный сок.

Слово

Слово в шаблоне не расширяется синонимами, поэтому во фразе пользователя оно должно появиться точно в том виде, который указан в шаблоне.

Звездочка

Звездочка (*) обозначает, что на ее месте в реплике пользователя может быть сколько угодно символов, в том числе и ни одного.

Примеры:

  • * привет - любое количество слов перед словом привет.

    Смартап сработает на словосочетания Ну привет или Скажи мне привет, а также на слово Привет.

  • * заказать * стол * - любое количество слов перед, между и после слов заказать и стол.

    Смартап сработает на фразах Я хочу заказать сегодня стол или Заказать стол на двоих и другие. При этом не сработает на заказать столик.

Звездочку можно поставить в начале или в конце слова. Это будет значить, что слово в реплике пользователя может начинаться или заканчиваться любыми символами.

Примеры:

  • привет* - сработает на слова Привет, Приветы, Приветики и другие.

  • *скажи* - подойдет для реагирования на Скажи, Подскажи, Подскажите, Скажите и другие.

Звездочку нельзя использовать внутри слова! А только перед ним и после него.

Тильда

Тильда (~) сообщает смартапу, чтобы он реагировал на все словоформы указанного слова (в рамках части речи). Тильда ставится сразу перед словом в именительном падеже.

Пример:

~яблоко - сработает на все формы слова Яблоко (яблоки, яблок и другие). Не будет работать на слова типа яблочный, так как это другая часть речи. Не будет реагировать на слова с суффиксами, например, яблочко.

Тильда ставится перед начальной грамматической формой слова. Для глаголов начальной формой является несовершенный вид. Таким образом при использовании тильды с глаголами пишите, например, ~покупать, а не ~купить, ~спрашивать, а не ~спросить.

Альтернатива

Заключите несколько слов или других шаблонов в круглые скобки (), чтобы шаблон срабатывал на любое из этих слов в реплике пользователя.

Примеры:

  • (да/ага/угу) - сработает на любое из слов Да, Ага, Угу.

  • * (~яблоко / ~груша) * - срабатывает на ввод любой формы слова яблоко, либо любой формы слова груша, плюс любое количество слов до и после. Например, Дай мне 5 яблок или Хочу купить десять груш.

Опция

Если какие-то слова не обязательно должны быть во фразе пользователя, то их можно заключить в квадратные скобки [].

Пример:

* [много] (~яблоко / ~груша) * - под этот шаблон подойдут фразы Купил много яблок и Хочу грушу.

Сущность

Чтобы указать, что во фразе обязательно должна присутствовать какая-то сущность, подставьте ее в шаблон, используя знак $ перед именем сущности.

Пример:

* живу * $CITY * - сработает на фразу Я живу в Питере.

При этом смартап выделит сущность города (CITY) и создаст переменную $CITY с данными указанного города.

Переменная

Если в рамках одной сессии нужно использовать несколько значений одной сущности, используйте два двоеточия ::, например, $NUMBER::x.

В этом случае при срабатывании интента значение, сказанное пользователем, сохранится в переменную $x. После этого вы сможете использовать значение из переменной $x и создавать из сущности NUMBER новые $NUMBER::y, $NUMBER::n и т. д.

Например, шаблон * $CITY::From * $CITY::To * сработает на фразы вида Питер Москва или Билеты из Москвы до Питера. То есть смартап выделит сущности двух городов и сохранит их в переменные с именами $From и $To, чтобы можно было определить, откуда и куда пользователь ищет билеты.

Вложенность шаблонов

Шаблоны можно вкладывать друг в друга без ограничений.

Примеры вложенных шаблонов:

  • (спасибо [и][тебе|вам] [большое]|благодар|спс|супер|супир|ура|отлично|молод|умни|пасиб)
  • (мой|моя|мое|мое|мае|мае|мне|мои|маи|мою|маю|моне|мане|мане|моне|меня|миня|моих|маих|моим|маим|моем|маем|моем|маем|мя|ма|мня|[со] мной)
  • мне (понятно|понятненько|ясно|ясненько) [все|все]
ПАО Сбербанк использует cookie для персонализации сервисов и удобства пользователей.
Вы можете запретить сохранение cookie в настройках своего браузера.