aioAlice
AsyncIO library for Yandex Alice (Yandex Dialogs)
Why?
- Work with classes, don't bother parsing JSON
- Auto answer to webhook even if you were not fast enough to create answer - there won't be a server error, but you'll get a log
Auto response will not help if you are not using async IO. So consider not to use any long processing synchronous tasks inside handlers
- Handy handlers to match incoming commands
- Finite-State Machine
- Easy images upload, easy answers generation
Installation
# make sure you use virtual env and python 3.6+:
python3.6 -m venv aliceenv
source ./aliceenv/bin/activate
pip install pip -U
pip install setuptools -U
pip install uvloop # uvloop if you want
pip install aioalice -U
# Or install from GitHub:
# pip install git+https://github.com/surik00/aioalice.git -U
# or if you don't have git installed:
# 1. download ZIP
# 2. unarchive and go to dir
# 3. run:
python setup.py install
Quick start
dp = Dispatcher()
@dp.request_handler()
async def handle_all_requests(alice_request):
return alice_request.response('Hello world!')
Cards
JSON serializing
If you want to use a faster json library, install rapidjson or ujson, it will be detected and used automatically
Skills using aioAlice
Testing and deployment
In all examples the next configuration is used:
WEBHOOK_URL_PATH = '/my-alice-webhook/' # webhook endpoint
WEBAPP_HOST = 'localhost' # running on local machine
WEBAPP_PORT = 3001 # we can use any port that is not use by other apps
For testing purposes you can use ngrok, so set webhook to https://1a2b3c4d5e.ngrok.io/my-alice-webhook/ (endpoint has to be WEBHOOK_URL_PATH, because WebApp expects to get updates only there), post has to be WEBAPP_PORT (in this example it is 3001)
For production you can use Nginx, then edit Nginx configuration and add these lines inside the server block:
location /my-alice-webhook/ { # WEBHOOK_URL_PATH
proxy_pass http://127.0.0.1:3001/; # addr to reach WebApp, in this case it is localhost and port is 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;
}
Metadata
Release files for aioAlice 1.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| aioAlice-1.5.1.tar.gz | 19.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aioAlice-1.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 47.8 kB
Release files / aioAlice-1.5.1.tar.gz
| Download URL | aioAlice-1.5.1.tar.gz |
|---|---|
| Size | 19.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cb3317b34044650f88f57c6b6052ea211539c4cdf55978741010905ac7b37955
|
|
BLAKE2b-256 checksum How to use checksums |
e4b6b0840ac6517d67e256cbe5fb2121161cbd7309ef6650ae16a4daf92b5d28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.6.15
|
Release files / aioAlice-1.5.1-py3-none-any.whl
| Download URL | aioAlice-1.5.1-py3-none-any.whl |
|---|---|
| Size | 28.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0da8e114bf7b43f892f0a0d0aa3dd4acaf0f73ae3b5cef60f933515053e6c688
|
|
BLAKE2b-256 checksum How to use checksums |
c168dddca1079d569fa12f329e32ed3b4390f57b2d634dd66120900e1fac2132
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.64.0 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.4 CPython/3.6.15
|
Security for aioAlice 1.5.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.