alice-py-ycf
v 0.2.3
Python >= v 3.8
Фреймворк для разработки навыков Яндекс Алисы на Python
Адаптирован для работы с Yandex Cloud Function
- Минималистичен
- Нет внешних зависимостей
- Достаточно базового уровня Python
Пример файла requirements.txt для Yandex Cloud Function
alice-py-ycf==0.2.3
Пример возможностей.
Файл index.py с функцией handler для Yandex Function Cloud:
def handler(event, context):
# подключение только базового управления
from alice_py_ycf import Alice, AddScene
# создание еще одной сцены
Alice.red_room = AddScene()
# выполняется при первом запуске навыка
@Alice.start()
def start_f(ctx):
return {
"txt" : 'Это первый запуск приложения',
}
# выполняется в основной комнате только если придет "привет" или "хай"
@Alice.command(['привет','хай'])
def comm_f(ctx):
return {
"txt":'И тебе привет!',
}
@Alice.command(['хочу в красную комнату','пошли в красную комнату'])
def comm_f(ctx):
ctx['data']['scene'] = 'red_room'
return {
"txt": 'Отлично! Переходим в красную комнату'
}
# выполняется в основной комнате если это не первый запуск и
# не подходит ни под один из command( !! )
@Alice.any()
def any_f(ctx):
return {
"txt": 'Неизвестная команда',
'tts': 'Эта команда мне неизвестна'
}
# выполняется в дополнительной комнате (red_room) если
# пользователь находится в ней и
# не подходит ни под один из command( !! ) из этой комнаты
@Alice.red_room.any()
def any_f(ctx):
return {
"txt": 'Неизвестная команда красная комната',
'tts': 'Эта команда мне неизвестна'
}
# выполняется в только в дополнительной комнате (red_room)
# если пользователь в ней и не одна команда
# не подходит ни под один из command( !! ) из этой комнаты
@Alice.red_room.command(['привет','хай'])
def any_f(ctx):
return {
"txt": 'И тебе привет из красной комнаты',
'tts': 'И тебе прив+ет из кр+асной комнаты'
}
# команда для возврата в основную комнату
@Alice.red_room.command(['обратно в основной комнату','назад'])
def any_f(ctx):
ctx['data']['scene'] = ''
return {
"txt": 'И тебе привет из красной комнаты',
'tts': 'И тебе прив+ет из кр+асной комнаты'
}
# выполняется за пределами установленного таймаута
@Alice.timeout()
def any_f(ctx):
return {
"txt": 'Что-то пошло не так..'
}
# работа фреймворка
# установлен timeout 4сек, за пределами которого
# будет отправлено
# подготовленное сообщение.
# default timeout = 3сек.
return Alice.run(event, timeout=4)
Обработка не обязательных, но рекомендуемых возможностей:
обработка запроса "помощь":
# Данные функция будет вызвана если
# пользователь сказал "помощь"
# Обработка данного запроса является
# рекомендованной для всех навыков
@Alice.help()
def hlp(ctx):
return {
"txt": 'вы находитесь в навыке',
'tts': 'Вы находитесь в навыке'
}
обработка запроса "что ты умеешь":
# Данные функция будет вызвана если
# пользователь сказал "что ты умеешь"
# Обработка данного запроса является
# рекомендованной для всех навыков
@Alice.whatcyd()
def hlp(ctx):
return {
"txt": 'вы можете управлять навыком..',
'tts': 'вы можете управлять навыком.'
}
Особенности работы с фреймворком:
-
Значение "tts" не является обязательным и может отсутствовать. В этом случае подставляется значение из "txt".
-
Значение "txt" можно передавать массивом:
choice_response = [
{'txt':'первый вариант'}
{'txt':'вариант посложней',
'tts': 'вариант посложн+ей'},
{'txt':'третий вариант ответа'}
]
@Alice.any()
def any_f(ctx, data):
return {
"txt":choice_response,
}
Из массива будет взят один случайный вариант ответа.
- Если навык не сможет ответить за отведенное время, можно ответить пользователю подготовленным ответом.
# (...)
# ответ который последует если навык выйдет за пределы timeout`а
@Alice.timeout()
def any_f(ctx, data):
return {
"txt": 'Что-то пошло не так, но мы обязательно разберемся.. Давай попробуем еще раз.',
}
# не обязательный параметр timeout = количество секунд, через которые последует подготовленный ответ
return Alice.run(event, timeout=4)
ctx - контекст вызова. По ключу "json" хранится полный json запроса. По ключу "data" хранятся данные сессий и данные сцены (комнаты)
ctx = {
# полный json request`а
'json': { ... }
# Данные для быстрого доступа. Данные в них будут отправлены response.
'data': {
# название сцены. Пустая строка = основная комната
'scene': '',
# хранение состояния сессии
'us': {},
# хранение состояния между сессиями
'ws': {},
# хранение состояние для экземпляра приложения
'as': {}
}
}
Release files for alice-py-ycf 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| alice_py_ycf-0.2.3.tar.gz | 5.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| alice_py_ycf-0.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.0 kB
Release files / alice_py_ycf-0.2.3.tar.gz
| Download URL | alice_py_ycf-0.2.3.tar.gz |
|---|---|
| Size | 5.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
88a443ea266b87f1830d49e2812d80b398e658f46b5e7c2ad3bdeba175427442
|
|
BLAKE2b-256 checksum How to use checksums |
75ef28238f0f17358d7f2bcc76a53bdbcd567ce4d57245d66ea6566b2638fe25
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.0
|
Release files / alice_py_ycf-0.2.3-py3-none-any.whl
| Download URL | alice_py_ycf-0.2.3-py3-none-any.whl |
|---|---|
| Size | 5.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d781ce10dbaa6ec19f1edbf5945b00980c760de89f5d08b3fe03bd42da7ece53
|
|
BLAKE2b-256 checksum How to use checksums |
4a9fde0d7efd115d23c2a34600547a8b39c384d2a859b57b40f8ab3ed0a7f8ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.0
|