Обычно запуск любой команды требует префикса имени ассистента (напр, "Ирина, погода"). Но иногда это избыточно - например, если мы пишем игру, и команды идут непрерывно.
С версии 4.0 поддерживается установление контекста. В контексте движок:
- принимает фразы без префикса Ирина (имени ассистента)
- сразу передает их в функцию обработки контекста
Как работает
При вызове функции обработки можно вызвать функцию
core.context_set(new_context)
Контекст будет держаться 10 секунд, потом будет сброшен (нужно, чтобы Ирина не зависала в состоянии, если пользователь ушел)
Пока контекст установлен, любой непустой вход (фраза) будет сразу подана на вход функции контекста, после чего контекст будет сброшен!
Таким образом, если вы хотите продолжать взаимодействовать с контекстом, нужно после каждого вызова функции его устанавливать повторно.
Пример
Для примера доступна игра "Больше-меньше" (плагин plugins/plugin_gamemoreless.py). Запустите её с помощью команды "ирина игра больше меньше"
Также доступен второй тип задания контекста в альтернативной реализации игры plugins_inactive/plugin_gamemoreless_alt.py. Альтернативный вариант рекомендуется больше, чем основной
Типы контекста
Контекст может задаваться двумя способами:
-
Как функция, принимающая текстовый ввод (пример в игре больше меньше plugins/plugin_gamemoreless.py)
-
Как словарь команд внутри контекста - такой же, как при задании команд Ирины в манифесте плагина. В этом случае движок будет пытаться распознать команду внутри контекста, и в случае нераспознавания контекст будет переустановлен.
Пример диалога во втором варианте:
В: ирина игра больше меньше
О: скажи правила или начать
В: тест
О: не поняла (контекст сохранился, по-прежнему можно сказать правила)
Пример реализации игры Больше-меньше в альтернативном варианте есть в файле plugins_inactive/plugin_gamemoreless_alt.py (нужно перенести в plugins_active, а затем запустить командой "игра меньше больше")