Siri может вызвать ваше приложение. Какое действие открыть первым?
В ноябрьской версии для разработчиков Apple подключает Siri AI к App Intents. На примере поиска доставки разбираем, как проектировать действия с понятным контекстом, подтверждением и результатом.
Посылка опаздывает. Покупатель хочет знать, привезут ли её в офис до его ухода, но за полезным ответом нужно пройти через вход в аккаунт, список заказов и страницу отслеживания. Запрос обычными словами может сократить этот путь, если приложение предоставляет ассистенту однозначный способ найти нужное отправление.
3 ноября Apple открыла предварительный доступ к Siri AI для разработчиков App Intents в бета-версиях систем, включая iOS 27.3. Приложения можно связать с запросами, которые используют личный контекст, информацию с экрана и связанные действия. Apple планирует предоставить интеграцию пользователям позже, а приём приложений в App Store ожидается весной. Разработчики могут отладить поведение действия до того, как люди начнут на него рассчитывать.

Siri в 2014 году. Фото Kārlis Dambrāns, кадрировано и уменьшено, CC BY 2.0. Источник изображения · Лицензия.
Поручите ассистенту одно действие с узнаваемым результатом
Поиск через App Intent. Оригинальная иллюстрация Telli.sh.
App Intent представляет операцию, которую приложение готово выполнить. Например, приложение доставки может предоставить поиск статуса. На вход можно передать сущность отправления, которую приложение умеет однозначно находить. В результате могут появиться идентификатор отправления, последний статус и время обновления. Приложение управляет данными и решает, что разрешено видеть вошедшему пользователю.
Так взаимодействие остаётся коротким и приводит к конкретному ответу. Если у одного аккаунта три активные доставки, ассистенту нужны сведения, которые позволят их различить. Помогут трек-номер, краткое название или знакомый пункт назначения. Если фразе «моя посылка» соответствуют несколько отправлений, стоит задать уточняющий вопрос.
| Запрос | Что нужно приложению | Что должен получить пользователь |
|---|---|---|
| Где мой заказ? | Аккаунт и идентификатор отправления | Статус, время обновления и ссылку на подробности |
| У меня есть бронь на завтра? | Аккаунт, дату и соответствующий часовой пояс | Время, место и текущее состояние брони |
| Перенеси мою бронь на 19:00 | Бронь, запрошенное изменение и доступность времени | Понятный этап подтверждения и итог |
| Повтори тот же заказ | Товар, цену, адрес и права аккаунта | Сводку заказа с условиями до принятия обязательства |
Первые две строки — хороший старт. Они обычно дают полезный ответ без создания транзакции. Изменение брони требует других условий. Нужное время может быть недоступно, заведение может взять плату, а перевод между часовыми поясами — изменить дату. Эти условия следует отразить в действии приложения и его ответе.
Приложение должно проверять права в момент выполнения действия
Изменение через App Intent. Оригинальная иллюстрация Telli.sh.
Ассистент может интерпретировать фразу и найти подходящее действие. Приложению всё равно нужно проверить, кто обращается, к какому объекту у этого человека есть доступ и допустима ли операция. Перенесите в новый путь те же проверки, что использует существующий интерфейс. Запрос обычными словами может поступить, когда пользователь вошёл в другой аккаунт, устройство заблокировано или срок сеанса истёк.
Перед финансовым обязательством стоит ещё раз показать сумму и плательщика. При изменении доставки покажите адрес до подтверждения. Если сервер не знает, завершился ли запрос успешно, приложение должно сообщить состояние, которое человек сможет уточнить, без предложения отправить такой же запрос повторно. Эти правила знакомы тем, кто разрабатывал форму оплаты. При голосовом взаимодействии или в чате ту же ясность иногда нужно уместить в гораздо меньший объём.
Возьмём простой пример. Человек просит ещё раз заказать пачку кофе. Первый заказ мог быть оформлен по временной скидке, адрес доставки мог измениться, а товар может продаваться в нескольких размерах упаковки. Продуманный интерфейс до оформления называет актуальный товар, размер, цену и адрес. После покупки он также позволяет легко найти квитанцию.
Контекст помогает выбрать правильную отправную точку. Должно быть ясно, какие сведения из него действительно использовало приложение. Подтверждение «заказ на экране» может сработать, когда виден один заказ. Если элементов несколько, назовите конкретный выбор. Дайте человеку возможность исправить интерпретацию до выполнения действия.
Последовательность действий должна показывать фактический итог
Apple также описывает навыки, которые объединяют несколько действий, и поддержку сущностей в семантическом индексе Spotlight. Вместе эти возможности могут сократить число экранов между запросом и результатом. Даже небольшая ошибка в отдельной операции при этом важнее, потому что результат одного действия может стать входом для следующего.
Представьте запрос найти предстоящую бронь и изменить время. Поиск может завершиться успешно, а изменение — нет. Сообщите об обоих результатах. Если сказать, что бронь найдена и время осталось прежним, у человека будет полезная информация и понятный следующий шаг. Общее сообщение об успехе скрыло бы неудачу, а сообщение об ошибке — успешный поиск.
Практической цепочке часто нужно несколько типов результата. Один шаг может вернуть подходящий вариант. Следующий — запросить выбор или подтверждение. Последний — показать квитанцию или статус ожидания. При построении цепочки проверьте и случай, когда человек передумал на полпути, и тот, когда сетевой запрос занимает больше времени, чем удобно ждать.
Используйте стабильный внутренний идентификатор записи. Названия обычными словами меняются, а у разных объектов они могут быть похожими. Устойчивый ID позволяет приложению убедиться, что оно обработало нужный объект, и вернуть понятное описание. Сохраните ссылку на исходную запись, чтобы пользователь мог открыть правильный экран приложения и посмотреть подробности.
Попробуйте предварительную версию с действием, которое можно проверить вручную
- Сверьтесь с анонсом Apple для разработчиков, чтобы узнать поддерживаемую бета-версию ОС, устройство и язык. Используйте тестовый аккаунт и тестовые данные. Apple указывает корейский среди поддерживаемых языков и описывает ограничения по устройству и региону.
- Выберите одну операцию чтения, которой люди уже регулярно пользуются. Запишите привычный путь в интерфейсе и точный ожидаемый ответ при успехе.
- По документации Apple App Intents опишите действие и сущность, с которой оно работает. Решите, что должно произойти, если запрос находит ноль, одну или несколько записей.
- Проверьте обычные и неоднозначные случаи. Добавьте отсутствие аккаунта, истёкший сеанс, повторяющиеся названия и недоступную сеть. Сверяйте каждый результат с текущим экраном приложения.
- Для будущей операции изменения отметьте, где пользователь видит объект, условия и итог. Добавьте тест, который повторяет запрос после тайм-аута и проверяет, что приложение корректно обрабатывает повтор.
- Считайте выпуск для пользователей и предварительный доступ для разработчиков разными этапами. Планируя выпуск в App Store, заново проверьте актуальные правила и сведения о подаче приложения.
Здесь удобно проверить вариации языка. Приложение доставки может начать с фраз, которые клиенты используют в обращениях в поддержку. Некоторые называют дату, другие — магазин или место доставки. Посмотрите, как действие запрашивает недостающие сведения, если фраза неполная. Хорошее уточнение приближает человека к ответу.
Подберите подходящее место для показа результата
Apple выделяет сущности приложений в Spotlight, действия конкретного приложения, сниппеты и навыки, которые собирают действия вместе. Сервис доставки может выбрать, какой способ подходит для конкретного вопроса. Сущность в поиске помогает распознать заказ. Действие обрабатывает запрос с учётом текущего аккаунта. Карточка показывает результат с первого взгляда. Последовательность нужна, когда поиск заказа — лишь начало.
В карточке статуса можно показать город назначения, текущее состояние и время последнего обновления от перевозчика. Уместная степень детализации зависит от того, где появится карточка и заблокировано ли устройство. Проверьте экран, не рассчитывая на то, что человек услышит устное уведомление. Проверьте голосовую версию, не перекладывая важное предупреждение на экран. Одни и те же исходные данные должны быть понятны в обоих случаях.
Руководство Apple также объясняет, как ассистент выбирает приложение. Для пользовательского действия в фоне требуется назвать приложение, кроме перечисленных далее контекстов. Нужный контекст может предоставить приложение на переднем плане, активная Live Activity или разговор, в котором приложение уже назвали. Начните с явного вызова, чтобы убедиться, что действие вообще работает. Затем повторите запрос с домашнего экрана, при открытом другом приложении и посреди продолжающегося разговора. Запишите результат в каждом случае.
Канал распространения требует отдельной проверки
В руководстве описаны тесты на устройствах со сборками, подписанными для разработки, и тесты через внутренний TestFlight. В нём сказано, что внешние сборки TestFlight и сборки App Store не поддерживают эти интеграции в рамках предварительного доступа. Это важно, если менеджер продукта просит провести пилот с клиентами. Успешный показ в сборке для разработки сам по себе не подтверждает, что клиент сможет включить ту же функцию в сборке из магазина.
Apple указывает совместимое с Apple Intelligence оборудование и шесть языков, в том числе корейский. Действуют также региональные, возрастные и серверные ограничения. Для Siri AI Apple перечисляет бета-версии 27.3 iOS, iPadOS, macOS, watchOS и visionOS. В первоначальной программе для сторонних разработчиков названы iOS, iPadOS, macOS и visionOS. Различайте эти области поддержки при распределении тестов. Точный отчёт поможет следующему инженеру понять, связана ли видимая ошибка с действием, каналом тестирования или устройством.
Во внутренней проверке выделите по строке на сочетание запроса, устройства, языка, канала распространения и результата. Начните со случая, который заведомо работает. Для поиска статуса на корейском сравните короткую разговорную фразу с запросом, где указаны магазин или дата отслеживания. Если оба приводят к одной записи, взаимодействие справилось с полезной вариацией. Если один запрос раскрывает чужой заказ, прекратите проверку и исправьте авторизацию там, где принимается решение о доступе.
В заключительной проверке предусмотрите обычную передачу управления человеку. Если действие находит бронь, но не может её перенести, покажите доступное время и откройте подходящий экран. Если перенос возможен, покажите итог и дайте человеку позднее найти квитанцию в приложении. В обоих случаях он получает конкретный следующий шаг.
Быстрый доступ завоёвывает доверие по одному действию
Привлекательность интеграции с Siri AI в том, что самая полезная функция приложения становится ближе тому, кому она нужна. Узкое, проверяемое действие может быть ценным и без большого каталога интеграций. Для компании, которая умеет правильно показывать статус доставки, это хороший старт.
Добавляя действия, применяйте один и тот же стандарт. Человек должен понять, что приложение нашло, на что попросило разрешение и что произошло дальше. Эта ясность особенно важна, если запрос проходит через несколько сервисов или пользователь так и не открывает окно исходного приложения.
Источники
- Анонс предварительной версии Siri AI от 3 ноября на Apple Developer
- Документация Apple по App Intents
- Руководство Apple по настройке и тестированию предварительной версии
- Документация Apple по Spotlight и App Intents
Чтобы сохранять рабочие разговоры и решения и быстро находить их, создайте аккаунт Telli.sh.