Проектирование взаимодействия с пользователем

ОБЛАСТЬ ПРИМЕНЕНИЯ: ПАКЕТ SDK версии 4

Вы можете создавать боты с различными функциями, такими как текст, кнопки, изображения, расширенные карта, отображаемые в карусели или формате списка, и многое другое. Тем не менее, каждый канал, например Facebook, Slack и т. д., в конечном счете управляет тем, как его клиенты обмена сообщениями отрисовывает функции. Даже если несколько каналов поддерживают компонент, каждый канал может преобразовать его немного по-разному. В случаях, когда сообщение содержит функции, которые канал не поддерживает в собственном коде, канал может попытаться выполнить отрисовку содержимого сообщения в виде текста или статического изображения, что может значительно повлиять на внешний вид сообщения на клиенте. В некоторых случаях канал может вообще не поддерживать определенный компонент. Например, клиенты GroupMe не могут отображать индикатор ввода.

Функциональные пользовательские элементы управления

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

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

Карточки

Карточки позволяют предоставлять пользователям различные визуальные, звуковые и (или) выбираемые сообщения и помогают в ведении беседы. Если пользователь должен выбрать из фиксированного набора элементов, вы можете отобразить карусель карточек, каждая из которых содержит изображение, текстовое описание и одну кнопку для выбора. Если у пользователя есть набор вариантов для одного элемента, вы можете представить меньшее одиночное изображение и набор кнопок с различными параметрами на выбор. Запрашивал ли пользователь дополнительную информацию по теме? Карточки могут предоставлять подробную информацию, используя выходное аудио или видео, или квитанцию, в которой подробно описывается история покупок. Существует невероятно широкий спектр использования для карта, которые помогут вам вести беседу между пользователем и ботом. Тип используемой карточки будет определяться потребностями приложения. Давайте рассмотрим карта, их действия и некоторые рекомендуемые варианты использования.

Служба Bot карта Azure — это программируемые объекты, содержащие стандартные коллекции расширенных пользовательских элементов управления, распознаваемые в широком диапазоне каналов. В следующей таблице приведен список доступных карточек и рекомендации по использованию для каждого типа.

Тип карточки Пример Description
AdaptiveCard (адаптивная карточка) Image of an Adaptive Card. Открытый формат обмена карточками, передаваемый как объект JSON. Обычно используется для межканального развертывания карточек. Карточки адаптируются к внешнему виду каждого канала узла.
AnimationCard Image of an animation card. Карточка, которая может воспроизводить GIF-файлы с анимацией или короткие видеоролики.
AudioCard Image of an audio card. Карточка, которая может воспроизводить звуковой файл.
HeroCard (имиджевая карточка) Image of a hero card. Карточка, которая содержит одно большое изображение, одну или несколько кнопок и текст. Обычно используется для визуального выделения потенциального варианта выбора пользователя.
ThumbnailCard (эскизная карточка) Image of a thumbnail card. Карточка, которая содержит один эскиз, одну или несколько кнопок и текст. Обычно используется для визуального выделения кнопок для потенциального выбора пользователя.
ReceiptCard (карточка квитанции) Image of a receipt card. Карточка, с помощью которой бот выдает квитанцию пользователю. Обычно она содержит список элементов, включаемых в квитанцию, налог, а также общую информацию и другой текст.
SignInCard Image of a sign-in card. Карта, позволяющий пользователю входить в систему. Обычно он содержит текст и одну или несколько кнопок, которые пользователь может использовать для запуска процесса входа.
Карточка рекомендуемых действий Image of suggested actions rendered as buttons within a chat. Представляет пользователя набором карта действий, представляющих выбор пользователя. Кнопки исчезают после выбора любого из предлагаемых действий.
VideoCard Image of a video card. Карточка, которая может воспроизводить видео. Обычно используется для открытия URL-адреса и потокового воспроизведения доступного видео.
CardCarousel (карусель карточек) Image of a card carousel. Горизонтально прокручиваемая коллекция карточек, которая позволяет пользователю легко просматривать ряд возможных пользовательских вариантов выбора.

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

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

  • Пример кода см. в следующем примере ботов в репозитории примеров Bot Framework.

    Пример Имя Описание
    6 Использование карта Демонстрирует использование всех типов карта.
    7 Адаптивные карточки Демонстрирует использование адаптивных карточек.
    8 Предлагаемые действия Демонстрирует использование предлагаемых действий.
    15 Вложения Демонстрирует, как принимать предоставленные пользователем вложения.

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

Совет

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

Распознавание текста и естественного языка

Бот может принимать текстовые данные от пользователей и пытаться проанализировать входные данные с помощью api сопоставления регулярных выражений или API распознавания естественного языка. В зависимости от типа входных данных, предоставляемых пользователем, распознавание естественного языка может оказаться оптимальным или не очень решением.

В некоторых случаях бот может задать пользователю конкретный вопрос. Например, если бот спрашивает: "Как вас зовут?", пользователь может ответить с помощью текста, в котором указано только имя ("Джон"), или с помощью предложения ("Меня зовут Джон").

Формулировка конкретного вопроса уменьшает объем возможных ответов, которые бот может получить, что упрощает логику, необходимую для синтаксического анализа и понимания ответа. Например, рассмотрим следующий открытый вопрос: "Как вы себя чувствуете?". Понимание множества возможных перемутов потенциальных ответов на такой вопрос является сложной задачей.

В противоположность этому, такие конкретные вопросы, как "Вам больно? Да или нет" и "Что у вас болит? Грудь, голова, рука или нога", скорее всего, будут способствовать более конкретным ответам, которые бот сможет проанализировать и понять без необходимости реализации распознавания естественного языка.

Совет

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

В других случаях пользователь может ввести определенную команду. Например, бот DevOps, который позволяет разработчикам управлять виртуальными машинами, может быть разработан для принятия определенных команд, таких как /STOP VM XYZ или /START VM XYZ. Проектирование бота для принятия определенных команд, подобных этим, обеспечивает хорошее взаимодействие с пользователем, так как синтаксис прост в освоении и ожидаемый результат каждой команды ясен. Кроме того, бот не требует возможностей распознавания естественного языка, так как входные данные пользователя можно легко проанализировать с помощью регулярных выражений.

Совет

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

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

Совет

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

В других сценариях пользователь может вводить простые запросы на основе естественного языка. Например, пользователь может напечатать "Я хочу пиццу пепперони" или "Есть ли какие-нибудь вегетарианские рестораны в 3 милях от моего дома, открытые сейчас?". API распознавания естественного языка отлично подходят для таких сценариев.

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

Совет

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

Речь

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

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

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

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