Module for easy writing of Yandex Alice skills.
Project description
alice-py-ycf
Alice-Python-YandexCloudFunction
Фреймворк для разработки навыков Яндекс Алисы на Python
Адаптирован для работы с Yandex Cloud Function
- Минималистичен
- Нет внешних зависимостей
- Достаточно базового уровня Python
Файл 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, data):
return {
"txt" : 'Это первый запуск приложения',
}
# выполняется в основной комнате только если придет "привет" или "хай"
@Alice.command(['привет','хай'])
def comm_f(ctx, data):
return {
"txt":'И тебе привет!',
}
@Alice.command(['хочу в красную комнату','пошли в красную комнату'])
def comm_f(ctx, data):
data['scene'] = 'red_room'
return {
"txt": 'Отлично! Переходим в красную комнату',
'data': data
}
# выполняется в основной комнате если это не первый запуск и
# не подходит ни под один из command( !! )
@Alice.any()
def any_f(ctx, data):
return {
"txt": 'Неизвестная команда',
'tts': 'Эта команда мне неизв+естна'
}
# выполняется в дополнительной комнате (red_room) если
# пользователь находится в ней и
# не подходит ни под один из command( !! ) из этой комнаты
@Alice.red_room.any()
def any_f(ctx, data):
return {
"txt": 'Неизвестная команда в красной комнате',
'tts': 'Эта команда неизв+естна в красной комнате',
'data':data
}
# выполняется в только в дополнительной комнате (red_room)
# если пользователь в ней и не одна команда
# не подходит ни под один из command( !! ) из этой комнаты
@Alice.red_room.command(['привет','хай'])
def any_f(ctx, data):
return {
"txt": 'И тебе привет из красной комнаты',
'tts': 'И тебе прив+ет из кр+асной комнаты',
'data':data
}
# команда для возврата в основную комнату
@Alice.red_room.command(['обратно в основную комнату','назад'])
def any_f(ctx, data):
data['scene'] = ''
return {
"txt": 'И тебе привет из красной комнаты',
'tts': 'И тебе прив+ет из кр+асной комнаты',
'data': data
}
# выполняется за пределами установленного таймаута
@Alice.timeout()
def any_f(ctx, data):
return {
"txt": 'Что-то пошло не так..',
'data':data
}
# работа фреймворка
# установлен timeout 4сек, за пределами которого
# будет отправлено
# подготовленное сообщение.
# default timeout = 3сек.
return Alice.run(event, timeout=4)
Особенности работы с фреймворком:
-
В любом ответе, значение "txt" обязателено:
return {
"txt": 'текст ответа',
( ... ) -
Значение "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.
data - хранит данные сессий и данные сцены (комнат)
data = {
# название сцены. Пустая строка = основная комната
'scene': '',
# хранение состояния сессии
'us': {},
# хранение состояния между сессиями
'ws': {},
# хранение состояние для экземпляра приложения
'as': {}
}
Изменения в data добавляются в отправляемый json если это явно добавлено в return.
Из всех комнат, кроме основной, передача data является обязательной.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file alice_py_ycf-0.1.tar.gz
.
File metadata
- Download URL: alice_py_ycf-0.1.tar.gz
- Upload date:
- Size: 4.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 901560bf342023ab514fd0a3dad5abdf47d6de1855187e99ff8c9b33b10113dc |
|
MD5 | 89499f8599579a785c36fa0c6560ddcf |
|
BLAKE2b-256 | ed4ffd67ef0ae5e77ccf1c57199d49962d79d684becc38ee9bf2c6109aaa8a91 |
File details
Details for the file alice_py_ycf-0.1-py3-none-any.whl
.
File metadata
- Download URL: alice_py_ycf-0.1-py3-none-any.whl
- Upload date:
- Size: 4.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d43d0c1a2fcce86932b6895fa01e263ca9e9de09106d5147a65fb1ce933ff1f1 |
|
MD5 | e132c3d611b09bf8f915d3b876658145 |
|
BLAKE2b-256 | dcd09e70659a8ddada522bea487e9852dca7bb0cd6366f97b3308ef8d772ca18 |