Skip to content

Создание собственного навыка

Reinold Rivera edited this page Jun 30, 2021 · 3 revisions

Начиная с версии 0.7.0 программа стала поддерживать сторонние навыки.

Создание навыка

Ваш навык должен содержать 2 файла: __init__.py и *.trigger, в том числе дополнительные файлы и директории при необходимости.

Триггеры навыка

Файл с расширением .trigger должен иметь то же название, что и у навыка. Например, если ваш навык называется book_reader, то он должен включать в себя файл book_reader.trigger. *.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

Для включения в официальный репозиторий Vasisualy ваш навык должен соответствовать указанным ниже требованиям.

Требования

  • Навык должен что-то делать - ваш навык не должен выводить лишь одно сообщение вроде "привет, друг" и больше ничего не делать.
  • Навык должен быть полезен - ваш навык должен быть полезен хотя бы двум людям в мире.
  • Навык не должен оскорблять кого-либо.
  • Навык не должен содержать несвободные компоненты.

Оформление репозитория навыка

Вы должны создать Git репозиторий для вашего навыка. Репозиторий должен включать файл README (любого формата) и файлы, относящиеся к навыку.

README

Файл README должен включать в себя:

  • Название навыка.
  • Описание навыка.
  • Поддерживаемые платформы.
  • Пример использования.

Создание Issue

И, наконец, нужно создать Issue в основном репозитории Vasisualy, используя шаблон Добавление навыка в репозиторий. Там необходимо указать требуемую информацию, также дополнить Issue при необходимости. Если ваш навык соответствует требованиям и правильно оформлен, он будет добавлен в официальный репозиторий.

Зачем это нужно

Создание навыков помогает развитию Vasisualy, сделав самый простой навык, вы сделаете огромный вклад в разработку.