Основные сведения о понятиях SiriKit

В этой статье рассматриваются основные понятия, необходимые для работы с SiriKit в приложении Xamarin.iOS.

Новое в iOS 10, SiriKit позволяет приложению Xamarin.iOS предоставлять службы, доступные пользователю с помощью Siri и приложения Карты на устройстве iOS. Эта функция предоставляется в одном или нескольких расширениях приложений с помощью новых платформ пользовательского интерфейса "Намерения и намерения".

SiriKit позволяет приложению iOS предоставлять службы, доступные пользователю с помощью Siri и приложения Карты на устройстве iOS с помощью расширений приложений и новых платформ пользовательского интерфейса "Намерения и намерения".

Siri работает с понятием "Домены", группами известных действий для связанных задач. Каждое взаимодействие, которое приложение имеет с Siri, должно попасть в один из известных доменов службы следующим образом:

  • Звук или видеозвонок.
  • Бронирование поездки.
  • Управление тренировками.
  • (Проекты разработки с открытым кодом в .NET).
  • Поиск фотографий.
  • Отправка или получение платежей.

Когда пользователь отправляет запрос Siri с участием одной из служб расширения приложения, SiriKit отправляет расширение объект Intent , описывающий запрос пользователя вместе с любыми вспомогательными данными. Затем расширение приложения создает соответствующий объект Ответа для заданного намерения, подробные сведения о том, как расширение может обрабатывать запрос.

Расширения пользовательского интерфейса "Намерения и намерения"

Как Siri, так и приложение Карты взаимодействуют со службами приложения с помощью двух различных типов расширений приложений:

  • Расширение "Намерения". Предоставляет Siri и Карты содержимое приложения и выполняет задачи, необходимые для выполнения любых поддерживаемых намерений.
  • Расширение пользовательского интерфейса намерений — предоставляет пользовательский интерфейс, который будет отображаться для содержимого приложения внутри Siri или Карты.

Приложение должно предоставить расширение "Намерения" для поддержки SiriKit, и оно отвечает за предоставление сведений, которые Siri и Карты могут представлять пользователю и обрабатывать намерения.

Создание расширения пользовательского интерфейса "Намерения" является необязательным, так как Siri обычно обрабатывает все взаимодействие с пользователем и имеет стандартный встроенный пользовательский интерфейс для представления сведений в каждом из поддерживаемых доменов. Предоставляя расширение пользовательского интерфейса "Намерения", приложение может использовать платформу пользовательского интерфейса намерения для представления полнофункциональные пользовательские интерфейсы с фирменной символикой приложения и дополнительными сведениями.

Siri и роль приложения Карты

Речовые запросы пользователя обрабатываются и семантические анализируются Siri, которая преобразует эти запросы в действия намерения, которые могут обрабатывать расширения намерений.

Карты использует расширения намерений приложения для отображения сведений в интерфейсе карты в ответ на действия пользователя. Например, запрашивать близлежащие рестораны или получать отзывы о ресторане приложения.

Siri и Карты управлять всеми взаимодействиями пользователя и отображать результаты с помощью стандартного системного интерфейса. Роль расширений приложений в основном предназначена для предоставления отображаемых данных. При необходимости приложение может предоставить расширение пользовательского интерфейса "Намерения" и представить пользовательский интерфейс для улучшения системного интерфейса по умолчанию.

Взаимодействие с Siri Via SiriKit

В этом разделе представлен обзор того, как SiriKit позволяет пользователю взаимодействовать с приложением с помощью Siri. Для этого примера мы будем использовать поддельные приложение MonkeyChat:

Значок MonkeyChat

MonkeyChat хранит свою собственную контактную книгу друзей пользователя, каждая из которых связана с именем экрана (например, Bobo), и позволяет пользователю отправлять текстовые чаты каждому другу по имени экрана.

Существует множество способов, которым пользователь может инициировать взаимодействие с приложением, так как разные пользователи могут выполнять один и тот же запрос во многих разных формах.

Например, если пользователь хотел отправить сообщение своему другу Бобо, он может иметь следующий разговор с Siri:

Пользователь: Эй Siri, отправьте сообщение MonkeyChat.
Сири: Кому?
Пользователь: Бобо.
Сири: Что вы хотите сказать Бобо?
Пользователь: Отправьте больше бананов.

Другой пользователь может выполнить тот же запрос с другой беседой:

Пользователь: отправьте сообщение в Bobo в MonkeyChat.
Сири: Что вы хотите сказать Бобо?
Пользователь: Отправьте больше бананов.

И другой пользователь может сделать еще более короткий запрос:

Пользователь: MonkeyChat Bobo пожалуйста, отправьте больше бананов.
Сири: Ок, отправляя сообщение, отправьте больше бананов в Бобо на Обезьянье.

Или даже сделать один и тот же запрос на другом языке:

Пользователь: MonkeyChat Bobo s'il vous plaît envoyer плюс de bananes.
Siri: Oui, envoi message s'il vous plaît envoyer плюс de bananes à Bobo sur Monkeychat.

Еще один пользователь может быть очень подробным в своем разговоре:

Пользователь: Эй Siri, вы можете сделать мне пользу и запустить приложение MonkeyChat, чтобы отправить текст с сообщением, отправьте больше бананов.
Сири: Кому?
Пользователь: Мой лучший приятель Бобо.

Кроме того, существует множество способов ответа Siri на запрос, некоторые из них зависят от того, как был выполнен запрос:

  • Удерживая кнопку "Главная" - Siri предоставит больше визуальных ответов с ограниченными словесными отзывами.
  • По "Эй Siri" - Siri будет более словесным и обеспечить меньше визуальных ответов.

Siri также настроен для удовлетворения потребностей пользователя в специальных возможностях и будет взаимодействовать и реагировать на эти потребности.

Независимо от того, как выполняется запрос или как Siri отвечает на запрос, Siri обрабатывает беседу с пользователем и приложением (через его расширения) предоставляет функциональные возможности.

Когда пользователь выполняет словесный запрос Siri, выполните следующие действия:

Действия, которые будут выполняться Siri

  1. Во-первых, Siri принимает звук речи пользователя и преобразует его в текст.
  2. Затем текст преобразуется в намерение, структурированное представление запроса пользователя.
  3. В соответствии с намерением Siri выполнит действие для выполнения запроса пользователя.
  4. Наконец, Siri будет представлять ответы (как визуальные, так и словесные) пользователю на основе принятых действий.

Существует три основных способа участия приложения в беседе пользователя с Siri:

Три основных способа участия приложения в беседе пользователей с Siri

  1. Словарь — это то, как приложение сообщает Siri словам, которые он должен знать, чтобы взаимодействовать с ним.
  2. Логика приложения — это действия и ответы, которые приложение будет принимать на основе заданных намерений.
  3. Пользовательский интерфейс — это необязательный пользовательский интерфейс, в который приложение может дать ответы.

Пример

Учитывая приведенные выше сведения, изучите, как будет взаимодействовать следующая беседа с приложением MonkeyChat:

Пользователь: Эй Siri, отправьте сообщение Бобо в MonkeyChat.
Сири: Что вы хотите сказать Бобо?
Пользователь: Отправьте больше бананов.

Первая роль, которую приложение принимает в беседе, — помочь Siri понять речь пользователя:

Помощь Siri в понимании речи пользователей

Siri не имеет имени "Bobo" в своей базе данных, но приложение делает и предоставляет общий доступ к этой информации с Siri через свой словарь. Приложение также помогает Siri распознать, что Бобо является получателем, так как он указал их в Siri в качестве контакта.

Siri знает, что для отправки сообщения требуется больше, чем только получатель, поэтому он быстро проверка с расширением приложения, чтобы узнать, требуется ли сообщение содержимого. Так как MonkeyChat делает, Siri ответит пользователю на вопрос: "Что вы хотите сказать Бобо?"

В приведенном выше примере пользователь ответил: "Отправьте больше бананов", которое Siri будет упаковать в структурированное намерение:

Siri объединит ответ пользователя в структурированное намерение

Структурированное намерение будет содержать следующие сведения:

  • Домен: сообщения
  • Намерение: sendMessage
  • Получатель: Бобо
  • Содержимое: Отправьте больше бананов

Каждый домен имеет набор известных действий , которые могут выполняться внутри них, и на основе домена и действия, ноль ко многим параметрам может быть включен в намерение, отправленное приложению.

Затем намерение отправляется в расширение приложения для обработки. В результате обработки намерения приложение создаст приложение IntentResponse , которое будет упаковано с намерением и включает параметры, описывающие, что приложение сделал с намерением.

Каждый объект IntentResponse также будет включать код ответа, который сообщает Siri, если приложение могло завершить запрос или нет. Некоторые домены имеют очень конкретные коды ответов на ошибки, которые также могут быть отправлены.

Наконец, НамерениеResponse будет включать ( NSUserActivity например, те, которые использовались для поддержки Hand Off). Будет NSUserActivity использоваться для запуска приложения, если ответ требует, чтобы они покинули среду Siri и введите приложение, чтобы завершить его.

Siri автоматически создаст соответствующее NSUserActivity для запуска приложения и получения, где пользователь ушел в среду Siri. Однако приложение может предоставлять собственные NSUserActivity настраиваемые сведения, если это необходимо.

После того как приложение обработало намерение и вернуло ответ на Siri, он затем представляет результаты пользователю (как словесно, так и визуально):

Результаты, представленные пользователю как словесно, так и визуально

Siri имеет несколько встроенных пользовательских интерфейсов ответа для каждого из доменов, доступных приложению. Тем не менее, так как MonkeyChat предоставил необязательное расширение пользовательского интерфейса намерения, оно используется для представления результатов беседы пользователю в приведенном выше примере.

Жизненный цикл намерения

При работе с намерениями необходимо выполнить три основных задачи расширения приложения:

Жизненный цикл намерения

  1. Приложение должно разрешать каждый параметр в событии. В результате приложение будет вызывать несколько раз (один раз за каждый параметр), а иногда и несколько раз в одном параметре, пока приложение не согласится с запрошенным приложением.
  2. Приложение должно подтвердить , что оно может обрабатывать запрошенные намерения и сообщать Siri о ожидаемом результате.
  3. Наконец, приложение должно обработать намерение и выполнить шаги для достижения запрошенного результата.

Этап разрешения

Этап "Разрешение" помогает Siri понимать значения, предоставленные пользователем, и гарантирует, что пользователь фактически означает, что произойдет, когда намерение обрабатывается приложением.

Этот этап также позволяет приложению влиять на поведение Siri во время беседы с пользователем. Для этого приложение предоставит ответ на разрешение. Существует ряд предопределенных ответов на различные типы данных, которые понимает Siri.

Наиболее распространенным ответом на разрешение приложения будет успех, то есть приложение соответствовало определенному фрагменту данных из параметра (например, имени пользователя) с частью информации, о которую он знает.

Может возникнуть время, когда приложению необходимо подтвердить, что заданный запрос соответствует правильной части информации, о которую он знает. В таких случаях он отправит ответ "ПодтверждениеRequired ", чтобы задать пользователю вопрос " Отправить сообщение в Bobo the Great?"

В других случаях, когда приложению потребуется выбрать из краткого списка параметров. В этом случае приложение предоставит ответ дисамбигуации со списком из двух до десяти вариантов выбора пользователя, например:

Who do you want to message?

* Bobo the Great
* Bobo Jr.
* Little Bobo

Siri будет обрабатывать пользователя, выполняющего выбор, либо словесно, либо взаимодействуя с пользовательским интерфейсом Siri, и результат будет отправлен обратно в приложение.

В других случаях может быть недостаточно информации для разрешения параметра или может быть слишком много совпадений для разрешения с помощью диамбигуации (например, 80 пользователей с Бобо в их имени). В этом случае приложение отправит ответ NeedsMoreDetails , и Siri предложит пользователю быть более конкретным.

Если пользователь не предоставил значение, которое требуется для обработки намерения, оно может отправить ответ NeedsValue , чтобы запрос Siri ввести пользователю запрос на значение.

Если приложение не поддерживает значение, заданное пользователем для определенного параметра, оно может отправить ответ UnsupportedWithReason , чтобы указать причину, по которой значение не поддерживается. Затем Siri предложит пользователю полностью новое значение и учитывал причину, по которой это необходимо.

Наконец, используйте ответ NotRequired , чтобы сообщить Siri, что приложению не требуется значение для заданного параметра. Если пользователь предоставляет его в любом случае, он просто будет игнорироваться Siri.

Этап подтверждения

Этап подтверждения имеет две цели:

  • Чтобы сообщить Siri ожидаемому результату обработки намерения, чтобы Siri может сообщить пользователю, что произойдет.
  • Предоставляет возможность проверка любых необходимых состояний, которые приложение может потребоваться выполнить запрос, представленный пользователем, например наличие достаточного количества денег в банке, чтобы сделать запрошенный платеж.

Приложение предоставит ответ намерения на шаге подтверждения, который должен быть заполнен максимальной информацией, доступной приложению, чтобы Siri могли эффективно взаимодействовать с пользователем.

В зависимости от типа домена и действия Siri может предложить пользователю подтверждение, например перед отправкой оплаты или резервирование поездки.

Этап дескриптора

Этап дескриптора является наиболее важной частью работы с намерением, так как это точка, в которой приложение выполняет запрос пользователя, выполняя задачу, которую он попросил сделать.

Как и на этапе подтверждения, приложение должно предоставить столько сведений о результатах, сколько это возможно, чтобы Siri связывал это с пользователем. Иногда эти сведения будут отображаться визуально или в другое время Siri просто будет говорить с пользователем.

Иногда может потребоваться дополнительное время для обработки заданного запроса, например задержки сетевого вызова или если живой человек должен выполнить запрос (например, завершение заказа и доставка заказа или вождения автомобиля в расположение пользователя). Когда Siri ожидает ответа обратно из приложения, он отобразит пользовательский интерфейс ожидания пользователю, сказав им, что приложение обрабатывает запрос.

В идеале приложение должно предоставить ответ на Siri в течение двух до трех секунд. Если приложение знает, что заданный ответ займет больше времени для обработки, он должен отправить код ответа InProgress в Siri. Затем Siri сообщит пользователю, что приложение обрабатывает запрос в фоновом режиме и продолжит делать это, даже если они покидают среду Siri.

Добавление SiriKit в приложение

С помощью SiriKit в iOS 10 Apple создала две новые точки расширения:

  • Расширение "Намерения" — предоставляет Siri содержимое приложения и выполняет задачи, необходимые для выполнения любых поддерживаемых намерений.
  • Расширение пользовательского интерфейса намерений — предоставляет пользовательский интерфейс, который будет отображаться для содержимого приложений внутри Siri.

Существует также API для предоставления слов и фраз Siri для помощи в распознавании в виде:

  • Словарь приложений — слова и фразы, которые являются общими для каждого пользователя приложения.
  • Словарь пользователей — слова и фразы, уникальные для конкретного пользователя приложения.

Расширение "Намерения"

Расширение "Намерения" отвечает за обработку основных взаимодействий между приложением и Siri следующим образом:

Расширение

Расширение "Намерение" может поддерживать одно или несколько намерений, разработчик решает, как они хотят реализовать SiriKit в приложении. Разработчик также может добавить отдельное расширение намерения для каждого намерения, необходимого для обработки. Тем не более чем Apple запрашивает, чтобы разработчик ограничивает количество расширений намерений, чтобы Siri не было нескольких процессов, открытых для приложения, что требует больше памяти и времени для обработки.

Разработчик также должен знать, что расширение "Намерение" будет работать в фоновом режиме, пока Siri активен. Это позволяет Siri активно вести беседу с пользователем, продолжая взаимодействовать с расширением для обработки сведений о запросе.

Вопросы безопасности и конфиденциальности

Apple предприняла большие меры, чтобы обеспечить безопасность конфиденциальной информации пользователя при работе с Siri и таким образом существует несколько взаимодействий, требующих входа пользователя на устройстве iOS. Например, при запросе поездки или оплате.

Кроме того, в приложении может потребоваться ограничить пользователя, вошедшего в систему. В таких ситуациях приложение может запросить поведение ограничения при блокировке . Это делается с помощью параметра в Info.plist файле.

Локальная платформа проверки подлинности доступна для расширения намерения, чтобы приложение может попросить пользователя получить дополнительные сведения о проверке подлинности, даже если устройство уже разблокировано.

Наконец, Apple Pay доступна для расширения намерения, чтобы приложение может завершить транзакцию с помощью Apple Pay, и встроенный лист Apple Pay появится над интерфейсом Siri.

Кроме того, Apple хочет убедиться, что пользователи знают, когда они отправляют информацию в 3-е стороннее приложение, и таким образом, пользователь должен сказать конкретное имя приложения (как указано в отображаемом имени пакета приложения) при выполнении запроса.

Apple разработала Siri для выполнения естественных, гибких бесед с пользователем и из-за этого, имя пакета приложения может использоваться во многих частях речи, где он соответствует естественно в запросе пользователя.

Одной из распространенных вещей, которые будут делать пользователи, является "детализация" имени приложения, другими словами, принимая имя приложения и используя его в качестве команды в запросе. Например, "MonkeyChat Bobo были великими бананами".

Расширение пользовательского интерфейса "Намерения"

Расширение пользовательского интерфейса "Намерения" представляет возможность перенести пользовательский интерфейс приложения и фирменную символику в интерфейс Siri и сделать пользователей подключенными к приложению. С помощью этого расширения приложение может перенести бренд, а также визуальную и другую информацию в расшифровку.

Выходные данные расширения пользовательского интерфейса

Расширение пользовательского интерфейса "Намерения" всегда возвращается UIViewController , и приложение может добавлять все, что нравится в контроллере представления, например отображение дополнительных сведений, которые выходят за рамки начального ответа. Пользовательский интерфейс "Намерения" также может обновить пользователя с состоянием длительного события, например, сколько времени займет автомобиль совместного использования для езды, чтобы добраться до своего расположения.

Расширение пользовательского интерфейса "Намерения" всегда будет отображаться вместе с другим содержимым Siri, таким как значок приложения и имя в верхней части пользовательского интерфейса или в зависимости от намерения, кнопки (например, отправка или отмена) могут отображаться в нижней части экрана.

Существует несколько экземпляров, в которых приложение может заменить сведения, отображаемые пользователем по умолчанию Siri, например обмен сообщениями или карты, где приложение может заменить интерфейс по умолчанию одним, адаптированным к приложению.

Внимание

Хотя можно добавить интерактивные элементы, такие как или UITextFields в расширение UIViewControllerпользовательского интерфейса намерения, они строго запрещены, так как UIButtons пользовательский интерфейс намерения в неинтерактивном режиме, и пользователь не сможет взаимодействовать с ними.

Это совершенно необязательно для приложения предоставить расширение пользовательского интерфейса намерения, так как Siri содержит набор пользовательского интерфейса по умолчанию для каждого типа намерения. Кроме того, интерфейсы пользовательского интерфейса "Намерения" доступны только для определенных намерений, которые Apple считает полезными для пользователя.

Добавление словаря SiriKit

Последняя часть реализации SiriKit лежит в приложении, предоставляя необходимый словарь. Многие приложения имеют уникальные способы описания информации для пользователя и уникальных способов предоставления пользователю информации приложению.

Из-за этого Siri требует помощи приложения, чтобы понять слова и фразы, уникальные для приложения. Некоторые из этих фраз будут частью приложения, чтобы каждый пользователь знал и понимал их. Тем не менее, другие будут уникальными для конкретного пользователя приложения.

Словарь для конкретного приложения

Словарь конкретного приложения определяет конкретные слова и фразы, которые будут известны всем пользователям приложения, например типам транспортных средств или именам тренировки. Так как они являются частью приложения, они определяются в файле в AppIntentVocabulary.plist составе основного пакета приложений. Кроме того, эти слова и фразы должны быть локализованы.

Существует несколько частей в файл словаря AppIntentVocabulary.plist :

  • Примеры использования приложений. Они предоставляют набор распространенных вариантов использования запросов, которые пользователь может сделать из приложения. Например: "Запуск тренировки с помощью MonkeyFit".
  • Параметры — это набор типов не стандартных параметров, относящихся к приложению. Например, имена тренировки для приложения MonkeyFit. Они состоят из следующих:
    • Фраза— позволяет приложению определять уникальные термины для приложения. Например: тип тренировки "Bananarific" для приложения MonkeyFit.
    • Произношение — дает подсказки произношения Siri в качестве простой фонетической орфографии для данной фразы. Например, "ba nana ri fic".
    • Пример . Пример использования заданной фразы в приложении. Например, "Запуск бананового элемента в MonkeyFit".

Дополнительные сведения см. в справочнике по формату файлов в словаре приложений Apple.

Словарь для конкретного пользователя

Словарь конкретного пользователя будет предоставлять слова или фразы, уникальные для отдельных пользователей приложения. Они будут предоставлены во время выполнения из основного приложения (а не расширения приложений) в качестве упорядоченного набора терминов, упорядоченных в наиболее важном приоритете использования для пользователей, с наиболее важными терминами в начале списка.

Ознакомьтесь с примером приложения MonkeyChat, представленного выше. MonkeyChat хранит список всех контактов пользователя, которые будут отправляться в Siri через словарь пользователя. Он также сохраняет список последних контактов, которые пользователь получил, и у него есть набор избранных контактов для каждого пользователя. В этом примере избранные контакты должны находиться в начале нашего словаря пользователя, за которым следует последние контакты, а затем остальные контакты пользователя.

Следующие типы информации поддерживаются определенным словарем пользователей:

  • Имена контактов.
  • Имена тренировки.
  • Имена фотоальбомов.
  • Ключевые слова фото.

Если приложение использует адресную книгу iOS, приложению не придется предпринимать никаких действий, так как эта информация уже доступна для Siri. Приложению необходимо предоставить только имена контактов, если у приложения есть собственная уникальная база данных контактов.

При разработке словаря укажите только необходимые значения, которые пользователи знают и заботятся. Избегайте предоставления таких сведений, как номера телефонов или адреса электронной почты.

Приложение также должно быстро обновить Siri при изменении словаря пользователя. Пользователи привыкли запрашивать информацию из Siri, когда она была добавлена на устройство iOS. Например, если пользователь добавляет новый контакт в приложение, отправьте эти сведения в Siri сразу после сохранения пользователя.

Более важно, что приложение должно быстро удалить информацию из словаря Siri, так как пользователь может стать расстроенным, если они удалили часть информации, но Siri по-прежнему распознает его часы или дни спустя.

Внимание

Приложение должно удалить весь словарь для конкретного пользователя из Siri, если пользователь решит сбросить приложение или выходить из системы.

Разрешения SiriKit

Последний фрагмент SiriKit сосредоточен на разрешениях. Как и другие функции iOS (например, фотографии, Камера или контакты), пользователям необходимо предоставить явное разрешение для взаимодействия с Siri.

Приложение может предоставить строку, определяющую, какие сведения он предоставит Siri, и дать причину, почему пользователь должен предоставить этому доступу.

Apple предлагает приложению запрашивать разрешение от пользователя на использование Siri при первом открытии приложения после обновления до iOS 10. Это так, чтобы пользователи знали об интеграции Siri и могут предварительно утверждено использование, прежде чем они делают свой первый запрос.

SiriKit и Карты

SiriKit является неотъемлемой частью iOS и использует большую платформу намерений, добавленную в iOS 10. Платформа "Намерения" предназначена для совместного использования общих и общих действий и намерений с другими частями системы.

Платформа "Намерения" выходит за рамки простой интеграции Siri и предоставляет другие функции, такие как интеграция контактов, где приложение может стать приложением телефонии или обмена сообщениями по умолчанию для определенных контактов. Намерения также обеспечивают глубокую интеграцию с CallKit, чтобы предоставить пользователям лучший интерфейс VOIP.

Приложение Карты в iOS 10 добавило такие функции, как общий доступ к поездкам, где пользователь может забронировать поездку непосредственно внутри пользовательского интерфейса Карты. SiriKit предоставляет общую точку расширения с Карты поэтому совместное использование езды (и другие) намерения можно совместно использовать между Siri и Карты.

Это означает, что если приложение приняло расширения SiriKit, он также получит интеграцию Карты бесплатно.

Проектирование отличного интерфейса Siri

Проектирование отличного пользовательского интерфейса при интеграции приложения в Siri отличается от разработки отличного пользовательского интерфейса приложения. В отличие от обычных ситуаций, когда пользователь взаимодействует с приложением непосредственно на экране, при использовании Siri существует много раз, когда визуальный интерфейс не отображается вообще. Например, когда пользователь начал беседу с "Эй Siri".

Как Siri помогает разработчику

При проектировании взаимодействия приложения с Siri приложение будет создавать диалоговый интерфейс, а это означает, что контекст является производным от беседы, которая Siri имеет с пользователем от имени приложения.

В отсутствие визуальной ссылки пользователь должен отслеживать информацию, представленную в голове. Из-за этого Siri представляет минимальную информацию, необходимую для достижения задачи, которую пользователь хочет выполнить.

Интерфейс беседы формируется на основе вопросов и ответов от пользователя и Siri во время беседы. Поэтому важно думать о том, как Siri задает вопросы и отвечает при разработке этого интерфейса.

В следующем примере пользователя, создающего сообщение, Siri может ответить на вопрос "Готово к отправке?". Пользователь может отвечать различными способами, такими как "Отправить", "Отмена" или даже что-то совершенно не связанное с этим вопросом. Независимо от того, как беседа играет, Siri будет обрабатывать его для приложения, и отправлять только соответствующую информацию по мере его доступности.

Существует несколько различных способов, которым пользователь может инициировать беседу с Siri:

  • Выбрав устройство, нажмите кнопку "Главная". В этой ситуации Siri будет представлять больше визуальных интерфейсов и менее словесных ответов.
  • Сказав : "Эй Siri" и начать беседу "Руки свободно". В этой ситуации Сири будет менее визуальным и более словесным.
  • Использование специальных возможностей, таких как слуховые аппараты с поддержкой Bluetooth, где пользовательский интерфейс будет адаптирован для пользователя с особыми потребностями.
  • Использование Car Play, где пользователь должен держать свое внимание на управлении, сохраняя отвлекающие факторы к минимуму.

Как разработчик помогает Siri

При интеграции приложения с Siri разработчик должен часто тестировать эту интеграцию и убедиться, что они выполняют множество различных запросов, запрашивая одну часть информации или задачи как можно более разными способами.

Так как никто не думает так, важно, чтобы разработчик получил как можно больше различных бета-тестировщиков, чтобы помочь точно настроить интеграцию Siri. Пользователи могут запрашивать информацию или делать запросы таким образом, чтобы разработчик никогда не мог, и эта тонкость настройки может помочь гарантировать, что самая широкая группа пользователей имеет большой опыт работы с приложением с Siri.

Тестирование в различных ситуациях и средах. Инициируйте беседы с Siri всеми способами, чтобы убедиться, что эти беседы остаются гибкими и естественными. Протестируйте в местах, где пользователь, скорее всего, будет использовать приложение, как в переполненном тренажерном зале.

Убедитесь, что приложение предоставляет все сведения, необходимые Siri для правильного представления запроса и результата пользователю. Это особенно верно при использовании Siri в ситуации "Свободные руки".

Рекомендации по проектированию Siri

Всегда помните, что Siri имеет беседу с пользователем от имени приложения. Разработчик хочет не убедиться, что эта беседа остается как можно более гибкой и естественной.

Так как они будут иметь любой важный разговор, разработчик должен обеспечить следующее:

  • Это приложение подготовлено для беседы.
  • Это приложение прослушивает именно то, что пользователь пытается выполнить.
  • Это приложение задает соответствующие вопросы в соответствующее время.
  • Это приложение отвечает на запрос с информацией, которую ищет пользователь.

Подготовка к беседе

Первое, что следует помнить, заключается в том, что пользователи приложения не будут точно так же, как разработчик. Они могут поступать из разных фонов, говорить на разных языках или иметь особые потребности при работе с приложением.

Кроме того, так как разработчик разработал и создал приложение, у них есть глубокие интимные знания как о приложении, так и о его внутренней работе и функциях, которые типичный пользователь не будет иметь. Поэтому разработчик может запрашивать запрос Siri по-другому, чем обычный пользователь.

Именно поэтому важно иметь как можно больше разных пользователей взаимодействовать с приложением через Siri. Пользователи могут запрашивать приложение через Siri, что разработчик никогда не думал или каким образом разработчик не рассматривал.

Убедитесь, что приложение является хорошим прослушивателем

Разработчику необходимо убедиться, что приложение является хорошим прослушивателем и получает особенности беседы, которая соответствует ожиданиям пользователя. Но также возможно, что они, возможно, не предоставили все сведения, необходимые приложению для достижения запрошенной задачи.

Существует несколько способов, которым приложение может справиться с этой ситуацией:

  • Выберите "Хорошее значение по умолчанию" для отсутствующих значений . Например, приложение для общего доступа к поездкам может по умолчанию использовать текущее расположение пользователя, если они не указали, откуда они хотели забраться.
  • Создание образованных предположений — использование определенных сведений о том, что приложение собрало на пользователя, приложение может иметь возможность сделать и образованные предположения о отсутствующих данных, таких как заполнение отсутствующим номером мобильного телефона из контактных данных пользователя. Тем не менее, следует заботиться, чтобы избежать плохих сюрпризов, таких как выбор наиболее дорогого варианта и т. д.
  • Запрос дополнительных сведений . Приложение может запрашивать у пользователя отсутствующее значение. Тем не менее, ключ здесь заключается в том, чтобы оставить беседы простыми и на то. Пользователи быстро станут разочарованы, если они должны ответить на несколько вопросов, чтобы достичь своего запроса.
  • Обработка неверной информации . Пользователь может предоставить значение, которое приложение не ожидало или что оно не может обрабатывать в данном контексте. Убедитесь, что приложение связано с этой ситуацией с пользователем таким образом, чтобы сделать его понятным и простым для них правильным.

Если приложение представлено с одним значением, которое имеется в вопросе, предпочтительный способ обработки этого приложения должен запрашивать у пользователя подтверждение. Например, "Вы означало Бобо Великий?", к которому они могут ответить с простым да или нет ответа.

Если существует ситуация, когда несколько возможных вариантов могут быть правильными для одного значения, диамбигуация является предпочтительным методом обработки. В этой ситуации Siri может предложить пользователю до десяти возможных вариантов выбора. Например:

Who do you want to send the message to?

* Bobo the Great!
* Bobo Jr.
* Little Bobo

Если этот вопрос еще не задан, у пользователя появится запрос на предоставление совершенно нового, более конкретного ответа для заданного значения.

Окончательное подтверждение запроса

Прежде чем приложение фактически выполняет задачу для выполнения запроса пользователя, Siri проверка с расширением приложения, чтобы убедиться, что все находится на месте. Например, у пользователя достаточно денег на счете, чтобы сделать запрошенный платеж?

Кроме того, приложению необходимо убедиться, что она предоставляет всю информацию, доступную для Siri, чтобы он смог представить его пользователю и подтвердить, что задача будет выполнена в соответствии с их ожиданиями.

После подтверждения запроса и выполнения приложения приложение должно снова убедиться, что он предоставил все результаты обратно в Siri, чтобы он смог связать их с пользователем.

Реагирование на запрос

Siri имеет несколько встроенных пользовательских интерфейсов для каждого из доменов и действий, о которых он знает. Однако при необходимости приложение может предоставить пользовательское расширение пользовательского интерфейса намерения для обогащения пользовательского интерфейса путем представления фирменной символики и пользовательского интерфейса приложения или дополнительных сведений, чем в запросе.

Тем не более чем при разработке пользовательских интерфейсов для Siri следует использовать сдержанность. Как правило, пользователь хочет как можно быстрее выполнить определенную задачу и не хочет перегружаться ненужными сведениями.

Также следует учитывать, что пользовательский интерфейс выглядит и отвечает правильно во всех различных устройствах iOS и ориентациях, которые пользователь может иметь или использует устройство.

При необходимости используйте API SiriKit для скрытия всех избыточных сведений, уже присутствующих в пользовательском интерфейсе Siri по умолчанию. Тем не менее, убедитесь, что приложение по-прежнему предоставляет информацию Siri, чтобы она может представить его словесно в ситуациях "Свободные руки".

Могут возникнуть ситуации, когда Siri запустит приложение для выполнения запроса пользователя, например представления фотографий, запрошенных пользователем. В таких ситуациях не удивляйтесь пользователю. Отображение ожидаемых сведений без выполнения промежуточных шагов или дальнейшего взаимодействия. Никогда не отображайте информацию или не выполняйте задачу, которую пользователь ожидает.

Польирование дизайна

Существует несколько шагов, которые Apple предлагает полировать дизайн диалоговых интерфейсов. Во-первых, предоставляя четкий, краткий словарь и примеры вариантов использования в Siri.

Один из способов, которым пользователь обнаруживает приложение, путем инициирования беседы с Siri и спрашивая: "Что можно сделать?" Siri покажет несколько различных действий, которые он может сделать, включая приложение разработчика и примеры вариантов использования героя, которые он предоставил через свой plist файл.

Как написать хорошие примеры использования:

  • Убедитесь, что примеры включают имя приложения.
  • Ставьте пример коротким и до точки.
  • Укажите несколько примеров для каждого из намерений, поддерживаемых приложением.
  • Определите приоритет как намерения, так и примеры в них на основе наиболее распространенных вариантов использования для приложения.
  • Убедитесь, что приложение предоставляет локализованные примеры.
  • Убедитесь, что каждый пример работает должным образом в приложении.
  • Избегайте решения Siri в примерах, поэтому не включайте текст, например "Эй Siri..."
  • Избегайте ненужных приятных попыток, таких как "пожалуйста" или "спасибо".

Изучить и поэкспериментировать с тем, как приложение может сформировать беседу, которую Siri имеет с пользователем от своего имени. Не забудьте поговорить с типичными пользователями во время процесса, так как их взаимодействие с приложением и ожиданиями может измениться со временем.

Всегда не забывайте тестировать приложение в разных ситуациях и все различные методы для вызова беседы с Siri. Тестирование в реальных местах, где пользователь может использовать приложение, от офиса и рабочего стола.

Старайтесь иметь беседы с Siri (от имени приложения) быть гибкими, естественными и "чувствовать себя просто правильно".

Итоги

В этой статье рассматриваются основные понятия, необходимые для использования SiriKit, и показано, что оно может взаимодействовать с приложениями Xamarin.iOS для предоставления служб, доступных пользователю с помощью Siri и приложения Карты на устройстве iOS.