Для отладки можно использовать запуск системы через файл runva_cmdline.py.
Она делает запуск ядра (VACore in vacore.py) через интерфейс командной строки, это удобнее, чем голосом диктовать.
- Подключить собственный навык можно, создав плагин в plugins_. Смотрите примеры.
В целом, поддержка плагинов сделана на собственном движке Jaa.py - минималистичный однофайловый движок поддержки плагинов и их настроек.
Плагины располагаются в папке plugins и должны начинаться с префикса "plugins_".
Настройки плагинов, если таковые есть, располагаются в папке "options" (создается после первого запуска).
Пример самого простого плагина - plugins/plugin_greetings.py
Просто команда и её обработка
Если нужно, чтобы юзер мог настроить плагин (например, задать apiKey для внешнего сервиса). Пример: plugins/plugin_yandex_rasp.py
Детали - в фреймворке Jaa.py.
(Если вдруг нужно сохранить пользовательские настройки после обработки плагином - гляньте plugins/plugin_weatherowm.py, там есть функция core.save_plugin_options(modname,options)
)
Все, что говорится после команды, будет передано в функцию плагина
Например, если есть команда: "таймер", по фразе "ирина таймер пять" будет
запущена def set_timer(core:VACore, phrase:str):
, где phrase = пять
Пример: plugins/plugin_timer.py
Команды можно задавать деревом.
Пример в plugins/plugin_random.py
"commands": { # набор скиллов. Фразы скилла разделены | . Если найдены - вызывается функция
"подбрось|брось": { # если нашли - парсим дальше
"монету|монетку": play_coin,
"кубик|кость": play_dice,
}
}
Обычно фразы должны начинаться с имени помощника (Ирина).
Но иногда хочется сделать красиво - например, если мы делаем голосовую игру, было бы странно каждый раз говорить Ирина. Или можно уточнить - "что там после слова таймер?"
Далее идет описание механизмов работы с контекстом /docs/DEV_CONTEXT.md
Простейшие примеры установления контекста для переспроса:
- plugins/plugin_timer.py - таймер, в конце функции
- plugins/plugin_mpchcmult.py - переспрос названия мультика
Пример: plugins_inactive/plugin_urlopener.py