Asynchronous library for Yandex Dialogs (Alice) API


Keywords
asyncio, bot, dialogs, yandex, yandex-dialogs
License
MIT
Install
pip install aioAlice==1.2.0

Documentation

Русский | 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;
}