Giter Site home page Giter Site logo

aioalice's Introduction

Русский | English

Яндекс Алиса. Диалоги (навыки)

aioAlice это асинхронная библиотека для взаимодействия с Алисой

Зачем?

  • Работайте с привычными классами, а не зайнимайтесь парсингом JSON'а
  • Автоматический ответ в вебхук, даже если вы не успели подготовить ответ вовремя - навык не вернет ошибку сервера, но запишет вам лог

Автоматический ответ сработает только при использовании async IO. Если затянется обработка в каком-то цикле или др. синхронное вычисление, это не поможет

  • Удобные хэндлеры - будет вызван обработчик, соответствующий полученной команде
  • Работа с состояниями
  • Легко загрузить изображение, сформировать ответ

Установка

# рекомендуется использовать virtual env и python 3.6+:
python3.6 -m venv aliceenv
source ./aliceenv/bin/activate

pip install pip -U
pip install setuptools -U
pip install uvloop  # uvloop при желании

pip install aioalice -U
# Or install from GitHub:
# pip install git+https://github.com/surik00/aioalice.git -U

# Если git не установлен:
# 1. скачайте ZIP
# 2. разархивируйте и перейдите в папку
# 3. выполните следующую команду:
python setup.py install

Быстрый старт

Пример простейшего навыка

dp = Dispatcher()

@dp.request_handler()
async def handle_all_requests(alice_request):
    return alice_request.response('Привет этому миру!')

Карточки

JSON serializing

Если вы хотите использовать более быструю библиотеку для работы с JSON, установите rapidjson или ujson. Библиотека определится и будет использована автоматически.


Навыки с использованием aioAlice


Тестирование и деплой

В примерах используется следующая конфигурация:

WEBHOOK_URL_PATH = '/my-alice-webhook/'  # webhook endpoint

WEBAPP_HOST = 'localhost'  # запускаем на локальной машине
WEBAPP_PORT = 3001  # испльзуем любой не занятый порт

Для тестирования можно использовать ngrok, тогда вебхук нужно будет установить на https://1a2b3c4d5e.ngrok.io/my-alice-webhook/ (endpoint должен быть WEBHOOK_URL_PATH, так как WebApp ожидает получать обновления именно там), порт в настройках нужно указать WEBAPP_PORT (в данном случае 3001)

Для продакшена можно использовать Nginx, тогда в конфигурации Nginx внутри блока server необходимо добавить:

location /my-alice-webhook/ {  # WEBHOOK_URL_PATH
    proxy_pass         http://127.0.0.1:3001/;  # адрес до запущенного WebApp, в нашем случае это localhost и порт 3001
    proxy_redirect     off;
    proxy_set_header   Host $host;
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Host $server_name;
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.