alice-py-ycf


Namealice-py-ycf JSON
Version 0.2.3 PyPI version JSON
download
home_pagehttps://github.com/Aleksandr-Nevs/alice-py-ycf
SummaryModule for easy writing of Yandex Alice skills.
upload_time2024-11-07 11:07:42
maintainerNone
docs_urlNone
authorAleks_Nevs
requires_python>=3.8
licenseNone
keywords alice dialog python yandex
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # alice-py-ycf 

> v 0.2.3
>
> Python >= v 3.8
> 

Фреймворк для разработки навыков Яндекс Алисы на Python

> Адаптирован для работы с Yandex Cloud Function
 
- Минималистичен
- Нет внешних зависимостей
- Достаточно базового уровня Python

----
Пример файла requirements.txt для Yandex Cloud Function
```python
alice-py-ycf==0.2.3
```

Пример возможностей.<br>Файл index.py с функцией handler для Yandex Function Cloud:
```python
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)
```

Обработка не обязательных, но рекомендуемых возможностей:

**обработка запроса "помощь":**
```python
# Данные функция будет вызвана если 
# пользователь сказал "помощь"
# Обработка данного запроса является 
# рекомендованной для всех навыков
@Alice.help()
    def hlp(ctx):
        return {
            "txt": 'вы находитесь в навыке',
            'tts': 'Вы находитесь в навыке'
        }
```

**обработка запроса "что ты умеешь":**
```python
# Данные функция будет вызвана если 
# пользователь сказал "что ты умеешь"
# Обработка данного запроса является 
# рекомендованной для всех навыков
@Alice.whatcyd()
    def hlp(ctx):
        return {
            "txt": 'вы можете управлять навыком..',
            'tts': 'вы можете управлять навыком.'
        }
```
---
**Особенности работы с фреймворком:**

- Значение "tts" не является обязательным и может отсутствовать. В этом случае подставляется значение из "txt".

- Значение "txt" можно передавать массивом:
```python
choice_response = [
    {'txt':'первый вариант'}
    {'txt':'вариант посложней',
    'tts': 'вариант посложн+ей'},
    {'txt':'третий вариант ответа'}
]
@Alice.any()
    def any_f(ctx, data):
        return {
            "txt":choice_response,
        }
```
Из массива будет взят один случайный вариант ответа.

- Если навык не сможет ответить за отведенное время, можно ответить пользователю подготовленным ответом. 
```python
# (...)

# ответ который последует если навык выйдет за пределы timeout`а
@Alice.timeout()
    def any_f(ctx, data):
        return {
            "txt": 'Что-то пошло не так, но мы обязательно разберемся.. Давай попробуем еще раз.',
        }

    # не обязательный параметр timeout = количество секунд, через которые последует подготовленный ответ
    return Alice.run(event, timeout=4)
```

<font color="#67CDFE">ctx</font> - контекст вызова. По ключу "json" хранится полный json запроса. По ключу "data" хранятся данные сессий и данные сцены (комнаты)<br>

```python
ctx = {
    # полный json request`а
    'json': { ... }
    
    # Данные для быстрого доступа. Данные в них будут отправлены response.
    'data': {
        # название сцены. Пустая строка = основная комната
        'scene': '',

        # хранение состояния сессии
        'us': {},

        # хранение состояния между сессиями
        'ws': {},

        # хранение состояние для экземпляра приложения
        'as': {}
    }
}
```








            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Aleksandr-Nevs/alice-py-ycf",
    "name": "alice-py-ycf",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "Alice dialog, Python, Yandex",
    "author": "Aleks_Nevs",
    "author_email": "WebAlek@yandex.ru",
    "download_url": "https://files.pythonhosted.org/packages/75/ef/28238f0f17358d7f2bcc76a53bdbcd567ce4d57245d66ea6566b2638fe25/alice_py_ycf-0.2.3.tar.gz",
    "platform": null,
    "description": "# alice-py-ycf \r\n\r\n> v 0.2.3\r\n>\r\n> Python >= v 3.8\r\n> \r\n\r\n\u0424\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0430\u0432\u044b\u043a\u043e\u0432 \u042f\u043d\u0434\u0435\u043a\u0441 \u0410\u043b\u0438\u0441\u044b \u043d\u0430 Python\r\n\r\n> \u0410\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Yandex Cloud Function\r\n \r\n- \u041c\u0438\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u0435\u043d\r\n- \u041d\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439\r\n- \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f Python\r\n\r\n----\r\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 requirements.txt \u0434\u043b\u044f Yandex Cloud Function\r\n```python\r\nalice-py-ycf==0.2.3\r\n```\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439.<br>\u0424\u0430\u0439\u043b index.py \u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 handler \u0434\u043b\u044f Yandex Function Cloud:\r\n```python\r\ndef handler(event, context):\r\n    # \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\r\n    from alice_py_ycf import Alice, AddScene\r\n\r\n    # \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u044b\r\n    Alice.red_room = AddScene()\r\n\r\n    # \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043d\u0430\u0432\u044b\u043a\u0430 \r\n    @Alice.start()\r\n    def start_f(ctx):\r\n        return {\r\n            \"txt\" : '\u042d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f',\r\n        }\r\n\r\n    # \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u0434\u0435\u0442 \"\u043f\u0440\u0438\u0432\u0435\u0442\" \u0438\u043b\u0438 \"\u0445\u0430\u0439\"\r\n    @Alice.command(['\u043f\u0440\u0438\u0432\u0435\u0442','\u0445\u0430\u0439'])\r\n    def comm_f(ctx):\r\n        return {\r\n            \"txt\":'\u0418 \u0442\u0435\u0431\u0435 \u043f\u0440\u0438\u0432\u0435\u0442!',\r\n        }\r\n\r\n    @Alice.command(['\u0445\u043e\u0447\u0443 \u0432 \u043a\u0440\u0430\u0441\u043d\u0443\u044e \u043a\u043e\u043c\u043d\u0430\u0442\u0443','\u043f\u043e\u0448\u043b\u0438 \u0432 \u043a\u0440\u0430\u0441\u043d\u0443\u044e \u043a\u043e\u043c\u043d\u0430\u0442\u0443'])\r\n    def comm_f(ctx):\r\n        ctx['data']['scene'] = 'red_room'\r\n        return {\r\n            \"txt\": '\u041e\u0442\u043b\u0438\u0447\u043d\u043e! \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u043a\u0440\u0430\u0441\u043d\u0443\u044e \u043a\u043e\u043c\u043d\u0430\u0442\u0443'\r\n        }\r\n\r\n    # \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u0435 \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043d\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a \u0438 \r\n    # \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043d\u0438 \u043f\u043e\u0434 \u043e\u0434\u0438\u043d \u0438\u0437 command( !! )\r\n    @Alice.any()\r\n    def any_f(ctx):\r\n        return {\r\n            \"txt\": '\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430',\r\n            'tts': '\u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043c\u043d\u0435 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430'\r\n        }\r\n\r\n    # \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u0435 (red_room) \u0435\u0441\u043b\u0438 \r\n    # \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043d\u0435\u0439 \u0438 \r\n    # \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043d\u0438 \u043f\u043e\u0434 \u043e\u0434\u0438\u043d \u0438\u0437 command( !! ) \u0438\u0437 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u044b\r\n    @Alice.red_room.any()\r\n    def any_f(ctx):\r\n        return {\r\n            \"txt\": '\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043a\u0440\u0430\u0441\u043d\u0430\u044f \u043a\u043e\u043c\u043d\u0430\u0442\u0430',\r\n            'tts': '\u042d\u0442\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043c\u043d\u0435 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430'\r\n        }\r\n\r\n    # \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u0435 (red_room) \r\n    # \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432 \u043d\u0435\u0439 \u0438 \u043d\u0435 \u043e\u0434\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \r\n    # \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043d\u0438 \u043f\u043e\u0434 \u043e\u0434\u0438\u043d \u0438\u0437 command( !! ) \u0438\u0437 \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u044b\r\n    @Alice.red_room.command(['\u043f\u0440\u0438\u0432\u0435\u0442','\u0445\u0430\u0439'])\r\n    def any_f(ctx):\r\n        return {\r\n            \"txt\": '\u0418 \u0442\u0435\u0431\u0435 \u043f\u0440\u0438\u0432\u0435\u0442 \u0438\u0437 \u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u044b',\r\n            'tts': '\u0418 \u0442\u0435\u0431\u0435 \u043f\u0440\u0438\u0432+\u0435\u0442 \u0438\u0437 \u043a\u0440+\u0430\u0441\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u044b'\r\n        }\r\n    \r\n    # \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u043b\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u0443\u044e \u043a\u043e\u043c\u043d\u0430\u0442\u0443\r\n    @Alice.red_room.command(['\u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u0443','\u043d\u0430\u0437\u0430\u0434'])\r\n    def any_f(ctx):\r\n        ctx['data']['scene'] = ''\r\n        return {\r\n            \"txt\": '\u0418 \u0442\u0435\u0431\u0435 \u043f\u0440\u0438\u0432\u0435\u0442 \u0438\u0437 \u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u044b',\r\n            'tts': '\u0418 \u0442\u0435\u0431\u0435 \u043f\u0440\u0438\u0432+\u0435\u0442 \u0438\u0437 \u043a\u0440+\u0430\u0441\u043d\u043e\u0439 \u043a\u043e\u043c\u043d\u0430\u0442\u044b'\r\n        }\r\n    \r\n    # \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u0430\r\n    @Alice.timeout()\r\n    def any_f(ctx):\r\n        return {\r\n            \"txt\": '\u0427\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a..'\r\n        }\r\n\r\n    # \u0440\u0430\u0431\u043e\u0442\u0430 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\r\n    # \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d timeout 4\u0441\u0435\u043a, \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \r\n    # \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \r\n    # \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. \r\n    # default timeout = 3\u0441\u0435\u043a.\r\n    return Alice.run(event, timeout=4)\r\n```\r\n\r\n\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445, \u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439:\r\n\r\n**\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \"\u043f\u043e\u043c\u043e\u0449\u044c\":**\r\n```python\r\n# \u0414\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0435\u0441\u043b\u0438 \r\n# \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043a\u0430\u0437\u0430\u043b \"\u043f\u043e\u043c\u043e\u0449\u044c\"\r\n# \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \r\n# \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043d\u0430\u0432\u044b\u043a\u043e\u0432\r\n@Alice.help()\r\n    def hlp(ctx):\r\n        return {\r\n            \"txt\": '\u0432\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435\u0441\u044c \u0432 \u043d\u0430\u0432\u044b\u043a\u0435',\r\n            'tts': '\u0412\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435\u0441\u044c \u0432 \u043d\u0430\u0432\u044b\u043a\u0435'\r\n        }\r\n```\r\n\r\n**\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \"\u0447\u0442\u043e \u0442\u044b \u0443\u043c\u0435\u0435\u0448\u044c\":**\r\n```python\r\n# \u0414\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0435\u0441\u043b\u0438 \r\n# \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043a\u0430\u0437\u0430\u043b \"\u0447\u0442\u043e \u0442\u044b \u0443\u043c\u0435\u0435\u0448\u044c\"\r\n# \u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \r\n# \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043d\u0430\u0432\u044b\u043a\u043e\u0432\r\n@Alice.whatcyd()\r\n    def hlp(ctx):\r\n        return {\r\n            \"txt\": '\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u0432\u044b\u043a\u043e\u043c..',\r\n            'tts': '\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u0432\u044b\u043a\u043e\u043c.'\r\n        }\r\n```\r\n---\r\n**\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u043c:**\r\n\r\n- \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \"tts\" \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0438 \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0437 \"txt\".\r\n\r\n- \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \"txt\" \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u043c:\r\n```python\r\nchoice_response = [\r\n    {'txt':'\u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442'}\r\n    {'txt':'\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0439',\r\n    'tts': '\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u043e\u0441\u043b\u043e\u0436\u043d+\u0435\u0439'},\r\n    {'txt':'\u0442\u0440\u0435\u0442\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u0442\u0432\u0435\u0442\u0430'}\r\n]\r\n@Alice.any()\r\n    def any_f(ctx, data):\r\n        return {\r\n            \"txt\":choice_response,\r\n        }\r\n```\r\n\u0418\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432\u0437\u044f\u0442 \u043e\u0434\u0438\u043d \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u0442\u0432\u0435\u0442\u0430.\r\n\r\n- \u0415\u0441\u043b\u0438 \u043d\u0430\u0432\u044b\u043a \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u0437\u0430 \u043e\u0442\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u043c \u043e\u0442\u0432\u0435\u0442\u043e\u043c. \r\n```python\r\n# (...)\r\n\r\n# \u043e\u0442\u0432\u0435\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0435\u0441\u043b\u0438 \u043d\u0430\u0432\u044b\u043a \u0432\u044b\u0439\u0434\u0435\u0442 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b timeout`\u0430\r\n@Alice.timeout()\r\n    def any_f(ctx, data):\r\n        return {\r\n            \"txt\": '\u0427\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a, \u043d\u043e \u043c\u044b \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c\u0441\u044f.. \u0414\u0430\u0432\u0430\u0439 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0449\u0435 \u0440\u0430\u0437.',\r\n        }\r\n\r\n    # \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 timeout = \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u043a\u0443\u043d\u0434, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442\r\n    return Alice.run(event, timeout=4)\r\n```\r\n\r\n<font color=\"#67CDFE\">ctx</font> - \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0432\u044b\u0437\u043e\u0432\u0430. \u041f\u043e \u043a\u043b\u044e\u0447\u0443 \"json\" \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u044b\u0439 json \u0437\u0430\u043f\u0440\u043e\u0441\u0430. \u041f\u043e \u043a\u043b\u044e\u0447\u0443 \"data\" \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0441\u0441\u0438\u0439 \u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u044b (\u043a\u043e\u043c\u043d\u0430\u0442\u044b)<br>\r\n\r\n```python\r\nctx = {\r\n    # \u043f\u043e\u043b\u043d\u044b\u0439 json request`\u0430\r\n    'json': { ... }\r\n    \r\n    # \u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0414\u0430\u043d\u043d\u044b\u0435 \u0432 \u043d\u0438\u0445 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b response.\r\n    'data': {\r\n        # \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0446\u0435\u043d\u044b. \u041f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 = \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043a\u043e\u043c\u043d\u0430\u0442\u0430\r\n        'scene': '',\r\n\r\n        # \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0435\u0441\u0441\u0438\u0438\r\n        'us': {},\r\n\r\n        # \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u0435\u0441\u0441\u0438\u044f\u043c\u0438\r\n        'ws': {},\r\n\r\n        # \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043b\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\r\n        'as': {}\r\n    }\r\n}\r\n```\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Module for easy writing of Yandex Alice skills.",
    "version": "0.2.3",
    "project_urls": {
        "Homepage": "https://github.com/Aleksandr-Nevs/alice-py-ycf"
    },
    "split_keywords": [
        "alice dialog",
        " python",
        " yandex"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4a9fde0d7efd115d23c2a34600547a8b39c384d2a859b57b40f8ab3ed0a7f8ab",
                "md5": "161cdc0f78ca1cccf292352282b6bd52",
                "sha256": "d781ce10dbaa6ec19f1edbf5945b00980c760de89f5d08b3fe03bd42da7ece53"
            },
            "downloads": -1,
            "filename": "alice_py_ycf-0.2.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "161cdc0f78ca1cccf292352282b6bd52",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 5587,
            "upload_time": "2024-11-07T11:07:41",
            "upload_time_iso_8601": "2024-11-07T11:07:41.441802Z",
            "url": "https://files.pythonhosted.org/packages/4a/9f/de0d7efd115d23c2a34600547a8b39c384d2a859b57b40f8ab3ed0a7f8ab/alice_py_ycf-0.2.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "75ef28238f0f17358d7f2bcc76a53bdbcd567ce4d57245d66ea6566b2638fe25",
                "md5": "a77f696648c1d4b8cd528289618aba5d",
                "sha256": "88a443ea266b87f1830d49e2812d80b398e658f46b5e7c2ad3bdeba175427442"
            },
            "downloads": -1,
            "filename": "alice_py_ycf-0.2.3.tar.gz",
            "has_sig": false,
            "md5_digest": "a77f696648c1d4b8cd528289618aba5d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 5371,
            "upload_time": "2024-11-07T11:07:42",
            "upload_time_iso_8601": "2024-11-07T11:07:42.927341Z",
            "url": "https://files.pythonhosted.org/packages/75/ef/28238f0f17358d7f2bcc76a53bdbcd567ce4d57245d66ea6566b2638fe25/alice_py_ycf-0.2.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-07 11:07:42",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Aleksandr-Nevs",
    "github_project": "alice-py-ycf",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "alice-py-ycf"
}
        
Elapsed time: 0.82281s