Викиверситет 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 165933 165861 2026-04-21T09:57:59Z SemyonDudenkov 36586 165933 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 [[Категория:Программирование]] [[Категория:Веб-технологии]] 2mzh85pkx0l5elb5lhgwb3g3r2m5wcd Навыки Алисы/alice-petrozavodsk-game 0 30161 165934 165865 2026-04-21T10:05:07Z SemyonDudenkov 36586 SemyonDudenkov переименовал страницу [[Навыки Алисы: Разработка интерактивного квеста]] в [[Навыки alice-petrozavodsk-game.]] 165865 wikitext text/x-wiki == Навыки Алисы/Разработка интерактивного квеста == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает учебный навык «Petrozavodsk Quiz»: голосовую викторину о достопримечательностях Петрозаводска. == Ссылка на исходный код == * Репозиторий проекта: [https://github.com/SaKuRa5353/alice-petrozavodsk-game alice-petrozavodsk-game]. == Навигация по материалам курса == Полный набор учебных материалов для этого проекта: * [[Навыки Алисы/Установка и локальный запуск|Установка и локальный запуск]] — как настроить окружение и запустить проект локально * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс Диалогами]] — как работает webhook и обмен данными с Алисой * [[Навыки Алисы/Yandex Cloud Functions|Yandex Cloud Functions]] — как развернуть навык в облаке * [[Навыки Алисы/Архитектура навыка (черновик)|Архитектура навыка]] — схема компонентов и их взаимодействия == Цель навыка == Навык должен: * задавать пользователю вопросы о достопримечательностях; * проверять правильность ответа; * давать подсказки по шагам (текстовая и визуальная); * подсчитывать итоговый результат. == Пользовательский сценарий == 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>. == Иллюстрации (после загрузки на Викисклад) == Здесь планируется разместить 2 удачных скриншота диалога: [[File:StartQwiz.png|thumb|Скриншот 1: старт игры, реплика пользователя и первый вопрос.]] [[File:Petrozavodsk-Quiz-dialog-hints2.png|thumb|Скриншот 2: подсказка с изображением и ответ пользователя.]] == Учебный результат == В рамках курса демонстрируются: * проектирование диалогового интерфейса; * разбиение приложения на модули; * хранение и передача состояния диалога между запросами; * настройка логики подсказок и ограничений попыток; * работа с данными предметной области (список достопримечательностей, алиасы, источники); * обработка граничных случаев и защита от ложных совпадений ответов; * тестирование Python-проекта; * регрессионная проверка сценариев после доработок; * публикация webhook-навыка в облаке; * подготовка проектной документации для Викиверситета и Викисклада. == Мини-викторина == # Для чего навыку нужна передача состояния диалога через <code>session_state</code>? # Почему для учебного проекта выбран webhook-подход, а не полностью локальный сценарий? # Какие преимущества даёт наличие автоматических тестов при доработке навыка? 7b61yyhsgbobeigknq8v6v8ott49552 165936 165934 2026-04-21T10:41:34Z SemyonDudenkov 36586 SemyonDudenkov переименовал страницу [[Навыки alice-petrozavodsk-game.]] в [[Навыки alice-petrozavodsk-game]] 165865 wikitext text/x-wiki == Навыки Алисы/Разработка интерактивного квеста == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает учебный навык «Petrozavodsk Quiz»: голосовую викторину о достопримечательностях Петрозаводска. == Ссылка на исходный код == * Репозиторий проекта: [https://github.com/SaKuRa5353/alice-petrozavodsk-game alice-petrozavodsk-game]. == Навигация по материалам курса == Полный набор учебных материалов для этого проекта: * [[Навыки Алисы/Установка и локальный запуск|Установка и локальный запуск]] — как настроить окружение и запустить проект локально * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс Диалогами]] — как работает webhook и обмен данными с Алисой * [[Навыки Алисы/Yandex Cloud Functions|Yandex Cloud Functions]] — как развернуть навык в облаке * [[Навыки Алисы/Архитектура навыка (черновик)|Архитектура навыка]] — схема компонентов и их взаимодействия == Цель навыка == Навык должен: * задавать пользователю вопросы о достопримечательностях; * проверять правильность ответа; * давать подсказки по шагам (текстовая и визуальная); * подсчитывать итоговый результат. == Пользовательский сценарий == 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>. == Иллюстрации (после загрузки на Викисклад) == Здесь планируется разместить 2 удачных скриншота диалога: [[File:StartQwiz.png|thumb|Скриншот 1: старт игры, реплика пользователя и первый вопрос.]] [[File:Petrozavodsk-Quiz-dialog-hints2.png|thumb|Скриншот 2: подсказка с изображением и ответ пользователя.]] == Учебный результат == В рамках курса демонстрируются: * проектирование диалогового интерфейса; * разбиение приложения на модули; * хранение и передача состояния диалога между запросами; * настройка логики подсказок и ограничений попыток; * работа с данными предметной области (список достопримечательностей, алиасы, источники); * обработка граничных случаев и защита от ложных совпадений ответов; * тестирование Python-проекта; * регрессионная проверка сценариев после доработок; * публикация webhook-навыка в облаке; * подготовка проектной документации для Викиверситета и Викисклада. == Мини-викторина == # Для чего навыку нужна передача состояния диалога через <code>session_state</code>? # Почему для учебного проекта выбран webhook-подход, а не полностью локальный сценарий? # Какие преимущества даёт наличие автоматических тестов при доработке навыка? 7b61yyhsgbobeigknq8v6v8ott49552 165938 165936 2026-04-21T10:44:20Z SemyonDudenkov 36586 SemyonDudenkov переименовал страницу [[Навыки alice-petrozavodsk-game]] в [[Навыки Алисы/alice-petrozavodsk-game]] 165865 wikitext text/x-wiki == Навыки Алисы/Разработка интерактивного квеста == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает учебный навык «Petrozavodsk Quiz»: голосовую викторину о достопримечательностях Петрозаводска. == Ссылка на исходный код == * Репозиторий проекта: [https://github.com/SaKuRa5353/alice-petrozavodsk-game alice-petrozavodsk-game]. == Навигация по материалам курса == Полный набор учебных материалов для этого проекта: * [[Навыки Алисы/Установка и локальный запуск|Установка и локальный запуск]] — как настроить окружение и запустить проект локально * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс Диалогами]] — как работает webhook и обмен данными с Алисой * [[Навыки Алисы/Yandex Cloud Functions|Yandex Cloud Functions]] — как развернуть навык в облаке * [[Навыки Алисы/Архитектура навыка (черновик)|Архитектура навыка]] — схема компонентов и их взаимодействия == Цель навыка == Навык должен: * задавать пользователю вопросы о достопримечательностях; * проверять правильность ответа; * давать подсказки по шагам (текстовая и визуальная); * подсчитывать итоговый результат. == Пользовательский сценарий == 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>. == Иллюстрации (после загрузки на Викисклад) == Здесь планируется разместить 2 удачных скриншота диалога: [[File:StartQwiz.png|thumb|Скриншот 1: старт игры, реплика пользователя и первый вопрос.]] [[File:Petrozavodsk-Quiz-dialog-hints2.png|thumb|Скриншот 2: подсказка с изображением и ответ пользователя.]] == Учебный результат == В рамках курса демонстрируются: * проектирование диалогового интерфейса; * разбиение приложения на модули; * хранение и передача состояния диалога между запросами; * настройка логики подсказок и ограничений попыток; * работа с данными предметной области (список достопримечательностей, алиасы, источники); * обработка граничных случаев и защита от ложных совпадений ответов; * тестирование Python-проекта; * регрессионная проверка сценариев после доработок; * публикация webhook-навыка в облаке; * подготовка проектной документации для Викиверситета и Викисклада. == Мини-викторина == # Для чего навыку нужна передача состояния диалога через <code>session_state</code>? # Почему для учебного проекта выбран webhook-подход, а не полностью локальный сценарий? # Какие преимущества даёт наличие автоматических тестов при доработке навыка? 7b61yyhsgbobeigknq8v6v8ott49552 165940 165938 2026-04-21T10:52:18Z SemyonDudenkov 36586 165940 wikitext text/x-wiki == Навыки Алисы/Разработка интерактивного квеста == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает учебный навык «Petrozavodsk Quiz»: голосовую викторину о достопримечательностях Петрозаводска. == Ссылка на исходный код == * Репозиторий проекта: [https://github.com/SaKuRa5353/alice-petrozavodsk-game alice-petrozavodsk-game]. == Навигация по материалам курса == Полный набор учебных материалов для этого проекта: * [[Навыки Алисы/Установка и локальный запуск|Установка и локальный запуск]] — как настроить окружение и запустить проект локально * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс Диалогами]] — как работает webhook и обмен данными с Алисой * [[Навыки Алисы/Yandex Cloud Functions|Yandex Cloud Functions]] — как развернуть навык в облаке * [[Навыки Алисы/Архитектура навыка (черновик)|Архитектура навыка]] — схема компонентов и их взаимодействия == Цель навыка == Навык должен: * задавать пользователю вопросы о достопримечательностях; * проверять правильность ответа; * давать подсказки по шагам (текстовая и визуальная); * подсчитывать итоговый результат. == Пользовательский сценарий == 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>. == Иллюстрации (после загрузки на Викисклад) == Здесь планируется разместить 2 удачных скриншота диалога: [[File:StartQwiz.png|thumb|Скриншот 1: старт игры, реплика пользователя и первый вопрос.]] [[File:Petrozavodsk-Quiz-dialog-hints2.png|thumb|Скриншот 2: подсказка с изображением и ответ пользователя.]] == Учебный результат == В рамках курса демонстрируются: * проектирование диалогового интерфейса; * разбиение приложения на модули; * хранение и передача состояния диалога между запросами; * настройка логики подсказок и ограничений попыток; * работа с данными предметной области (список достопримечательностей, алиасы, источники); * обработка граничных случаев и защита от ложных совпадений ответов; * тестирование Python-проекта; * регрессионная проверка сценариев после доработок; * публикация webhook-навыка в облаке; * подготовка проектной документации для Викиверситета и Викисклада. == Мини-викторина == <quiz display=simple> { Для чего навыку нужна передача состояния диалога через <code>session_state</code>? | type="()" } - Чтобы хранить только настройки интерфейса пользователя - Чтобы автоматически публиковать навык в каталоге + Чтобы сохранять прогресс игры между запросами пользователя { Почему для учебного проекта выбран webhook-подход? | type="()" } - Потому что webhook работает только в локальном CLI - Потому что webhook не требует JSON-формата + Потому что платформа Яндекс.Диалоги отправляет запросы на внешний HTTP-адрес навыка { Какую практическую пользу дают автотесты при доработке навыка? | type="()" } - Нужны только для ускорения загрузки изображений - Полезны только перед публикацией в каталог + Позволяют быстро проверить, что изменения не сломали существующую логику </quiz> q0fh6yqihdyr0kvk8p8d92onkr9fn7p Навыки Алисы/Разработка интерактивного квеста 0 30212 165932 165847 2026-04-20T19:18:19Z AKA MBG 551 StartQwiz.png at Commons 165932 wikitext text/x-wiki == Навыки Алисы/Разработка интерактивного квеста == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает учебный навык «Petrozavodsk Quiz»: голосовую викторину о достопримечательностях Петрозаводска. == Цель навыка == Навык должен: * задавать пользователю вопросы о достопримечательностях; * проверять правильность ответа; * давать подсказки по шагам (текстовая и визуальная); * подсчитывать итоговый результат. == Пользовательский сценарий == 1. Пользователь говорит: «старт». 2. Навык задаёт 5 вопросов по достопримечательностям. 3. После ошибки даётся первая подсказка. 4. После второй ошибки показывается вторая подсказка (изображение, если доступно). 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; * `cloud_function.py` -> `alice_handler.py`; * `alice_handler.py` -> `game_engine.py` + `landmarks.py`; * состояние игры передаётся через `session_state`. == Иллюстрации (после загрузки на Викисклад) == Здесь планируется разместить 2 удачных скриншота диалога: [[Файл:StartQwiz.png|мини|800px|Скриншот 1: старт игры и первый вопрос]] [[Файл:Petrozavodsk-Quiz-dialog-hints2.png|мини|800px|Скриншот 2: подсказка с изображением и правильный ответ]] == Учебный результат == В рамках курса демонстрируются: * проектирование диалогового интерфейса; * разбиение приложения на модули; * хранение и передача состояния диалога между запросами; * настройка логики подсказок и ограничений попыток; * работа с данными предметной области (список достопримечательностей, алиасы, источники); * обработка граничных случаев и защита от ложных совпадений ответов; * тестирование Python-проекта; * регрессионная проверка сценариев после доработок; * публикация webhook-навыка в облаке; * подготовка проектной документации для Викиверситета и Викисклада. oqn2nktnot1d2evtvoj02d85vufhapy 165944 165932 2026-04-21T10:59:30Z SemyonDudenkov 36586 165944 wikitext text/x-wiki == Навыки Алисы/Разработка интерактивного квеста == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает учебный навык «Petrozavodsk Quiz»: голосовую викторину о достопримечательностях Петрозаводска. == Цель навыка == Навык должен: * задавать пользователю вопросы о достопримечательностях; * проверять правильность ответа; * давать подсказки по шагам (текстовая и визуальная); * подсчитывать итоговый результат. == Пользовательский сценарий == 1. Пользователь говорит: «старт». 2. Навык задаёт 5 вопросов по достопримечательностям. 3. После ошибки даётся первая подсказка. 4. После второй ошибки показывается вторая подсказка (изображение, если доступно). 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; * `cloud_function.py` -> `alice_handler.py`; * `alice_handler.py` -> `game_engine.py` + `landmarks.py`; * состояние игры передаётся через `session_state`. == Иллюстрации (после загрузки на Викисклад) == [[Файл:StartQwiz.png|мини|800px|Скриншот 1: старт игры и первый вопрос]] [[Файл:Petrozavodsk-Quiz-dialog-hints2.png|мини|800px|Скриншот 2: подсказка с изображением и правильный ответ]] == Учебный результат == В рамках курса демонстрируются: * проектирование диалогового интерфейса; * разбиение приложения на модули; * хранение и передача состояния диалога между запросами; * настройка логики подсказок и ограничений попыток; * работа с данными предметной области (список достопримечательностей, алиасы, источники); * обработка граничных случаев и защита от ложных совпадений ответов; * тестирование Python-проекта; * регрессионная проверка сценариев после доработок; * публикация webhook-навыка в облаке; * подготовка проектной документации для Викиверситета и Викисклада. == Мини-викторина == <quiz display=simple> { Для чего навыку нужна передача состояния диалога через <code>session_state</code>? | type="()" } - Чтобы хранить только настройки интерфейса пользователя - Чтобы автоматически публиковать навык в каталоге + Чтобы сохранять прогресс игры между запросами пользователя { Почему для учебного проекта выбран webhook-подход? | type="()" } - Потому что webhook работает только в локальном CLI - Потому что webhook не требует JSON-формата + Потому что платформа Яндекс.Диалоги отправляет запросы на внешний HTTP-адрес навыка { Какую практическую пользу дают автотесты при доработке навыка? | type="()" } - Нужны только для ускорения загрузки изображений - Полезны только перед публикацией в каталог + Позволяют быстро проверить, что изменения не сломали существующую логику </quiz> o0nd3gr9kn7nmrn05w008fkgpbgp8c3 Навыки Алисы/Интеграция с Яндекс Диалогами 0 30213 165943 165867 2026-04-21T10:56:14Z SemyonDudenkov 36586 165943 wikitext text/x-wiki == Навыки Алисы/Интеграция с Яндекс Диалогами == '''Подстраница курса «Навыки Алисы».''' Эта подстраница показывает, как навык обменивается данными с платформой Яндекс.Диалоги. Когда пользователь пишет или говорит фразу, Яндекс.Диалоги отправляют HTTP-запрос (webhook) на сервер навыка. Сервер обрабатывает запрос и возвращает JSON-ответ, который Алиса озвучивает или показывает пользователю. == Ссылка на исходный код == * Репозиторий проекта: [https://github.com/SaKuRa5353/alice-petrozavodsk-game alice-petrozavodsk-game]. == Другие материалы курса == * [[Навыки Алисы/Разработка интерактивного квеста|Обзор проекта Petrozavodsk Quiz]] * [[Навыки Алисы/Установка и локальный запуск|Установка и локальный запуск]] * [[Навыки Алисы/Yandex Cloud Functions|Развёртывание в облаке]] * [[Навыки Алисы/Архитектура навыка (черновик)|Архитектура навыка]] == Минимальный 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> cf6w7esbteuti4bjiu0i8k8n1u3paa0 165945 165943 2026-04-21T11:02:58Z SemyonDudenkov 36586 165945 wikitext text/x-wiki == Навыки Алисы/Интеграция с Яндекс Диалогами == '''Подстраница курса «Навыки Алисы».''' Эта подстраница показывает, как навык обменивается данными с платформой Яндекс.Диалоги. Когда пользователь пишет или говорит фразу, Яндекс.Диалоги отправляют HTTP-запрос (webhook) на сервер навыка. Сервер обрабатывает запрос и возвращает JSON-ответ, который Алиса озвучивает или показывает пользователю. == Другие материалы курса == * [[Навыки Алисы/Разработка интерактивного квеста|Обзор проекта Petrozavodsk Quiz]] * [[Навыки Алисы/Установка и локальный запуск|Установка и локальный запуск]] * [[Навыки Алисы/Yandex Cloud Functions|Развёртывание в облаке]] * [[Навыки Алисы/Архитектура навыка (черновик)|Архитектура навыка]] == Минимальный 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 Проверка навыка в каталоге Яндекс.Диалогов] n23i84780bz0nhbhhq4litxojhqcr8k Навыки Алисы/Установка и локальный запуск 0 30215 165941 165866 2026-04-21T10:53:23Z SemyonDudenkov 36586 165941 wikitext text/x-wiki == Навыки Алисы/Установка и локальный запуск == '''Подстраница курса «Навыки Алисы».''' Эта подстраница описывает локальную установку и запуск учебного проекта «Petrozavodsk Quiz» (голосовой навык Алисы). == Ссылка на исходный код == * Репозиторий проекта на GitHub: [https://github.com/SaKuRa5353/alice-petrozavodsk-game alice-petrozavodsk-game]. == Другие материалы курса == * [[Навыки Алисы/Разработка интерактивного квеста|Обзор проекта Petrozavodsk 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> m9vvponc9yenu36ke9dckf9euxb3tc9 Навыки Алисы/Архитектура навыка (черновик) 0 30222 165942 165869 2026-04-21T10:55:22Z SemyonDudenkov 36586 165942 wikitext text/x-wiki == Навыки Алисы/Архитектура навыка == '''Черновик схемы для согласования с преподавателем перед публикацией на Викискладе.''' == Другие материалы курса == * [[Навыки Алисы/Разработка интерактивного квеста|Обзор проекта Petrozavodsk Quiz]] * [[Навыки Алисы/Установка и локальный запуск|Установка и локальный запуск]] * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс Диалогами]] * [[Навыки Алисы/Yandex Cloud Functions|Развёртывание в облаке]] == Mermaid-код == <syntaxhighlight lang="text"> flowchart LR U[Пользователь] subgraph A[Алиса / Яндекс.Диалоги] direction LR CF[Yandex Cloud Function\ncloud_function.handler] --> H[Webhook-обработчик\nalice_handler.handler] H <--> G[Игровой движок\ngame_engine.py] G <-->|чтение данных| L[Данные достопримечательностей\nlandmarks.py] H <--> S[(session_state)] end U -->|реплика| A A -->|ответ навыка| U </syntaxhighlight> == Пояснение == * Пользователь взаимодействует с навыком через Алису. * Внутри блока «Алиса / Яндекс.Диалоги» показаны программные части навыка. * Обработчик <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> l6dh7fyc7c1id2640c953z68u5pib42 165946 165942 2026-04-21T11:19:11Z SemyonDudenkov 36586 /* Навыки Алисы/Архитектура навыка */ 165946 wikitext text/x-wiki == Навыки Алисы/Архитектура навыка == [[File:Mermaid-diagram-2026-04-21-141042.png|thumb|1200px|Диаграмма архитектуры учебного навыка Алисы «Petrozavodsk Quiz»: взаимодействие пользователя, Яндекс.Диалогов, webhook-обработчика, игрового движка, данных и session_state]] == Другие материалы курса == * [[Навыки Алисы/Разработка интерактивного квеста|Обзор проекта Petrozavodsk Quiz]] * [[Навыки Алисы/Установка и локальный запуск|Установка и локальный запуск]] * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс Диалогами]] * [[Навыки Алисы/Yandex Cloud Functions|Развёртывание в облаке]] == Mermaid-код == <syntaxhighlight lang="text"> flowchart LR U[Пользователь] subgraph A[Алиса / Яндекс.Диалоги] direction LR CF[Yandex Cloud Function\ncloud_function.handler] --> H[Webhook-обработчик\nalice_handler.handler] H <--> G[Игровой движок\ngame_engine.py] G <-->|чтение данных| L[Данные достопримечательностей\nlandmarks.py] H <--> S[(session_state)] end U -->|реплика| A A -->|ответ навыка| U </syntaxhighlight> == Пояснение == * Пользователь взаимодействует с навыком через Алису. * Внутри блока «Алиса / Яндекс.Диалоги» показаны программные части навыка. * Обработчик <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> 4dwb4mve9yikvpjhaslr5rwaa5i4igw 165947 165946 2026-04-21T11:20:31Z SemyonDudenkov 36586 /* Другие материалы курса */ 165947 wikitext text/x-wiki == Навыки Алисы/Архитектура навыка == [[File:Mermaid-diagram-2026-04-21-141042.png|thumb|1200px|Диаграмма архитектуры учебного навыка Алисы «Petrozavodsk Quiz»: взаимодействие пользователя, Яндекс.Диалогов, webhook-обработчика, игрового движка, данных и session_state]] == Другие материалы курса == * [[Навыки Алисы/Разработка интерактивного квеста|Обзор проекта Petrozavodsk Quiz]] * [[Навыки Алисы/Установка и локальный запуск|Установка и локальный запуск]] * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс Диалогами]] * [[Навыки Алисы/Yandex Cloud Functions|Развёртывание в облаке]] == Mermaid-код == <syntaxhighlight lang="text"> flowchart LR U[Пользователь] subgraph A[Алиса / Яндекс.Диалоги] direction LR CF[Yandex Cloud Function\ncloud_function.handler] --> H[Webhook-обработчик\nalice_handler.handler] H <--> G[Игровой движок\ngame_engine.py] G <-->|чтение данных| L[Данные достопримечательностей\nlandmarks.py] H <--> S[(session_state)] end U -->|реплика| A A -->|ответ навыка| U </syntaxhighlight> == Пояснение == * Пользователь взаимодействует с навыком через Алису. * Внутри блока «Алиса / Яндекс.Диалоги» показаны программные части навыка. * Обработчик <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> gihn0k0xc7np7w0n47fygv1yp6sewm3 165948 165947 2026-04-21T11:23:02Z SemyonDudenkov 36586 /* Навыки Алисы/Архитектура навыка */ 165948 wikitext text/x-wiki == Навыки Алисы/Архитектура навыка == [[File:Mermaid-diagram-2026-04-21-141042.png|none|thumb|1200px|Диаграмма архитектуры учебного навыка Алисы «Petrozavodsk Quiz»: взаимодействие пользователя, Яндекс.Диалогов, webhook-обработчика, игрового движка, данных и session_state]] {{clear}} == Другие материалы курса == == Другие материалы курса == * [[Навыки Алисы/Разработка интерактивного квеста|Обзор проекта Petrozavodsk Quiz]] * [[Навыки Алисы/Установка и локальный запуск|Установка и локальный запуск]] * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс Диалогами]] * [[Навыки Алисы/Yandex Cloud Functions|Развёртывание в облаке]] == Mermaid-код == <syntaxhighlight lang="text"> flowchart LR U[Пользователь] subgraph A[Алиса / Яндекс.Диалоги] direction LR CF[Yandex Cloud Function\ncloud_function.handler] --> H[Webhook-обработчик\nalice_handler.handler] H <--> G[Игровой движок\ngame_engine.py] G <-->|чтение данных| L[Данные достопримечательностей\nlandmarks.py] H <--> S[(session_state)] end U -->|реплика| A A -->|ответ навыка| U </syntaxhighlight> == Пояснение == * Пользователь взаимодействует с навыком через Алису. * Внутри блока «Алиса / Яндекс.Диалоги» показаны программные части навыка. * Обработчик <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> c7dvvbof477em9f1r070ptvoxj844ud 165949 165948 2026-04-21T11:23:16Z SemyonDudenkov 36586 /* Другие материалы курса */ 165949 wikitext text/x-wiki == Навыки Алисы/Архитектура навыка == [[File:Mermaid-diagram-2026-04-21-141042.png|none|thumb|1200px|Диаграмма архитектуры учебного навыка Алисы «Petrozavodsk Quiz»: взаимодействие пользователя, Яндекс.Диалогов, webhook-обработчика, игрового движка, данных и session_state]] {{clear}} == Другие материалы курса == * [[Навыки Алисы/Разработка интерактивного квеста|Обзор проекта Petrozavodsk Quiz]] * [[Навыки Алисы/Установка и локальный запуск|Установка и локальный запуск]] * [[Навыки Алисы/Интеграция с Яндекс Диалогами|Интеграция с Яндекс Диалогами]] * [[Навыки Алисы/Yandex Cloud Functions|Развёртывание в облаке]] == Mermaid-код == <syntaxhighlight lang="text"> flowchart LR U[Пользователь] subgraph A[Алиса / Яндекс.Диалоги] direction LR CF[Yandex Cloud Function\ncloud_function.handler] --> H[Webhook-обработчик\nalice_handler.handler] H <--> G[Игровой движок\ngame_engine.py] G <-->|чтение данных| L[Данные достопримечательностей\nlandmarks.py] H <--> S[(session_state)] end U -->|реплика| A A -->|ответ навыка| U </syntaxhighlight> == Пояснение == * Пользователь взаимодействует с навыком через Алису. * Внутри блока «Алиса / Яндекс.Диалоги» показаны программные части навыка. * Обработчик <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> mkjxqj6272ce182sevd6evgk3ahkom7 Обсуждение участника:Maratmaratmarat222 3 30236 165930 2026-04-20T16:27:23Z New user message 3844 Добавление [[Template:Welcome|приветствия]] на страницу обсуждения нового участника 165930 wikitext text/x-wiki {{Template:Welcome|realName=|name=Maratmaratmarat222}} -- [[Участник:New user message|New user message]] ([[Обсуждение участника:New user message|обсуждение]]) 16:27, 20 апреля 2026 (UTC) dytqwnl9jq6lu8wjcb0g7qj3es6mcee Навыки Алисы: Разработка интерактивного квеста 0 30238 165935 2026-04-21T10:05:07Z SemyonDudenkov 36586 SemyonDudenkov переименовал страницу [[Навыки Алисы: Разработка интерактивного квеста]] в [[Навыки alice-petrozavodsk-game.]] 165935 wikitext text/x-wiki #перенаправление [[Навыки alice-petrozavodsk-game.]] 7xsxcdwlvfq67dg6mxfd1q0s2gbcfel Навыки alice-petrozavodsk-game. 0 30239 165937 2026-04-21T10:41:34Z SemyonDudenkov 36586 SemyonDudenkov переименовал страницу [[Навыки alice-petrozavodsk-game.]] в [[Навыки alice-petrozavodsk-game]] 165937 wikitext text/x-wiki #перенаправление [[Навыки alice-petrozavodsk-game]] fk528zffv8a6do7gl2j2igg6oqaz3zd Навыки alice-petrozavodsk-game 0 30240 165939 2026-04-21T10:44:20Z SemyonDudenkov 36586 SemyonDudenkov переименовал страницу [[Навыки alice-petrozavodsk-game]] в [[Навыки Алисы/alice-petrozavodsk-game]] 165939 wikitext text/x-wiki #перенаправление [[Навыки Алисы/alice-petrozavodsk-game]] pvzreh5szycbqd6jisl5soh553gyrnd