Что за сессия
Инженер команды Swift Intelligence Frameworks Джастин берёт реальное SwiftUI-приложение CometCal (календарь с космическим оформлением) и в режиме code-along делает его полностью доступным для Siri. Исходники проекта доступны на сайте Apple Developer.
Что умеет Siri после интеграции
Вот конкретные сценарии, которые демонстрируются в сессии:
- «Кто придёт на мой пикник?» — Siri находит событие и показывает список гостей
- «Перенеси на полдень… нет, на 11:30» — редактирует время, запрашивает подтверждение, рендерит кастомный view
- «Напиши всем, кто идёт на пикник, про изменения — с эмодзи» — Siri составляет сообщение, ждёт «Отправь»
- «Что мне нужно взять на пикник?» — читает заметку события и находит ответ (шоколадный торт 🎂)
- «Сколько ехать туда на машине?» — берёт локацию события и даёт оценку времени
Как это работает
Siri интегрируется с приложениями через фреймворк App Intents. Ключевая концепция этой сессии — App Schemas: они описывают контент и действия приложения в терминах, которые Siri уже понимает. Никаких обучающих фраз и NLP-разметки на твоей стороне.
App Schemas сгруппированы по App Schema Domains. Для CometCal используется Calendar domain — он покрывает события, календари, участников и действия над ними.
Шаги интеграции из code-along
1. Создать сущность CalendarEntity
Создаём новый Swift-файл CalendarEntity, импортируем AppIntents. В редакторе набираем calendar_ — Xcode через autocomplete предлагает все схемы Calendar domain. Выбираем calendar_calendar, и сниппет подставляет:
- макрос
@AppEntity - свойства
DisplayRepresentation- заглушки для query
2. Настроить тип id и IndexedEntity
Устанавливаем тип id как UUID, чтобы совпадал с моделью данных. Затем подписываем сущность под протокол IndexedEntity — это позволяет донатить сущности через индекс Spotlight для семантического поиска.
Когда сущность задонирована, Siri может её найти по имени, по свойству или по контексту — без кастомного property query.
3. Конвертация между моделью и сущностью
Добавляем инициализатор CalendarEntity, который маппит данные из CalendarModel, и convenience-свойство .entity на CalendarModel для обратного преобразования.
4. Подключить слой данных через @Dependency
В query добавляем @Dependency-свойство для CalendarManager — это data layer CometCal, работающий поверх SwiftData.
Что почитать рядом
- «Build intelligent Siri experiences with App Schemas» — концепции фреймворка и то, как Apple Intelligence работает с контентом и действиями
- «Get to know App Intents» — основы: intents, entities, queries и их связь с Siri и Shortcuts
Итого
Подход с App Schemas убирает большую часть ручной работы по интеграции с Siri: ты описываешь структуру данных в терминах домена, а Apple Intelligence берёт на себя понимание естественного языка. CometCal из «приложения только для экрана» превращается в полноценного участника разговора с Siri — буквально за несколько шагов в Xcode.

