Skip to content

Платформа для создания навыков Алисы.

Notifications You must be signed in to change notification settings

AikoSora/AlicePlatform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AlicePlatform

Асинхронная платформа для создания навыков Алисы.

Python3.8 Sanic22.6.2 SQLAlchemy1.4.40 Alembic

Установка

Установите зависимости платформы

pip install -r requirements.txt

Настройте settings.py файл

  • url - Переменная по которой будет доступны post запросы для Алисы
  • secret_key - Переменная для проксирования через Ngnix
  • host - IP адрес для развертывания сервера Sanic
  • port - Port для развертывания сервера Sanic
  • debug - Режим разработчика
  • app_name - Название приложения для сервера Sanic

После всех настроек следует произвести миграцию моделей

alembic revision --autogenerate -m "migration name"
alembic upgrade head

Запуск и тестирование навыка

Для тестирования навыка нам потребуется утилита alice-nearby, в папке bin репозитория утилиты уже есть скомпилированные версии для MacOS и Windows

Запустим платформу командой

python3 main.py

По дефолту навык алисы будет доступен по адресу http://127.0.0.1:8000/alice, зная все эти данные переходим к alice-nearby и начинаем тестирование навыка

./alice-nearby-macos-amd64 --webhook=http://127.0.0.1:8000/alice --port=3456

Теперь перейдя по http://localhost:3456/ мы можем протестировать наш навык!

Hello World!

Все команды для навыка находятся в папке /bot/commands, в этой папке можно создавать свои py файлы, создадим новый с названием hello.py и впишем туда следующий код

from bot import handler

@handler.message(names="Hello")
async def _(msg, database):
    return msg("World!")

Переменная names принимает обьект list или str для инициализации команды и последующим поиском этой или нескольких строк в полученным платформой текстом, т.е. если человек скажет алисе - "Oh, Alice! Hello.", платформа получит этот текст и если есть команды с одним из этих слов или похожими словами в точности до (примерно) 80%, триггер команды сработает и скажет человеку "World!"


В файле default.py есть примеры команд, возьмем эту

@handler.message(names=["Включить", "свет"])

переменная names принимает list обьект (в простонароде массив), если человек что-то скажет Алисе и в этой команде будут эти два слова (включить/свет) то Алиса ответит, эти слова по отдельности работать не будут (нужно писать отдельные команды)

return msg("World!")

Зачем нам возвращать обьект Message если можно вернуть просто текст? Попробуйте! Практика и тесты это хороший способ изучить что-либо! Но функция msg (обьект Message) лишь обертка над json функцией Sanic, по сути мы возвращаем обычный готовый json, это проще, но никто не запрещает вам использовать функции Sanic!

Переменная database обьект SQLAlchemy, здесь не будут примеры для работы с данной библиотекой, все подобное вы можете найти в оффициальных доках от этой либы, но все же маленький пример есть в default.py

Все модели создаются в папке /database/models/.

Послесловие (и известные проблемы)

About

Платформа для создания навыков Алисы.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published