-
Notifications
You must be signed in to change notification settings - Fork 10
Создание собственного навыка
Начиная с версии 0.7.0 программа стала поддерживать сторонние навыки.
Ваш навык должен содержать 2 файла: __init__.py
и *.trigger
, в том числе дополнительные файлы и директории при необходимости.
Файл с расширением .trigger
должен иметь то же название, что и у навыка. Например, если ваш навык называется book_reader
, то он должен включать в себя файл book_reader.trigger
.
*.trigger
содержит фразы, при введении которых пользователем навык активируется. Фразы разделяются по строкам (каждая фраза с новой строки).
Прочти книгу
прочти книгу
Прочитай книгу
прочитай книгу
Расскажи о чём эта книга
Файл __init__.py
включает в себя действия, совершаемые навыком:
from vasisualy.skills.vas_skill.vas_skill import Skill # Импорт родительского класса навыков
# Название класса, можете называть его как угодно, желательно использовать название навыка.
class YourSkill(Skill):
def main(self, user_message):
if super(YourSkill, self)._is_triggered(user_message, super(YourSkill, self)._get_triggers()):
# Здесь должны быть действия, совершаемые навыком или иная магия
toSpeak = "Сообщение, передаваемое пользователю."
return toSpeak
else:
return ''
def main(user_message):
skill = YourSkill("your_skill_name", user_message) # Вывод сообщения, переданного навыком, пользователю.
return skill.main(user_message)
__init__.py
обязательно должен включать весь код, описанный выше.
Вместо YourSkill
используйте своё название класса.
В функции main
класса YourSkill
после if super(YourSkill, self)._is_triggered(user_message, super(YourSkill, self)._get_triggers()):
напишите необходимый код, затем измените значение переменной toSpeak
на желаемое.
from vasisualy.skills.vas_skill.vas_skill import Skill # Импорт родительского класса навыков
import random
results = ("орёл", "решка") # Значения, используемые навыком
# Название класса, можете называть его как угодно, желательно использовать название навыка.
class CoinSkill(Skill):
def main(self, user_message):
global results
if super(CoinSkill, self)._is_triggered(user_message, super(CoinSkill, self)._get_triggers()):
result = random.choice(results) # Получение случайного значения: орёл или решка.
toSpeak = f"Я подбросил монету...\nНа монете - {result}." # Сообщение, передаваемое пользователю.
return toSpeak
else:
return ''
def main(user_message):
skill = CoinSkill("coin", user_message) # Вывод сообщения, переданного навыком, пользователю.
return skill.main(user_message)
Для установки вашего навыка переместите директорию, содержащую __init__.py
и *.trigger
(директория должна иметь такое же название, как и у *.trigger
), в папку vasisualy/skills
нужной вам версии голосового ассистента.
Запустите Vasisualy и скажите (введите) любую фразу из файла *.trigger
, если ваш навык не запустился - сообщите об ошибке, создав Issue в основном репозитории Vasisualy на GitHub или обратившись по указанным в README.md контактам.
Для включения в официальный репозиторий Vasisualy ваш навык должен соответствовать указанным ниже требованиям.
- Навык должен что-то делать - ваш навык не должен выводить лишь одно сообщение вроде "привет, друг" и больше ничего не делать.
- Навык должен быть полезен - ваш навык должен быть полезен хотя бы двум людям в мире.
- Навык не должен оскорблять кого-либо.
- Навык не должен содержать несвободные компоненты.
Вы должны создать Git репозиторий для вашего навыка. Репозиторий должен включать файл README
(любого формата) и файлы, относящиеся к навыку.
Файл README
должен включать в себя:
- Название навыка.
- Описание навыка.
- Поддерживаемые платформы.
- Пример использования.
И, наконец, нужно создать Issue в основном репозитории Vasisualy, используя шаблон Добавление навыка в репозиторий. Там необходимо указать требуемую информацию, также дополнить Issue при необходимости. Если ваш навык соответствует требованиям и правильно оформлен, он будет добавлен в официальный репозиторий.
Создание навыков помогает развитию Vasisualy, сделав самый простой навык, вы сделаете огромный вклад в разработку.