Викиверситет ruwikiversity https://ru.wikiversity.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0 MediaWiki 1.46.0-wmf.24 first-letter Медиа Служебная Обсуждение Участник Обсуждение участника Викиверситет Обсуждение Викиверситета Файл Обсуждение файла MediaWiki Обсуждение MediaWiki Шаблон Обсуждение шаблона Справка Обсуждение справки Категория Обсуждение категории Портал Обсуждение портала Факультет Обсуждения факультета TimedText TimedText talk Модуль Обсуждение модуля Event Event talk Навыки Алисы 0 29080 166018 165933 2026-04-23T11:33:30Z SemyonDudenkov 36586 /* Практический модуль: интерактивный квест (Petrozavodsk Quiz) */ 166018 wikitext text/x-wiki {{Курс |Факультет = Информационные технологии |Кафедра = [[Факультет:Компьютерные технологии/Программирование|Программирование]], [[Факультет:Компьютерные технологии/Веб-технологии|Веб-технологии]] |К курсу = |После курса = |Преподаватель = [[Участник:Владимир Плеханов|Плеханов Владимир]] ([[Обсуждение участника:Владимир Плеханов|обсуждение]]) |Скрыть учеников = да |Ссылка = [https://ru.wikiversity.org/?curid=29080 https://ru.wikiversity.org/?curid=29080] }} [[Файл:Alisa Yandex.svg|мини|Иконка Алисы - виртуального голосового помощника, созданного компанией Яндекс.]] [[Файл:Zinina Anna Robot 2017.jpg|мини|Доклад о роботе, умеющем дополнять речь жестами, указывающими на его эмоциональное состояние // [[n:Прошла конференция «Корпусная линвистика ‒ 2017» в Санкт-Петербурге|«Корпусная линвистика ‒ 2017»]]]] '''Навыки Алисы''' — это курс, обучающий созданию навыков для Алисы. Алиса - это виртуальный голосовой помощник, созданный компанией Яндекс. Навык - это ... Курс предназначен для студентов и преподавателей технических вузов, а также для школьников старших классов, углублённо изучающих информатику. В этом курсе вы познакомитесь с языками ???, ???, с конструктором Aimylogic. За основу курса взяты уроки, опубликованные в [https://wiki.yaboard.com/w/%D0%A8%D0%BA%D0%BE%D0%BB%D0%B0_%D0%90%D0%BB%D0%B8%D1%81%D1%8B школе Алисы]. Этот материал дополняется ссылками на литературу, документацией и исходным кодом. == Лекции == # [[/Выбор навыка|Выбор навыка]] # [[/Приветственная фраза|Приветственная фраза]] # [[/Как задать тон общения в навыке|Как задать тон общения в навыке]] # [[/Какую информацию добавить в приветственную фразу|Какую информацию добавить в приветственную фразу]] # [[/Как направлять пользователей в навыке через вопросы|Как направлять пользователей в навыке через вопросы]] # [[/Как оформить логотип|Как оформить логотип (аватарку для каталога Навыков)]] # [[/Как выбрать правильный компонент при дизайне навыка|Как выбрать правильный компонент при дизайне навыка]] # [[/Как развернуть навык в Яндекс.Облаке|Как развернуть навык в Яндекс.Облаке]] # [[/Как изменить поведение тестовых навыков в Яндекс.Облаке|Как изменить поведение тестовых навыков в Яндекс.Облаке]] # [[/Как правильно заполнять настройки навыка в интерфейсе Яндекс.Диалогов|Как правильно заполнять настройки навыка в интерфейсе Яндекс.Диалогов]] # [[/Как пройти модерацию навыка для Алисы|Как пройти модерацию навыка для Алисы]] # [[/Как создавать голосовой пользовательский интерфейс|Как создавать голосовой пользовательский интерфейс]] # [[/Как связать сценарий, контент и код для навыка в единое целое|Как связать сценарий, контент и код для навыка в единое целое]] # [[/Как правильно работать с оценками и отзывами на навык|Как правильно работать с оценками и отзывами на навык]] # [[/Как создать навык без программирования|Как создать навык без программирования]] # [[/Как использовать конструктор для создания навыков Алисы Aimylogic|Как использовать конструктор для создания навыков Алисы Aimylogic]] # [[/Как обрабатывать логи в навыках|Как обрабатывать логи в навыках]] # [[/Как использовать конструктор Dialogflower для создания навыка|Как использовать конструктор Dialogflower для создания навыка]] # [[/Как улучшить ранжирование вашего навыка|Как улучшить ранжирование вашего навыка]] # [[/Как подготовить изображение для навыка|Как подготовить изображение для навыка]] # [[/Как и где хранить данные, введённые пользователем|Как и где хранить данные, введённые пользователем]] # [[/Как загрузить картинку в навык с помощью API|Как загрузить картинку в навык с помощью API]] # [[/Как правильно настроить отображение картинок|Как правильно настроить отображение картинок]] # [[/Как сделать навык с естественной речью: теория и практика на реальном примере|Как сделать навык с естественной речью: теория и практика на реальном примере]] # [[/Как работать с аналитикой|Как работать с аналитикой]] # [[/Как выиграть Премию Алисы|Как выиграть Премию Алисы]] # [[/Как писать текст для описания навыков|Как писать текст для описания навыков]] # [[/Как поднять целеориентированного бота для Алисы из библиотеки DeepPavlov|Как поднять целеориентированного бота для Алисы из библиотеки DeepPavlov]] # [[/Кэширование в навыках|Кэширование в навыках]] # [[/Как научить Алису петь|Как научить Алису петь]] # [[/Итоги 2019 года|Итоги 2019 года]] == Практический модуль: интерактивный квест (Petrozavodsk Quiz) == Дополнительный учебный модуль по разработке навыка Алисы на Python: проектирование диалога, webhook-интеграция, тестирование и развёртывание. * [[Навыки Алисы/Разработка интерактивного квеста|Разработка интерактивного квеста]] * [[Навыки Алисы/Установка и локальный запуск|Установка и локальный запуск]] * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс.Диалогами]] * [[Навыки Алисы/Yandex Cloud Functions|Развёртывание в Yandex Cloud Functions]] * [[Навыки Алисы/Архитектура навыка |Архитектура навыка]] * Репозиторий проекта: [https://github.com/SaKuRa5353/alice-petrozavodsk-game alice-petrozavodsk-game] * Навык в каталоге Яндекс.Диалогов: [https://dialogs.yandex.ru/store/skills/7edd79b2-petrozavodsk-quiz Petrozavodsk Quiz] == Литература == * == Ссылки == * [https://dialogs.yandex.ru/store Магазин Навыков] * [https://yandex.ru/alice/support/assistant/skills.html Документация по Навыкам] * [https://yandex.cloud/ru/docs/functions/tutorials/alice-skill Создание навыка Алисы] * [https://habr.com/ru/articles/565834/ Лучшие навыки Алисы и советы от их разработчиков] // Habr, 2021 [[Категория:Программирование]] [[Категория:Веб-технологии]] cb503ij7pr9a7736i0u5px9uksh96xb Навыки Алисы/Разработка интерактивного квеста 0 30212 165998 165976 2026-04-22T13:37:25Z SemyonDudenkov 36586 165998 wikitext text/x-wiki == Навыки Алисы/Разработка интерактивного квеста == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает учебный навык «Петрозаводск Quiz» (Petrozavodsk Quiz): голосовую викторину о достопримечательностях Петрозаводска. == Подстраницы == * [[Навыки Алисы/Разработка интерактивного квеста]] — цель проекта, функциональность и архитектура. * [[Навыки Алисы/Архитектура навыка ]] — схема архитектуры для согласования с преподавателем. * [[Навыки Алисы/Установка и локальный запуск]] — запуск проекта и тестирование. * [[Навыки Алисы/Интеграция с Яндекс Диалогами]] — интеграция с Яндекс.Диалогами и формат JSON-обмена. * [[Навыки Алисы/Yandex Cloud Functions]] — развёртывание и публикация webhook. == Цель навыка == Навык должен: * задавать пользователю вопросы о достопримечательностях; * проверять правильность ответа; * давать подсказки по шагам (текстовая и визуальная); * подсчитывать итоговый результат. == Пользовательский сценарий == 1. Пользователь запускает навык — он начинает работу без дополнительных команд. 2. Навык сразу задаёт первый вопрос из 5 вопросов о достопримечательностях. 3. После ошибки пользователя даётся первая подсказка. 4. После второй ошибки показывается вторая подсказка (изображение, если доступно). 5. После ответа на все 5 вопросов выводится счёт и предложение сыграть снова. == Компоненты проекта == ; '''Game Engine (game_engine.py)''' : Игровая логика, команды, проверка ответов, подсказки, подсчёт результата. ; '''Landmarks Data (landmarks.py)''' : База данных из достопримечательностей Петрозаводска с подсказками и источниками. ; '''Webhook Handler (alice_handler.py)''' : Принимает запросы от Яндекс.Алисы и формирует ответ навыка. ; '''Cloud Function Entry Point (cloud_function.py)''' : Точка входа для развёртывания в Yandex Cloud Functions. == Архитектура == Краткая структура: * Алиса/Яндекс.Диалоги -> webhook; * <code>cloud_function.py</code> -> <code>alice_handler.py</code>; * <code>alice_handler.py</code> -> <code>game_engine.py</code> + <code>landmarks.py</code>; * состояние игры передаётся через <code>session_state</code>. == Иллюстрации == [[File:StartQwiz.png|thumb|Скриншот 1: начало игры с приветствием навыка и первым вопросом о достопримечательности.]] [[File:Petrozavodsk-Quiz-dialog-hints2.png|thumb|Скриншот 2: текстовая подсказка и визуальная подсказка с изображением достопримечательности.]] == Темы, охватываемые в проекте == Проект демонстрирует следующие практические навыки и подходы: * Проектирование диалогового интерфейса для голосовых помощников; * Разбиение приложения на модули (game engine, handler, data layer); * Сохранение и передача состояния диалога между HTTP-запросами; * Реализация многоуровневой системы подсказок с ограничением попыток; * Работа с предметной областью: структурирование данных, алиасы, обработка синонимов; * Защита от ложных совпадений ответов (например, предотвращение путаницы между памятником и площадью); * Написание и запуск unit-тестов для проверки корректности логики; * Регрессионное тестирование при внесении изменений в код; * Развёртывание webhook-навыка в облачной среде (Yandex Cloud Functions); * Подготовка документации и примеров кода для учебного курса. == Мини-викторина == <quiz display=simple> { Для чего навыку нужна передача состояния диалога через <code>session_state</code>? | type="()" } - Чтобы хранить только настройки интерфейса пользователя - Чтобы автоматически публиковать навык в каталоге + Чтобы сохранять прогресс игры между запросами пользователя { Почему для учебного проекта выбран webhook-подход? | type="()" } - Потому что webhook работает только в локальном CLI - Потому что webhook не требует JSON-формата + Потому что платформа Яндекс.Диалоги отправляет запросы на внешний HTTP-адрес навыка { Какую практическую пользу дают автотесты при доработке навыка? | type="()" } - Нужны только для ускорения загрузки изображений - Полезны только перед публикацией в каталог + Позволяют быстро проверить, что изменения не сломали существующую логику </quiz> == Исходный код == * GitHub-репозиторий проекта: [https://github.com/SaKuRa5353/alice-petrozavodsk-game alice-petrozavodsk-game]. == Публичная версия навыка == * Ссылка на опубликованный навык: [https://dialogs.yandex.ru/store/skills/7edd79b2-petrozavodsk-quiz Петрозаводск Quiz в каталоге навыков Алисы]. tdywbd6scyohfrnlgiqswsibkbybhun 166000 165998 2026-04-22T13:50:12Z SemyonDudenkov 36586 166000 wikitext text/x-wiki == Навыки Алисы/Разработка интерактивного квеста == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает учебный навык «Petrozavodsk Quiz»: голосовую викторину о достопримечательностях Петрозаводска. == Цель навыка == Навык должен: * задавать пользователю вопросы о достопримечательностях; * проверять правильность ответа; * давать подсказки по шагам (текстовая и визуальная); * подсчитывать итоговый результат. == Пользовательский сценарий == 1. Пользователь запускает навык — он начинает работу без дополнительных команд. 2. Навык сразу задаёт первый вопрос из 5 вопросов о достопримечательностях. 3. После ошибки пользователя даётся первая подсказка. 4. После второй ошибки показывается вторая подсказка (изображение, если доступно). 5. После ответа на все 5 вопросов выводится счёт и предложение сыграть снова. [[File:StartQwiz.png|thumb|Скриншот 1: начало игры с приветствием навыка и первым вопросом о достопримечательности.]] [[File:Petrozavodsk-Quiz-dialog-hints2.png|thumb|Скриншот 2: текстовая подсказка и визуальная подсказка с изображением достопримечательности.]] == Компоненты проекта == ; '''Game Engine (game_engine.py)''' : Игровая логика, команды, проверка ответов, подсказки, подсчёт результата. ; '''Landmarks Data (landmarks.py)''' : База данных из достопримечательностей Петрозаводска с подсказками и источниками. ; '''Webhook Handler (alice_handler.py)''' : Принимает запросы от Яндекс.Алисы и формирует ответ навыка. ; '''Cloud Function Entry Point (cloud_function.py)''' : Точка входа для развёртывания в Yandex Cloud Functions. == Архитектура == Краткая структура: * Алиса/Яндекс.Диалоги -> webhook; * <code>cloud_function.py</code> -> <code>alice_handler.py</code>; * <code>alice_handler.py</code> -> <code>game_engine.py</code> + <code>landmarks.py</code>; * состояние игры передаётся через <code>session_state</code>. == Зафиксированная проблема отображения изображения == На втором скриншоте видно дефект отображения визуальной подсказки: в карточке отображается только нижняя часть памятника Петру I, верхняя часть обрезается. '''Предполагаемая причина''': изображение показывается в карточке типа <code>BigImage</code> с фиксированным соотношением сторон и автоматической обрезкой под контейнер клиента Алисы. '''Возможные решения''': * подготовить отдельную версию изображения для карточки (кадрировать заранее так, чтобы ключевой объект был в центре); * использовать альтернативный <code>image_id</code> с более подходящей композицией (без важного объекта у верхней границы); * в тексте второй подсказки дополнительно дать пользователю ссылку на полное изображение в Викискладе/источнике. '''Мнение''': наиболее практичный вариант для учебного проекта — заменить изображение подсказки на заранее кадрированную версию под формат карточки, так как это не требует изменения логики игры и даёт предсказуемый результат в интерфейсе. == Темы, охватываемые в проекте == Проект демонстрирует следующие практические навыки и подходы: * Проектирование диалогового интерфейса для голосовых помощников; * Разбиение приложения на модули (game engine, handler, data layer); * Сохранение и передача состояния диалога между HTTP-запросами; * Реализация многоуровневой системы подсказок с ограничением попыток; * Работа с предметной областью: структурирование данных, алиасы, обработка синонимов; * Защита от ложных совпадений ответов (например, предотвращение путаницы между памятником и площадью); * Написание и запуск unit-тестов для проверки корректности логики; * Регрессионное тестирование при внесении изменений в код; * Развёртывание webhook-навыка в облачной среде (Yandex Cloud Functions); * Подготовка документации и примеров кода для учебного курса. == Мини-викторина == <quiz display=simple> { Для чего навыку нужна передача состояния диалога через <code>session_state</code>? | type="()" } - Чтобы хранить только настройки интерфейса пользователя - Чтобы автоматически публиковать навык в каталоге + Чтобы сохранять прогресс игры между запросами пользователя { Почему для учебного проекта выбран webhook-подход? | type="()" } - Потому что webhook работает только в локальном CLI - Потому что webhook не требует JSON-формата + Потому что платформа Яндекс.Диалоги отправляет запросы на внешний HTTP-адрес навыка { Какую практическую пользу дают автотесты при доработке навыка? | type="()" } - Нужны только для ускорения загрузки изображений - Полезны только перед публикацией в каталог + Позволяют быстро проверить, что изменения не сломали существующую логику </quiz> i3i9u4su7k1mmsbntz3i8a4tu996ng2 166001 166000 2026-04-22T13:50:47Z SemyonDudenkov 36586 /* Пользовательский сценарий */ 166001 wikitext text/x-wiki == Навыки Алисы/Разработка интерактивного квеста == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает учебный навык «Petrozavodsk Quiz»: голосовую викторину о достопримечательностях Петрозаводска. == Цель навыка == Навык должен: * задавать пользователю вопросы о достопримечательностях; * проверять правильность ответа; * давать подсказки по шагам (текстовая и визуальная); * подсчитывать итоговый результат. == Пользовательский сценарий == 1. Пользователь запускает навык — он начинает работу без дополнительных команд. 2. Навык сразу задаёт первый вопрос из 5 вопросов о достопримечательностях. 3. После ошибки пользователя даётся первая подсказка. 4. После второй ошибки показывается вторая подсказка (изображение, если доступно). 5. После ответа на все 5 вопросов выводится счёт и предложение сыграть снова. [[File:StartQwiz.png|thumb|Скриншот 1: начало игры с приветствием навыка и первым вопросом о достопримечательности.]] [[File:Petrozavodsk-Quiz-dialog-hints2.png|thumb|Скриншот 2: текстовая подсказка и визуальная подсказка с изображением достопримечательности.]] == Компоненты проекта == ; '''Game Engine (game_engine.py)''' : Игровая логика, команды, проверка ответов, подсказки, подсчёт результата. ; '''Landmarks Data (landmarks.py)''' : База данных из достопримечательностей Петрозаводска с подсказками и источниками. ; '''Webhook Handler (alice_handler.py)''' : Принимает запросы от Яндекс.Алисы и формирует ответ навыка. ; '''Cloud Function Entry Point (cloud_function.py)''' : Точка входа для развёртывания в Yandex Cloud Functions. == Архитектура == Краткая структура: * Алиса/Яндекс.Диалоги -> webhook; * <code>cloud_function.py</code> -> <code>alice_handler.py</code>; * <code>alice_handler.py</code> -> <code>game_engine.py</code> + <code>landmarks.py</code>; * состояние игры передаётся через <code>session_state</code>. == Зафиксированная проблема отображения изображения == На втором скриншоте видно дефект отображения визуальной подсказки: в карточке отображается только нижняя часть памятника Петру I, верхняя часть обрезается. '''Предполагаемая причина''': изображение показывается в карточке типа <code>BigImage</code> с фиксированным соотношением сторон и автоматической обрезкой под контейнер клиента Алисы. '''Возможные решения''': * подготовить отдельную версию изображения для карточки (кадрировать заранее так, чтобы ключевой объект был в центре); * использовать альтернативный <code>image_id</code> с более подходящей композицией (без важного объекта у верхней границы); * в тексте второй подсказки дополнительно дать пользователю ссылку на полное изображение в Викискладе/источнике. '''Мнение''': наиболее практичный вариант для учебного проекта — заменить изображение подсказки на заранее кадрированную версию под формат карточки, так как это не требует изменения логики игры и даёт предсказуемый результат в интерфейсе. == Темы, охватываемые в проекте == Проект демонстрирует следующие практические навыки и подходы: * Проектирование диалогового интерфейса для голосовых помощников; * Разбиение приложения на модули (game engine, handler, data layer); * Сохранение и передача состояния диалога между HTTP-запросами; * Реализация многоуровневой системы подсказок с ограничением попыток; * Работа с предметной областью: структурирование данных, алиасы, обработка синонимов; * Защита от ложных совпадений ответов (например, предотвращение путаницы между памятником и площадью); * Написание и запуск unit-тестов для проверки корректности логики; * Регрессионное тестирование при внесении изменений в код; * Развёртывание webhook-навыка в облачной среде (Yandex Cloud Functions); * Подготовка документации и примеров кода для учебного курса. == Мини-викторина == <quiz display=simple> { Для чего навыку нужна передача состояния диалога через <code>session_state</code>? | type="()" } - Чтобы хранить только настройки интерфейса пользователя - Чтобы автоматически публиковать навык в каталоге + Чтобы сохранять прогресс игры между запросами пользователя { Почему для учебного проекта выбран webhook-подход? | type="()" } - Потому что webhook работает только в локальном CLI - Потому что webhook не требует JSON-формата + Потому что платформа Яндекс.Диалоги отправляет запросы на внешний HTTP-адрес навыка { Какую практическую пользу дают автотесты при доработке навыка? | type="()" } - Нужны только для ускорения загрузки изображений - Полезны только перед публикацией в каталог + Позволяют быстро проверить, что изменения не сломали существующую логику </quiz> 0n10ewzfqq5u2wvwngz8lyqjs5si9vg 166002 166001 2026-04-22T13:54:15Z SemyonDudenkov 36586 /* Зафиксированная проблема отображения изображения */ 166002 wikitext text/x-wiki == Навыки Алисы/Разработка интерактивного квеста == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает учебный навык «Petrozavodsk Quiz»: голосовую викторину о достопримечательностях Петрозаводска. == Цель навыка == Навык должен: * задавать пользователю вопросы о достопримечательностях; * проверять правильность ответа; * давать подсказки по шагам (текстовая и визуальная); * подсчитывать итоговый результат. == Пользовательский сценарий == 1. Пользователь запускает навык — он начинает работу без дополнительных команд. 2. Навык сразу задаёт первый вопрос из 5 вопросов о достопримечательностях. 3. После ошибки пользователя даётся первая подсказка. 4. После второй ошибки показывается вторая подсказка (изображение, если доступно). 5. После ответа на все 5 вопросов выводится счёт и предложение сыграть снова. [[File:StartQwiz.png|thumb|Скриншот 1: начало игры с приветствием навыка и первым вопросом о достопримечательности.]] [[File:Petrozavodsk-Quiz-dialog-hints2.png|thumb|Скриншот 2: текстовая подсказка и визуальная подсказка с изображением достопримечательности.]] == Компоненты проекта == ; '''Game Engine (game_engine.py)''' : Игровая логика, команды, проверка ответов, подсказки, подсчёт результата. ; '''Landmarks Data (landmarks.py)''' : База данных из достопримечательностей Петрозаводска с подсказками и источниками. ; '''Webhook Handler (alice_handler.py)''' : Принимает запросы от Яндекс.Алисы и формирует ответ навыка. ; '''Cloud Function Entry Point (cloud_function.py)''' : Точка входа для развёртывания в Yandex Cloud Functions. == Архитектура == Краткая структура: * Алиса/Яндекс.Диалоги -> webhook; * <code>cloud_function.py</code> -> <code>alice_handler.py</code>; * <code>alice_handler.py</code> -> <code>game_engine.py</code> + <code>landmarks.py</code>; * состояние игры передаётся через <code>session_state</code>. == Зафиксированная проблема отображения изображения == В интерфейсе навыка наблюдается дефект отображения визуальной подсказки во второй подсказке (карточка <code>BigImage</code> с изображением памятника Петру I): в карточке отображается только нижняя часть памятника, верхняя часть обрезается. '''Предполагаемая причина''': изображение показывается в карточке типа <code>BigImage</code> с фиксированным соотношением сторон и автоматической обрезкой под контейнер клиента Алисы. '''Возможные решения''': * подготовить отдельную версию изображения для карточки (кадрировать заранее так, чтобы ключевой объект был в центре); * использовать альтернативный <code>image_id</code> с более подходящей композицией (без важного объекта у верхней границы); * в тексте второй подсказки дополнительно дать пользователю ссылку на полное изображение в Викискладе/источнике. '''Мнение''': наиболее практичный вариант для учебного проекта — заменить изображение подсказки на заранее кадрированную версию под формат карточки, так как это не требует изменения логики игры и даёт предсказуемый результат в интерфейсе. == Темы, охватываемые в проекте == Проект демонстрирует следующие практические навыки и подходы: * Проектирование диалогового интерфейса для голосовых помощников; * Разбиение приложения на модули (game engine, handler, data layer); * Сохранение и передача состояния диалога между HTTP-запросами; * Реализация многоуровневой системы подсказок с ограничением попыток; * Работа с предметной областью: структурирование данных, алиасы, обработка синонимов; * Защита от ложных совпадений ответов (например, предотвращение путаницы между памятником и площадью); * Написание и запуск unit-тестов для проверки корректности логики; * Регрессионное тестирование при внесении изменений в код; * Развёртывание webhook-навыка в облачной среде (Yandex Cloud Functions); * Подготовка документации и примеров кода для учебного курса. == Мини-викторина == <quiz display=simple> { Для чего навыку нужна передача состояния диалога через <code>session_state</code>? | type="()" } - Чтобы хранить только настройки интерфейса пользователя - Чтобы автоматически публиковать навык в каталоге + Чтобы сохранять прогресс игры между запросами пользователя { Почему для учебного проекта выбран webhook-подход? | type="()" } - Потому что webhook работает только в локальном CLI - Потому что webhook не требует JSON-формата + Потому что платформа Яндекс.Диалоги отправляет запросы на внешний HTTP-адрес навыка { Какую практическую пользу дают автотесты при доработке навыка? | type="()" } - Нужны только для ускорения загрузки изображений - Полезны только перед публикацией в каталог + Позволяют быстро проверить, что изменения не сломали существующую логику </quiz> dzgkxzz37uioadgbheuq84gbtaoctvv 166005 166002 2026-04-23T09:04:08Z SemyonDudenkov 36586 166005 wikitext text/x-wiki == Навыки Алисы/Разработка интерактивного квеста == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает учебный навык «Петрозаводск Quiz»: голосовую викторину о достопримечательностях Петрозаводска. == Цель навыка == Навык должен: * задавать пользователю вопросы о достопримечательностях; * проверять правильность ответа; * давать подсказки по шагам (текстовая и визуальная); * подсчитывать итоговый результат. == Пользовательский сценарий == # Пользователь запускает навык — он начинает работу без дополнительных команд. # Навык сразу задаёт первый вопрос из 5 вопросов о достопримечательностях. # После ошибки пользователя даётся первая подсказка. # После второй ошибки показывается вторая подсказка (изображение, если доступно). # После ответа на все 5 вопросов выводится счёт и предложение сыграть снова. [[File:StartQwiz.png|thumb|Скриншот 1: начало игры с приветствием навыка и первым вопросом о достопримечательности.]] [[File:Petrozavodsk-Quiz-dialog-hints2.png|thumb|Скриншот 2: текстовая подсказка и визуальная подсказка с изображением достопримечательности.]] == Компоненты проекта == ; '''Game Engine (game_engine.py)''' : Игровая логика, команды, проверка ответов, подсказки, подсчёт результата. ; '''Landmarks Data (landmarks.py)''' : База данных из достопримечательностей Петрозаводска с подсказками и источниками. ; '''Webhook Handler (alice_handler.py)''' : Принимает запросы от Яндекс.Алисы и формирует ответ навыка. ; '''Cloud Function Entry Point (cloud_function.py)''' : Точка входа для развёртывания в Yandex Cloud Functions. == Архитектура == Краткая структура: * Алиса/Яндекс.Диалоги -> webhook; * <code>cloud_function.py</code> -> <code>alice_handler.py</code>; * <code>alice_handler.py</code> -> <code>game_engine.py</code> + <code>landmarks.py</code>; * состояние игры передаётся через <code>session_state</code>. [[File:Petrozavodsk_Quiz_architecture_diagram.png|thumb|Схема архитектуры навыка «Петрозаводск Quiz».]] == Зафиксированная проблема отображения изображения == В интерфейсе навыка наблюдается дефект отображения визуальной подсказки во второй подсказке (карточка <code>BigImage</code> с изображением памятника Петру I): в карточке отображается только нижняя часть памятника, верхняя часть обрезается. [[File:Petrozavodsk Quiz BigImage crop bug Peter I hint.png|thumb|Screenshot of a dialogue in the “Petrozavodsk Quiz” Alice skill demonstrating an image rendering issue in the second hint: in the BigImage card for the Peter I monument, only the lower part of the image is shown while the upper part is cropped.]] '''Предполагаемая причина''': изображение показывается в карточке типа <code>BigImage</code> с фиксированным соотношением сторон и автоматической обрезкой под контейнер клиента Алисы. '''Возможные решения''': * подготовить отдельную версию изображения для карточки (кадрировать заранее так, чтобы ключевой объект был в центре); * использовать альтернативный <code>image_id</code> с более подходящей композицией (без важного объекта у верхней границы); * в тексте второй подсказки дополнительно дать пользователю ссылку на полное изображение в Викискладе/источнике. '''Мнение''': наиболее практичный вариант для учебного проекта — заменить изображение подсказки на заранее кадрированную версию под формат карточки, так как это не требует изменения логики игры и даёт предсказуемый результат в интерфейсе. == Темы курса, отработанные на примере навыка == Проект демонстрирует следующие практические навыки и подходы: * Проектирование диалогового интерфейса для голосовых помощников; * Разбиение приложения на модули (game engine, handler, data layer); * Сохранение и передача состояния диалога между HTTP-запросами; * Реализация многоуровневой системы подсказок с ограничением попыток; * Работа с предметной областью: структурирование данных, алиасы, обработка синонимов; * Защита от ложных совпадений ответов (например, предотвращение путаницы между памятником и площадью); * Написание и запуск unit-тестов для проверки корректности логики; * Регрессионное тестирование при внесении изменений в код; * Развёртывание webhook-навыка в облачной среде (Yandex Cloud Functions); * Подготовка документации и примеров кода для учебного курса. == Упражнения == <quiz display=simple> { Для чего навыку нужна передача состояния диалога через <code>session_state</code>? | type="()" } - Чтобы хранить только настройки интерфейса пользователя - Чтобы автоматически публиковать навык в каталоге + Чтобы сохранять прогресс игры между запросами пользователя { Почему для учебного проекта выбран webhook-подход? | type="()" } - Потому что webhook работает только в локальном CLI - Потому что webhook не требует JSON-формата + Потому что платформа Яндекс.Диалоги отправляет запросы на внешний HTTP-адрес навыка { Какую практическую пользу дают автотесты при доработке навыка? | type="()" } - Нужны только для ускорения загрузки изображений - Полезны только перед публикацией в каталог + Позволяют быстро проверить, что изменения не сломали существующую логику </quiz> q1a85jxnllpujrjdfx2jjwtljbth8wq 166006 166005 2026-04-23T09:08:18Z SemyonDudenkov 36586 166006 wikitext text/x-wiki == Навыки Алисы/Разработка интерактивного квеста == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает учебный навык «Петрозаводск Quiz»: голосовую викторину о достопримечательностях Петрозаводска. == Цель навыка == Навык должен: * задавать пользователю вопросы о достопримечательностях; * проверять правильность ответа; * давать подсказки по шагам (текстовая и визуальная); * подсчитывать итоговый результат. == Пользовательский сценарий == # Пользователь запускает навык — он начинает работу без дополнительных команд. # Навык сразу задаёт первый вопрос из 5 вопросов о достопримечательностях. # После ошибки пользователя даётся первая подсказка. # После второй ошибки показывается вторая подсказка (изображение, если доступно). # После ответа на все 5 вопросов выводится счёт и предложение сыграть снова. [[File:StartQwiz.png|thumb|Скриншот 1: начало игры с приветствием навыка и первым вопросом о достопримечательности.]] [[File:Petrozavodsk-Quiz-dialog-hints2.png|thumb|Скриншот 2: текстовая подсказка и визуальная подсказка с изображением достопримечательности.]] == Компоненты проекта == ; '''Game Engine (game_engine.py)''' : Игровая логика, команды, проверка ответов, подсказки, подсчёт результата. ; '''Landmarks Data (landmarks.py)''' : База данных из достопримечательностей Петрозаводска с подсказками и источниками. ; '''Webhook Handler (alice_handler.py)''' : Принимает запросы от Яндекс.Алисы и формирует ответ навыка. ; '''Cloud Function Entry Point (cloud_function.py)''' : Точка входа для развёртывания в Yandex Cloud Functions. == Архитектура == Краткая структура: * Алиса/Яндекс.Диалоги -> webhook; * <code>cloud_function.py</code> -> <code>alice_handler.py</code>; * <code>alice_handler.py</code> -> <code>game_engine.py</code> + <code>landmarks.py</code>; * состояние игры передаётся через <code>session_state</code>. == Зафиксированная проблема отображения изображения == В интерфейсе навыка наблюдается дефект отображения визуальной подсказки во второй подсказке (карточка <code>BigImage</code> с изображением памятника Петру I): в карточке отображается только нижняя часть памятника, верхняя часть обрезается. [[File:Petrozavodsk Quiz BigImage crop bug Peter I hint.png|thumb|Скриншот 3: дефект отображения изображения во второй подсказке (карточка BigImage) — у памятника Петру I видна только нижняя часть изображения, верхняя часть обрезается.]] '''Предполагаемая причина''': изображение показывается в карточке типа <code>BigImage</code> с фиксированным соотношением сторон и автоматической обрезкой под контейнер клиента Алисы. '''Возможные решения''': * подготовить отдельную версию изображения для карточки (кадрировать заранее так, чтобы ключевой объект был в центре); * использовать альтернативный <code>image_id</code> с более подходящей композицией (без важного объекта у верхней границы); * в тексте второй подсказки дополнительно дать пользователю ссылку на полное изображение в Викискладе/источнике. '''Мнение''': наиболее практичный вариант для учебного проекта — заменить изображение подсказки на заранее кадрированную версию под формат карточки, так как это не требует изменения логики игры и даёт предсказуемый результат в интерфейсе. == Темы курса, отработанные на примере навыка == Проект демонстрирует следующие практические навыки и подходы: * Проектирование диалогового интерфейса для голосовых помощников; * Разбиение приложения на модули (game engine, handler, data layer); * Сохранение и передача состояния диалога между HTTP-запросами; * Реализация многоуровневой системы подсказок с ограничением попыток; * Работа с предметной областью: структурирование данных, алиасы, обработка синонимов; * Защита от ложных совпадений ответов (например, предотвращение путаницы между памятником и площадью); * Написание и запуск unit-тестов для проверки корректности логики; * Регрессионное тестирование при внесении изменений в код; * Развёртывание webhook-навыка в облачной среде (Yandex Cloud Functions); * Подготовка документации и примеров кода для учебного курса. == Упражнения == <quiz display=simple> { Для чего навыку нужна передача состояния диалога через <code>session_state</code>? | type="()" } - Чтобы хранить только настройки интерфейса пользователя - Чтобы автоматически публиковать навык в каталоге + Чтобы сохранять прогресс игры между запросами пользователя { Почему для учебного проекта выбран webhook-подход? | type="()" } - Потому что webhook работает только в локальном CLI - Потому что webhook не требует JSON-формата + Потому что платформа Яндекс.Диалоги отправляет запросы на внешний HTTP-адрес навыка { Какую практическую пользу дают автотесты при доработке навыка? | type="()" } - Нужны только для ускорения загрузки изображений - Полезны только перед публикацией в каталог + Позволяют быстро проверить, что изменения не сломали существующую логику </quiz> i7cojzxk3zqplq293eqzyo079apxq1u 166017 166006 2026-04-23T10:08:38Z AKA MBG 551 rm superfluous header 166017 wikitext text/x-wiki Эта подстраница описывает учебный навык «Петрозаводск Quiz»: голосовую викторину о достопримечательностях Петрозаводска. == Цель навыка == Навык должен: * задавать пользователю вопросы о достопримечательностях; * проверять правильность ответа; * давать подсказки по шагам (текстовая и визуальная); * подсчитывать итоговый результат. == Пользовательский сценарий == # Пользователь запускает навык — он начинает работу без дополнительных команд. # Навык сразу задаёт первый вопрос из 5 вопросов о достопримечательностях. # После ошибки пользователя даётся первая подсказка. # После второй ошибки показывается вторая подсказка (изображение, если доступно). # После ответа на все 5 вопросов выводится счёт и предложение сыграть снова. [[File:StartQwiz.png|thumb|Скриншот 1: начало игры с приветствием навыка и первым вопросом о достопримечательности.]] [[File:Petrozavodsk-Quiz-dialog-hints2.png|thumb|Скриншот 2: текстовая подсказка и визуальная подсказка с изображением достопримечательности.]] == Компоненты проекта == ; '''Game Engine (game_engine.py)''' : Игровая логика, команды, проверка ответов, подсказки, подсчёт результата. ; '''Landmarks Data (landmarks.py)''' : База данных из достопримечательностей Петрозаводска с подсказками и источниками. ; '''Webhook Handler (alice_handler.py)''' : Принимает запросы от Яндекс.Алисы и формирует ответ навыка. ; '''Cloud Function Entry Point (cloud_function.py)''' : Точка входа для развёртывания в Yandex Cloud Functions. == Архитектура == Краткая структура: * Алиса/Яндекс.Диалоги -> webhook; * <code>cloud_function.py</code> -> <code>alice_handler.py</code>; * <code>alice_handler.py</code> -> <code>game_engine.py</code> + <code>landmarks.py</code>; * состояние игры передаётся через <code>session_state</code>. == Зафиксированная проблема отображения изображения == В интерфейсе навыка наблюдается дефект отображения визуальной подсказки во второй подсказке (карточка <code>BigImage</code> с изображением памятника Петру I): в карточке отображается только нижняя часть памятника, верхняя часть обрезается. [[File:Petrozavodsk Quiz BigImage crop bug Peter I hint.png|thumb|Скриншот 3: дефект отображения изображения во второй подсказке (карточка BigImage) — у памятника Петру I видна только нижняя часть изображения, верхняя часть обрезается.]] '''Предполагаемая причина''': изображение показывается в карточке типа <code>BigImage</code> с фиксированным соотношением сторон и автоматической обрезкой под контейнер клиента Алисы. '''Возможные решения''': * подготовить отдельную версию изображения для карточки (кадрировать заранее так, чтобы ключевой объект был в центре); * использовать альтернативный <code>image_id</code> с более подходящей композицией (без важного объекта у верхней границы); * в тексте второй подсказки дополнительно дать пользователю ссылку на полное изображение в Викискладе/источнике. '''Мнение''': наиболее практичный вариант для учебного проекта — заменить изображение подсказки на заранее кадрированную версию под формат карточки, так как это не требует изменения логики игры и даёт предсказуемый результат в интерфейсе. == Темы курса, отработанные на примере навыка == Проект демонстрирует следующие практические навыки и подходы: * Проектирование диалогового интерфейса для голосовых помощников; * Разбиение приложения на модули (game engine, handler, data layer); * Сохранение и передача состояния диалога между HTTP-запросами; * Реализация многоуровневой системы подсказок с ограничением попыток; * Работа с предметной областью: структурирование данных, алиасы, обработка синонимов; * Защита от ложных совпадений ответов (например, предотвращение путаницы между памятником и площадью); * Написание и запуск unit-тестов для проверки корректности логики; * Регрессионное тестирование при внесении изменений в код; * Развёртывание webhook-навыка в облачной среде (Yandex Cloud Functions); * Подготовка документации и примеров кода для учебного курса. == Упражнения == <quiz display=simple> { Для чего навыку нужна передача состояния диалога через <code>session_state</code>? | type="()" } - Чтобы хранить только настройки интерфейса пользователя - Чтобы автоматически публиковать навык в каталоге + Чтобы сохранять прогресс игры между запросами пользователя { Почему для учебного проекта выбран webhook-подход? | type="()" } - Потому что webhook работает только в локальном CLI - Потому что webhook не требует JSON-формата + Потому что платформа Яндекс.Диалоги отправляет запросы на внешний HTTP-адрес навыка { Какую практическую пользу дают автотесты при доработке навыка? | type="()" } - Нужны только для ускорения загрузки изображений - Полезны только перед публикацией в каталог + Позволяют быстро проверить, что изменения не сломали существующую логику </quiz> fnzh4y910vn5zr1m0hq9qsw8myuzd87 Навыки Алисы/Интеграция с Яндекс Диалогами 0 30213 166010 165975 2026-04-23T09:19:36Z SemyonDudenkov 36586 166010 wikitext text/x-wiki == Навыки Алисы. Интеграция с Яндекс.Диалогами == '''Подстраница курса «Навыки Алисы».''' Эта подстраница показывает, как навык обменивается данными с платформой Яндекс.Диалоги. Когда пользователь пишет или говорит фразу, Яндекс.Диалоги отправляют HTTP-запрос (webhook) на сервер навыка. Сервер обрабатывает запрос и возвращает JSON-ответ, который Алиса озвучивает или показывает пользователю. == Минимальный JSON-запрос (payload) == Payload — это тело HTTP-запроса с данными о реплике пользователя и сессии. <syntaxhighlight lang="json"> { "request": { "original_utterance": "старт", "command": "старт" }, "session": { "new": true, "user_id": "user-123", "application": { "application_id": "app-123" } } } </syntaxhighlight> == Что делает обработчик == * читает поля <code>request</code> и <code>session</code>; * определяет пользователя; * запускает игру или продолжает текущую; * добавляет <code>session_state</code> для сохранения прогресса; * возвращает JSON формата Яндекс.Диалогов. == Формат ответа == <syntaxhighlight lang="json"> { "version": "1.0", "response": { "text": "Ответ навыка", "end_session": false, "card": { "type": "BigImage", "image_id": "12345/abcde", "title": "Вторая подсказка", "description": "Посмотри на изображение и попробуй ответить еще раз." } }, "session_state": { "in_progress": true, "score": 2, "asked_count": 3 } } </syntaxhighlight> == Проверка == Проверить webhook можно командой: <syntaxhighlight lang="bash"> python verify_webhook.py https://ваш-url </syntaxhighlight> == Упражнения == <quiz display=simple> { Что передается в payload webhook-запроса? | type="()" } - Только URL функции в облаке - Только текст предыдущего ответа навыка + Данные о реплике пользователя и параметрах сессии { Зачем в ответ навыка добавляется <code>session_state</code>? | type="()" } - Чтобы заменять поле <code>version</code> - Чтобы отключать карточки с изображениями + Чтобы сохранить состояние игры для следующего запроса { Какую роль играет JSON-ответ навыка? | type="()" } - Он нужен только для логирования на сервере - Он используется только в локальном CLI + Он определяет, что Алиса озвучит или покажет пользователю </quiz> == Ссылки == * [https://github.com/SaKuRa5353/alice-petrozavodsk-game Репозиторий проекта на GitHub] * [https://dialogs.yandex.ru/store/skills/7edd79b2-petrozavodsk-quiz Проверка навыка в каталоге Яндекс.Диалогов] 5etv7cnz3wi942447wkvfrt7b9axoi6 166013 166010 2026-04-23T09:43:13Z SemyonDudenkov 36586 166013 wikitext text/x-wiki {{уд-дубль|Навыки Алисы/Интеграция с Яндекс Диалогами}} == Навыки Алисы. Интеграция с Яндекс.Диалогами == '''Подстраница курса «Навыки Алисы».''' Эта подстраница показывает, как навык обменивается данными с платформой Яндекс.Диалоги. Когда пользователь пишет или говорит фразу, Яндекс.Диалоги отправляют HTTP-запрос (webhook) на сервер навыка. Сервер обрабатывает запрос и возвращает JSON-ответ, который Алиса озвучивает или показывает пользователю. == Минимальный JSON-запрос (payload) == Payload — это тело HTTP-запроса с данными о реплике пользователя и сессии. <syntaxhighlight lang="json"> { "request": { "original_utterance": "старт", "command": "старт" }, "session": { "new": true, "user_id": "user-123", "application": { "application_id": "app-123" } } } </syntaxhighlight> == Что делает обработчик == * читает поля <code>request</code> и <code>session</code>; * определяет пользователя; * запускает игру или продолжает текущую; * добавляет <code>session_state</code> для сохранения прогресса; * возвращает JSON формата Яндекс.Диалогов. == Формат ответа == <syntaxhighlight lang="json"> { "version": "1.0", "response": { "text": "Ответ навыка", "end_session": false, "card": { "type": "BigImage", "image_id": "12345/abcde", "title": "Вторая подсказка", "description": "Посмотри на изображение и попробуй ответить еще раз." } }, "session_state": { "in_progress": true, "score": 2, "asked_count": 3 } } </syntaxhighlight> == Проверка == Проверить webhook можно командой: <syntaxhighlight lang="bash"> python verify_webhook.py https://ваш-url </syntaxhighlight> == Упражнения == <quiz display=simple> { Что передается в payload webhook-запроса? | type="()" } - Только URL функции в облаке - Только текст предыдущего ответа навыка + Данные о реплике пользователя и параметрах сессии { Зачем в ответ навыка добавляется <code>session_state</code>? | type="()" } - Чтобы заменять поле <code>version</code> - Чтобы отключать карточки с изображениями + Чтобы сохранить состояние игры для следующего запроса { Какую роль играет JSON-ответ навыка? | type="()" } - Он нужен только для логирования на сервере - Он используется только в локальном CLI + Он определяет, что Алиса озвучит или покажет пользователю </quiz> == Ссылки == * [https://github.com/SaKuRa5353/alice-petrozavodsk-game Репозиторий проекта на GitHub] * [https://dialogs.yandex.ru/store/skills/7edd79b2-petrozavodsk-quiz Проверка навыка в каталоге Яндекс.Диалогов] 2scqoxeeec2hrmh7iwqfjjycsj2wj4m 166014 166013 2026-04-23T09:46:12Z SemyonDudenkov 36586 166014 wikitext text/x-wiki == Навыки Алисы. Интеграция с Яндекс.Диалогами == '''Подстраница курса «Навыки Алисы».''' Эта подстраница показывает, как навык обменивается данными с платформой Яндекс.Диалоги. Когда пользователь пишет или говорит фразу, Яндекс.Диалоги отправляют HTTP-запрос (webhook) на сервер навыка. Сервер обрабатывает запрос и возвращает JSON-ответ, который Алиса озвучивает или показывает пользователю. == Минимальный JSON-запрос (payload) == Payload — это тело HTTP-запроса с данными о реплике пользователя и сессии. <syntaxhighlight lang="json"> { "request": { "original_utterance": "старт", "command": "старт" }, "session": { "new": true, "user_id": "user-123", "application": { "application_id": "app-123" } } } </syntaxhighlight> == Что делает обработчик == * читает поля <code>request</code> и <code>session</code>; * определяет пользователя; * запускает игру или продолжает текущую; * добавляет <code>session_state</code> для сохранения прогресса; * возвращает JSON формата Яндекс.Диалогов. == Формат ответа == <syntaxhighlight lang="json"> { "version": "1.0", "response": { "text": "Ответ навыка", "end_session": false, "card": { "type": "BigImage", "image_id": "12345/abcde", "title": "Вторая подсказка", "description": "Посмотри на изображение и попробуй ответить еще раз." } }, "session_state": { "in_progress": true, "score": 2, "asked_count": 3 } } </syntaxhighlight> == Проверка == Проверить webhook можно командой: <syntaxhighlight lang="bash"> python verify_webhook.py https://ваш-url </syntaxhighlight> == Упражнения == <quiz display=simple> { Что передается в payload webhook-запроса? | type="()" } - Только URL функции в облаке - Только текст предыдущего ответа навыка + Данные о реплике пользователя и параметрах сессии { Зачем в ответ навыка добавляется <code>session_state</code>? | type="()" } - Чтобы заменять поле <code>version</code> - Чтобы отключать карточки с изображениями + Чтобы сохранить состояние игры для следующего запроса { Какую роль играет JSON-ответ навыка? | type="()" } - Он нужен только для логирования на сервере - Он используется только в локальном CLI + Он определяет, что Алиса озвучит или покажет пользователю </quiz> == Ссылки == * [https://github.com/SaKuRa5353/alice-petrozavodsk-game Репозиторий проекта на GitHub] * [https://dialogs.yandex.ru/store/skills/7edd79b2-petrozavodsk-quiz Проверка навыка в каталоге Яндекс.Диалогов] 5etv7cnz3wi942447wkvfrt7b9axoi6 166020 166014 2026-04-23T11:43:15Z SemyonDudenkov 36586 166020 wikitext text/x-wiki Эта подстраница показывает, как навык обменивается данными с платформой Яндекс.Диалоги. Когда пользователь пишет или говорит фразу, Яндекс.Диалоги отправляют HTTP-запрос (webhook) на сервер навыка. Сервер обрабатывает запрос и возвращает JSON-ответ, который Алиса озвучивает или показывает пользователю. == Минимальный JSON-запрос (payload) == Payload — это тело HTTP-запроса с данными о реплике пользователя и сессии. <syntaxhighlight lang="json"> { "request": { "original_utterance": "старт", "command": "старт" }, "session": { "new": true, "user_id": "user-123", "application": { "application_id": "app-123" } } } </syntaxhighlight> == Что делает обработчик == * читает поля <code>request</code> и <code>session</code>; * определяет пользователя; * запускает игру или продолжает текущую; * добавляет <code>session_state</code> для сохранения прогресса; * возвращает JSON формата Яндекс.Диалогов. == Формат ответа == <syntaxhighlight lang="json"> { "version": "1.0", "response": { "text": "Ответ навыка", "end_session": false, "card": { "type": "BigImage", "image_id": "12345/abcde", "title": "Вторая подсказка", "description": "Посмотри на изображение и попробуй ответить еще раз." } }, "session_state": { "in_progress": true, "score": 2, "asked_count": 3 } } </syntaxhighlight> == Проверка == Проверить webhook можно командой: <syntaxhighlight lang="bash"> python verify_webhook.py https://ваш-url </syntaxhighlight> == Упражнения == <quiz display=simple> { Что передается в payload webhook-запроса? | type="()" } - Только URL функции в облаке - Только текст предыдущего ответа навыка + Данные о реплике пользователя и параметрах сессии { Зачем в ответ навыка добавляется <code>session_state</code>? | type="()" } - Чтобы заменять поле <code>version</code> - Чтобы отключать карточки с изображениями + Чтобы сохранить состояние игры для следующего запроса { Какую роль играет JSON-ответ навыка? | type="()" } - Он нужен только для логирования на сервере - Он используется только в локальном CLI + Он определяет, что Алиса озвучит или покажет пользователю </quiz> == Ссылки == * [https://github.com/SaKuRa5353/alice-petrozavodsk-game Репозиторий проекта на GitHub] * [https://dialogs.yandex.ru/store/skills/7edd79b2-petrozavodsk-quiz Проверка навыка в каталоге Яндекс.Диалогов] o5ok28zaaonacigfr5ptz29m88l44zr Навыки Алисы/Yandex Cloud Functions 0 30214 166009 165979 2026-04-23T09:17:49Z SemyonDudenkov 36586 166009 wikitext text/x-wiki == Навыки Алисы/Yandex Cloud Functions == '''Подстраница курса «Навыки Алисы».''' '''Yandex Cloud Functions''' — это платформа для развёртывания бессерверных функций в облаке Яндекса. В контексте этого проекта облачная функция получает webhook-запросы от платформы Яндекс.Диалоги, передаёт их в обработчик навыка и возвращает JSON-ответ. Эта подстраница описывает, как развернуть webhook навыка в Yandex Cloud Functions и настроить интеграцию с Яндекс.Диалогами. == Почему Cloud Functions == По сравнению с альтернативами (VPS с постоянно работающим приложением, PaaS-хостинг с риском «засыпания» бесплатных тарифов) Yandex Cloud Functions для учебного навыка удобен тем, что: * нет необходимости поддерживать постоянно запущенный сервер; * нет проблем со «sleep»-режимом бесплатного веб-хостинга; * модель оплаты и эксплуатации подходит для нерегулярной учебной нагрузки; * новую версию можно быстро опубликовать из zip-архива. == Точка входа == Для функции используется: <syntaxhighlight lang="python"> def handler(event, context): ... </syntaxhighlight> Entry point в настройках функции: <code>cloud_function.handler</code>. == Шаги развёртывания == # Откройте консоль Yandex Cloud: [https://console.cloud.yandex.ru/functions/ console.cloud.yandex.ru/functions/]. # Создайте новую функцию в разделе «Cloud Functions». # Загрузите исходный код навыка архивом <code>alice-ycf-deploy.zip</code> (находится в корне репозитория). # Укажите точку входа (entry point): <code>cloud_function.handler</code>. # Создайте HTTP-trigger для функции. # Скопируйте публичный URL функции и внесите его как webhook-адрес в настройки навыка в Яндекс.Диалогах. == Проверка == После публикации проверьте: <syntaxhighlight lang="bash"> python verify_webhook.py https://ваш-url </syntaxhighlight> == Упражнения == <quiz display=simple> { Что такое webhook в контексте навыка Алисы? | type="()" } - Локальный файл с настройками навыка - Команда для запуска тестов + Публичный HTTP-адрес, который принимает запросы от Яндекс.Диалогов { Какой entry point указывается для данного проекта? | type="()" } - <code>app.webhook</code> - <code>alice_handler.main</code> + <code>cloud_function.handler</code> { Почему serverless-подход удобен для учебного навыка? | type="()" } - Потому что требует постоянной ручной поддержки сервера - Потому что исключает HTTP-trigger + Потому что не требует постоянно работающего сервера и удобен для нерегулярной нагрузки </quiz> g2un4nn2592kb0oxe9m82tfk1ef9okj 166021 166009 2026-04-23T11:45:29Z SemyonDudenkov 36586 166021 wikitext text/x-wiki Эта подстраница описывает, как развернуть webhook навыка в Yandex Cloud Functions и настроить интеграцию с Яндекс.Диалогами. '''Yandex Cloud Functions''' — это платформа для развёртывания бессерверных функций в облаке Яндекса. В контексте этого проекта облачная функция получает webhook-запросы от платформы Яндекс.Диалоги, передаёт их в обработчик навыка и возвращает JSON-ответ. == Почему Cloud Functions == По сравнению с альтернативами (VPS с постоянно работающим приложением, PaaS-хостинг с риском «засыпания» бесплатных тарифов) Yandex Cloud Functions для учебного навыка удобен тем, что: * нет необходимости поддерживать постоянно запущенный сервер; * нет проблем со «sleep»-режимом бесплатного веб-хостинга; * модель оплаты и эксплуатации подходит для нерегулярной учебной нагрузки; * новую версию можно быстро опубликовать из zip-архива. == Точка входа == Для функции используется: <syntaxhighlight lang="python"> def handler(event, context): ... </syntaxhighlight> Entry point в настройках функции: <code>cloud_function.handler</code>. == Шаги развёртывания == # Откройте консоль Yandex Cloud: [https://console.cloud.yandex.ru/functions/ console.cloud.yandex.ru/functions/]. # Создайте новую функцию в разделе «Cloud Functions». # Загрузите исходный код навыка архивом <code>alice-ycf-deploy.zip</code> (находится в корне репозитория). # Укажите точку входа (entry point): <code>cloud_function.handler</code>. # Создайте HTTP-trigger для функции. # Скопируйте публичный URL функции и внесите его как webhook-адрес в настройки навыка в Яндекс.Диалогах. == Проверка == После публикации проверьте: <syntaxhighlight lang="bash"> python verify_webhook.py https://ваш-url </syntaxhighlight> == Упражнения == <quiz display=simple> { Что такое webhook в контексте навыка Алисы? | type="()" } - Локальный файл с настройками навыка - Команда для запуска тестов + Публичный HTTP-адрес, который принимает запросы от Яндекс.Диалогов { Какой entry point указывается для данного проекта? | type="()" } - <code>app.webhook</code> - <code>alice_handler.main</code> + <code>cloud_function.handler</code> { Почему serverless-подход удобен для учебного навыка? | type="()" } - Потому что требует постоянной ручной поддержки сервера - Потому что исключает HTTP-trigger + Потому что не требует постоянно работающего сервера и удобен для нерегулярной нагрузки </quiz> s885z3a2durmlbtzf4w8h2xessc3u06 Навыки Алисы/Установка и локальный запуск 0 30215 166007 165977 2026-04-23T09:13:20Z SemyonDudenkov 36586 166007 wikitext text/x-wiki == Навыки Алисы/Установка и локальный запуск == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает локальную установку и запуск учебного проекта «Петрозаводск Quiz» (голосовой навык Алисы). == Ссылка на исходный код == * Репозиторий проекта на GitHub: [https://github.com/SaKuRa5353/alice-petrozavodsk-game alice-petrozavodsk-game]. == Другие материалы курса == * [[Навыки Алисы/Разработка интерактивного квеста|Обзор проекта Петрозаводск Quiz]] * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс Диалогами]] * [[Навыки Алисы/Yandex Cloud Functions|Развёртывание в облаке]] * [[Навыки Алисы/Архитектура навыка|Архитектура навыка]] == Требования == * Python 3.11+ * Git * Интернет нужен только для развёртывания и проверки публичного webhook == Локальный запуск == # Создайте виртуальное окружение: <syntaxhighlight lang="bash"> python -m venv .venv source .venv/bin/activate </syntaxhighlight> # Установите зависимости: <syntaxhighlight lang="bash"> pip install -r requirements.txt </syntaxhighlight> # Запустите тесты: <syntaxhighlight lang="bash"> python -m unittest discover -s tests -v </syntaxhighlight> # Запустите демонстрационный CLI-режим: <syntaxhighlight lang="bash"> python demo_cli.py </syntaxhighlight> == Команды == Ниже перечислены команды, которые пользователь вводит в диалоге навыка (в интерфейсе Яндекс.Диалогов, в чате с Алисой или в локальном CLI-демо). * <code>старт</code> — начать игру * <code>помощь</code> — показать правила * <code>сдаюсь</code> — показать правильный ответ * <code>заново</code> — начать заново == Проверка перед публикацией == * Прогоните тесты: <code>python -m unittest discover -s tests -p 'test_*.py'</code> * Обновите zip-архив для облака. * Убедитесь, что публичный webhook отвечает кодом 200. == Мини-викторина == <quiz display=simple> { Для чего создается виртуальное окружение Python? | type="()" } - Чтобы автоматически сгенерировать webhook URL - Чтобы заменить систему управления версиями Git + Чтобы изолировать зависимости проекта от системного Python { Какой командой запускаются unit-тесты проекта? | type="()" } - <code>python verify_webhook.py https://ваш-url</code> - <code>python demo_cli.py</code> + <code>python -m unittest discover -s tests -v</code> { Где можно проверить команды навыка до публикации? | type="()" } - Только в каталоге Яндекс.Диалогов - Только после создания HTTP-trigger + В локальном CLI-режиме и в интерфейсе Яндекс.Диалогов </quiz> am1ywr6497e3xoodmb6ymipyem7gdll 166008 166007 2026-04-23T09:16:47Z SemyonDudenkov 36586 166008 wikitext text/x-wiki == Навыки Алисы/Установка и локальный запуск == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает локальную установку и запуск учебного проекта «Петрозаводск Quiz» (голосовой навык Алисы). == Ссылка на исходный код == * Репозиторий проекта на GitHub: [https://github.com/SaKuRa5353/alice-petrozavodsk-game alice-petrozavodsk-game]. == Другие материалы курса == * [[Навыки Алисы/Разработка интерактивного квеста|Обзор проекта Петрозаводск Quiz]] * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс Диалогами]] * [[Навыки Алисы/Yandex Cloud Functions|Развёртывание в облаке]] * [[Навыки Алисы/Архитектура навыка|Архитектура навыка]] == Требования == * Python 3.11+ * Git * Интернет нужен только для развёртывания и проверки публичного webhook == Локальный запуск == # Создайте виртуальное окружение: <syntaxhighlight lang="bash"> python -m venv .venv source .venv/bin/activate </syntaxhighlight> # Установите зависимости: <syntaxhighlight lang="bash"> pip install -r requirements.txt </syntaxhighlight> # Запустите тесты: <syntaxhighlight lang="bash"> python -m unittest discover -s tests -v </syntaxhighlight> # Запустите демонстрационный CLI-режим: <syntaxhighlight lang="bash"> python demo_cli.py </syntaxhighlight> == Команды == Ниже перечислены команды, которые пользователь вводит в диалоге навыка (в интерфейсе Яндекс.Диалогов, в чате с Алисой или в локальном CLI-демо). * <code>старт</code> — начать игру * <code>помощь</code> — показать правила * <code>сдаюсь</code> — показать правильный ответ * <code>заново</code> — начать заново == Проверка перед публикацией == * Прогоните тесты: <code>python -m unittest discover -s tests -p 'test_*.py'</code> * Обновите zip-архив для облака. * Убедитесь, что публичный webhook отвечает кодом 200. == Упражнения == <quiz display=simple> { Для чего создается виртуальное окружение Python? | type="()" } - Чтобы автоматически сгенерировать webhook URL - Чтобы заменить систему управления версиями Git + Чтобы изолировать зависимости проекта от системного Python { Какой командой запускаются unit-тесты проекта? | type="()" } - <code>python verify_webhook.py https://ваш-url</code> - <code>python demo_cli.py</code> + <code>python -m unittest discover -s tests -v</code> { Где можно проверить команды навыка до публикации? | type="()" } - Только в каталоге Яндекс.Диалогов - Только после создания HTTP-trigger + В локальном CLI-режиме и в интерфейсе Яндекс.Диалогов </quiz> p9bhadqb758c07psi9i8x3caqk0m77l 166019 166008 2026-04-23T11:41:08Z SemyonDudenkov 36586 166019 wikitext text/x-wiki Эта подстраница описывает локальную установку и запуск учебного проекта «Петрозаводск Quiz» (голосовой навык Алисы). == Ссылка на исходный код == * Репозиторий проекта на GitHub: [https://github.com/SaKuRa5353/alice-petrozavodsk-game alice-petrozavodsk-game]. == Другие материалы курса == * [[Навыки Алисы/Разработка интерактивного квеста|Обзор проекта Петрозаводск Quiz]] * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс Диалогами]] * [[Навыки Алисы/Yandex Cloud Functions|Развёртывание в облаке]] * [[Навыки Алисы/Архитектура навыка|Архитектура навыка]] == Требования == * Python 3.11+ * Git * Интернет нужен только для развёртывания и проверки публичного webhook == Локальный запуск == # Создайте виртуальное окружение: <syntaxhighlight lang="bash"> python -m venv .venv source .venv/bin/activate </syntaxhighlight> # Установите зависимости: <syntaxhighlight lang="bash"> pip install -r requirements.txt </syntaxhighlight> # Запустите тесты: <syntaxhighlight lang="bash"> python -m unittest discover -s tests -v </syntaxhighlight> # Запустите демонстрационный CLI-режим: <syntaxhighlight lang="bash"> python demo_cli.py </syntaxhighlight> == Команды == Ниже перечислены команды, которые пользователь вводит в диалоге навыка (в интерфейсе Яндекс.Диалогов, в чате с Алисой или в локальном CLI-демо). * <code>старт</code> — начать игру * <code>помощь</code> — показать правила * <code>сдаюсь</code> — показать правильный ответ * <code>заново</code> — начать заново == Проверка перед публикацией == * Прогоните тесты: <code>python -m unittest discover -s tests -p 'test_*.py'</code> * Обновите zip-архив для облака. * Убедитесь, что публичный webhook отвечает кодом 200. == Упражнения == <quiz display=simple> { Для чего создается виртуальное окружение Python? | type="()" } - Чтобы автоматически сгенерировать webhook URL - Чтобы заменить систему управления версиями Git + Чтобы изолировать зависимости проекта от системного Python { Какой командой запускаются unit-тесты проекта? | type="()" } - <code>python verify_webhook.py https://ваш-url</code> - <code>python demo_cli.py</code> + <code>python -m unittest discover -s tests -v</code> { Где можно проверить команды навыка до публикации? | type="()" } - Только в каталоге Яндекс.Диалогов - Только после создания HTTP-trigger + В локальном CLI-режиме и в интерфейсе Яндекс.Диалогов </quiz> plhyiczkkgasknu5b5fmzmpq66stqia Навыки Алисы: Разработка интерактивного квеста 0 30238 165997 165935 2026-04-22T13:27:39Z EmausBot 23477 исправление двойного перенаправления на [[Навыки Алисы/alice-petrozavodsk-game]] 165997 wikitext text/x-wiki #перенаправление [[Навыки Алисы/alice-petrozavodsk-game]] pvzreh5szycbqd6jisl5soh553gyrnd Навыки alice-petrozavodsk-game. 0 30239 165996 165937 2026-04-22T13:27:29Z EmausBot 23477 исправление двойного перенаправления на [[Навыки Алисы/alice-petrozavodsk-game]] 165996 wikitext text/x-wiki #перенаправление [[Навыки Алисы/alice-petrozavodsk-game]] pvzreh5szycbqd6jisl5soh553gyrnd Навыки Алисы/Архитектура навыка 0 30246 165999 2026-04-22T13:40:42Z SemyonDudenkov 36586 Новая страница: «== Навыки Алисы/Архитектура навыка == [[File:Petrozavodsk Quiz architecture diagram.png|none|thumb|1200px|Диаграмма архитектуры учебного навыка Алисы «Petrozavodsk Quiz»: взаимодействие пользователя, Яндекс.Диалогов, webhook-обработчика, игрового движка, данных и session_state]] {{clear}} == Другие матери...» 165999 wikitext text/x-wiki == Навыки Алисы/Архитектура навыка == [[File:Petrozavodsk Quiz architecture diagram.png|none|thumb|1200px|Диаграмма архитектуры учебного навыка Алисы «Petrozavodsk Quiz»: взаимодействие пользователя, Яндекс.Диалогов, webhook-обработчика, игрового движка, данных и session_state]] {{clear}} == Другие материалы курса == * [[Навыки Алисы/Разработка интерактивного квеста|Обзор проекта Petrozavodsk Quiz]] * [[Навыки Алисы/Установка и локальный запуск|Установка и локальный запуск]] * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс Диалогами]] * [[Навыки Алисы/Yandex Cloud Functions|Развёртывание в облаке]] == Mermaid-код == <pre> flowchart LR U[Пользователь] subgraph A[Архитектура проекта] direction TB IN[Входящий запрос webhook] CF[Yandex Cloud Functions: cloud_function.handler] H[Webhook-обработчик: alice_handler.handler] G[Игровой движок: game_engine.py] L[Данные достопримечательностей: landmarks.py] S[session_state: параметры сессии, не БД] OUT[Ответ навыка] IN -->|вопрос пользователя и текущее состояние| CF CF -->|вызов handler| H H <-->|команда пользователя и результат проверки| G G -->|чтение вопросов и подсказок| L H -->|обновляет состояние| S H -->|формирует JSON-ответ| OUT S -->|добавляется в поле session_state| OUT end U -->|вопрос пользователя| IN OUT -->|ответ навыка| U </pre> == Пояснение == * Пользователь взаимодействует с навыком через Алису. * Внутри блока «Алиса / Яндекс.Диалоги» показаны программные части навыка. * Обработчик <code>alice_handler.py</code> передает ввод в <code>game_engine.py</code>. * Данные вопросов и подсказок берутся из <code>landmarks.py</code>. * Состояние игры сохраняется в <code>session_state</code> и передается в следующий запрос. == Что добавить после согласования == * Экспорт схемы в PNG/SVG. * Загрузка файла в Викисклад. * Вставка итоговой иллюстрации в страницу курса. == Мини-викторина == <quiz display=simple> { Что означает "покрывающий" блок «Алиса / Яндекс.Диалоги» на диаграмме? | type="()" } - Что это только внешний заголовок без связи с компонентами - Что внутри находятся только данные <code>landmarks.py</code> + Что внутри этого контура расположены и взаимодействуют все основные компоненты навыка { Какой компонент отвечает за обработку входящих webhook-запросов? | type="()" } - <code>landmarks.py</code> - <code>game_engine.py</code> + <code>alice_handler.py</code> { Зачем нужен <code>session_state</code> в архитектуре навыка? | type="()" } - Чтобы хранить изображения для карточек - Чтобы определять формат Mermaid-диаграммы + Чтобы передавать состояние диалога между последовательными запросами пользователя </quiz> qkq39us9d7yh2oorqghqjk50z9847qr 166016 165999 2026-04-23T09:50:03Z SemyonDudenkov 36586 /* Мини-викторина */ 166016 wikitext text/x-wiki == Навыки Алисы/Архитектура навыка == [[File:Petrozavodsk Quiz architecture diagram.png|none|thumb|1200px|Диаграмма архитектуры учебного навыка Алисы «Petrozavodsk Quiz»: взаимодействие пользователя, Яндекс.Диалогов, webhook-обработчика, игрового движка, данных и session_state]] {{clear}} == Другие материалы курса == * [[Навыки Алисы/Разработка интерактивного квеста|Обзор проекта Petrozavodsk Quiz]] * [[Навыки Алисы/Установка и локальный запуск|Установка и локальный запуск]] * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс Диалогами]] * [[Навыки Алисы/Yandex Cloud Functions|Развёртывание в облаке]] == Mermaid-код == <pre> flowchart LR U[Пользователь] subgraph A[Архитектура проекта] direction TB IN[Входящий запрос webhook] CF[Yandex Cloud Functions: cloud_function.handler] H[Webhook-обработчик: alice_handler.handler] G[Игровой движок: game_engine.py] L[Данные достопримечательностей: landmarks.py] S[session_state: параметры сессии, не БД] OUT[Ответ навыка] IN -->|вопрос пользователя и текущее состояние| CF CF -->|вызов handler| H H <-->|команда пользователя и результат проверки| G G -->|чтение вопросов и подсказок| L H -->|обновляет состояние| S H -->|формирует JSON-ответ| OUT S -->|добавляется в поле session_state| OUT end U -->|вопрос пользователя| IN OUT -->|ответ навыка| U </pre> == Пояснение == * Пользователь взаимодействует с навыком через Алису. * Внутри блока «Алиса / Яндекс.Диалоги» показаны программные части навыка. * Обработчик <code>alice_handler.py</code> передает ввод в <code>game_engine.py</code>. * Данные вопросов и подсказок берутся из <code>landmarks.py</code>. * Состояние игры сохраняется в <code>session_state</code> и передается в следующий запрос. == Что добавить после согласования == * Экспорт схемы в PNG/SVG. * Загрузка файла в Викисклад. * Вставка итоговой иллюстрации в страницу курса. == Упражнения == <quiz display=simple> { Что означает "покрывающий" блок «Алиса / Яндекс.Диалоги» на диаграмме? | type="()" } - Что это только внешний заголовок без связи с компонентами - Что внутри находятся только данные <code>landmarks.py</code> + Что внутри этого контура расположены и взаимодействуют все основные компоненты навыка { Какой компонент отвечает за обработку входящих webhook-запросов? | type="()" } - <code>landmarks.py</code> - <code>game_engine.py</code> + <code>alice_handler.py</code> { Зачем нужен <code>session_state</code> в архитектуре навыка? | type="()" } - Чтобы хранить изображения для карточек - Чтобы определять формат Mermaid-диаграммы + Чтобы передавать состояние диалога между последовательными запросами пользователя </quiz> n89uagn93kk36l63tdgz8pm3gsmx42a Участник:Krutoi baton/Книги/ЛинАл и ЛинГем 2 30247 166003 2026-04-22T15:28:03Z Krutoi baton 36703 Новая страница: «{{сохранённая_книга}} == Линейная алгебра и геометрия == === Взято с Викиверситета === :[[Определители и их свойства]] :[[Ранг матрицы. Теорема о базисном миноре. Теорема о ранге матрицы]] :[[Исследование разрешимости систем линейных алгебраических уравнений]] :...» 166003 wikitext text/x-wiki {{сохранённая_книга}} == Линейная алгебра и геометрия == === Взято с Викиверситета === :[[Определители и их свойства]] :[[Ранг матрицы. Теорема о базисном миноре. Теорема о ранге матрицы]] :[[Исследование разрешимости систем линейных алгебраических уравнений]] :[[Линейные пространства. Базис]] :[[Евклидовы и унитарные пространства]] :[[Линейные операторы. Матрица оператора. Обратный оператор]] :[[Собственные значения и собственные векторы линейного оператора]] [[Категория:Книги|ЛинАл и ЛинГем]] k1o0ev298fm7ho3d0m41xz1akzm2duv