Skip to content

Latest commit

 

History

History
55 lines (40 loc) · 3.41 KB

DEV_CONTEXT.md

File metadata and controls

55 lines (40 loc) · 3.41 KB

Поддержка контекста (с версии 4.0)

Обычно запуск любой команды требует префикса имени ассистента (напр, "Ирина, погода"). Но иногда это избыточно - например, если мы пишем игру, и команды идут непрерывно.

С версии 4.0 поддерживается установление контекста. В контексте движок:

  • принимает фразы без префикса Ирина (имени ассистента)
  • сразу передает их в функцию обработки контекста

Как работает

При вызове функции обработки можно вызвать функцию

core.context_set(new_context)

Контекст будет держаться 10 секунд, потом будет сброшен (нужно, чтобы Ирина не зависала в состоянии, если пользователь ушел)

Пока контекст установлен, любой непустой вход (фраза) будет сразу подана на вход функции контекста, после чего контекст будет сброшен!

Таким образом, если вы хотите продолжать взаимодействовать с контекстом, нужно после каждого вызова функции его устанавливать повторно.

Пример

Для примера доступна игра "Больше-меньше" (плагин plugins/plugin_gamemoreless.py). Запустите её с помощью команды "ирина игра больше меньше"

Также доступен второй тип задания контекста в альтернативной реализации игры plugins_inactive/plugin_gamemoreless_alt.py. Альтернативный вариант рекомендуется больше, чем основной

Типы контекста

Контекст может задаваться двумя способами:

  1. Как функция, принимающая текстовый ввод (пример в игре больше меньше plugins/plugin_gamemoreless.py)

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

Пример диалога во втором варианте:

В: ирина игра больше меньше
О: скажи правила или начать
В: тест
О: не поняла      (контекст сохранился, по-прежнему можно сказать правила)

Пример реализации игры Больше-меньше в альтернативном варианте есть в файле plugins_inactive/plugin_gamemoreless_alt.py (нужно перенести в plugins_active, а затем запустить командой "игра меньше больше")