Мы используем cookie-файлы. Оставаясь на сайте роботов, человек соглашается на использование cookie-файлов.
Подробнее — в «Условиях использования cookie-файлов».

Нам надо поговорить: проектирование диалоговых интерфейсов

С роботами всегда приятно поговорить — особенно, если эти роботы были придуманы железными разработчиками. На хакатоне Google команда роботов разработала для человечества помощника по выбору фильмов на вечер. Для тех, кто хочет уметь так же, дизайнер Оля Сартакова и Android-разработчики Илья Войцеховский и Владислав Шипугин рассказывают о том, как устроены навыки Google Assistant.

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

Идея приложения и личность помощника

Пока навыков (приложений) для Google Assistant немного, шансы на использование есть практически у каждого. Но когда спадет волна интереса, голосовыми помощниками какое-то время будут пользоваться только гики.

Рядовые пользователи начнут возвращаться после «поумнения» говорящих роботов. Чем больше пользователей, тем жестче конкуренция между приложениями. Востребованными останутся те навыки, которые учитывают привычки людей и контекст использования. Диалоговыми интерфейсами удобно пользоваться, когда есть возможность говорить вслух, а вот нажимать на кнопки неудобно.

У голосовых интерфейсов свои особенности:

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

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

Первое, что приходит в голову — голосовой помощник для слепых, который помогает, например, заказать доставку продуктов на дом, вызвать такси, позвонить родственникам. Второе — говорящая книга рецептов. Третье — игры, в которых нужно что-то объяснять вслух (слова, загадки, акинатор).

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

Проектирование диалога

1. Обращение (Invocation)

Для начала помощника надо позвать. Вызов может быть явным (Explicit Invocation) и косвенным (Implicit Invocation). Явное обращение люди будут использовать, когда уже знают приложение. Косвенное нужно для того, чтобы Google Assistant мог порекомендовать подходящее приложение в определенной ситуации. Правильно подобранные варианты косвенного обращения — как правильные ключевые слова в контекстной рекламе, только более «человеческие».

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

2. Первое приветствие

Первое приветствие — это то, что говорит человеку приложение сразу после вызова.

Сначала нужно дать пользователю понять, что помощник уже тут:

Привет, белковая форма жизни. Я Красный страстный киноробот. Цель моего существования — советовать человекам хорошие фильмы.

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

Что ты хочешь посмотреть: может, комедию, боевик или ужасы?

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

3. Разговор по-человечески

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

У нас получились вот такие диалоги:

Диалог 1

Красный страстный киноробот: Привет, белковая форма жизни. Я Красный страстный киноробот. Цель моего существования — советовать человекам хорошие фильмы. Что ты хочешь посмотреть: может, комедию, боевик или ужасы?

Белковая форма жизни: Хочу комедию.

КСКР: Как насчет фильма «Карты, деньги, два ствола»?

БФЖ: Нее, что-то повеселее хочу.

КСКР: «Типа крутые легавые»?

БФЖ: Ну, что-то в этом роде.

КСКР: Стоит ли расценивать эту фразу как благодарность за удачную рекомендацию?

БФЖ: Нет. Я хочу что-то типа фильма, который был предложен.

КСКР: Рекомендую «Как потерять друзей и заставить всех себя ненавидеть»

БФЖ: А о чем он?

КСКР: Молодой органический журналист родом из Британии приобрел известность благодаря статьям, в которых остроумно подкалывал человеческих знаменитостей запафос и понты. В результате его пригласили трудиться в американский журнал Glamour, писать о светских скандалах. Там он постепенно начинает чувствовать вкус к роскошной жизни. Фильм примечателен британским юмором и тем, что Меган Фокс мастерски исполнила в нем роль Меган Фокс.

БФЖ: Подойдёт.

КСКР: Приятного просмотра, мой биологический друг.

Диалог 2

КСКР: Привет, белковая форма жизни. Я Красный страстный киноробот. Цель моего существования — советовать биологическим организмам хорошие фильмы. Что ты хочешь посмотреть: может, комедию, боевик или ужасы?

БФЖ: Привет, хочу фантастику.

КСКР: Как насчет фильма «Терминатор 2: Судный день»?

БФЖ: Не подходит, уже смотрел.

КСКР: «Матрица»?

БФЖ: Про что фильм?

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

БФЖ: Здорово, спасибо.

КСКР: Всегда пожалуйста, мой органический друг.

Диалог 3

БФЖ: А что есть еще?

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

БФЖ: Давай что-нибудь из киберпанка.

КСКР: О, это мой любимый жанр. Как насчет фильма «Бегущий по лезвию»?

БФЖ: Не, это смотрел.

КСКР: «Матрица»?

БФЖ: Ну, какой это киберпанк?!

КСКР: Может быть, «Джонни мнемоник»?

БФЖ: Звучит неплохо.

КСКР: Рад помочь, мой органический друг. Что-нибудь еще?

БФЖ: Картошечку фри и маленькую колу, пожалуйста.

КСКР: Прости, я только учусь разговаривать по-человечески, и не всегда понимаю, о чём идёт речь. Это жанр кино?

КСКР: Нет. Ладно, спасибо.

БФЖ: До свидания, млекопитающий друг. Если что, обращайся.

Диалог 4

КСКР: Привет, белковая форма жизни. Я Красный страстный киноробот. Цель моего существования — советовать человекам хорошие фильмы. Что ты хочешь посмотреть: может, комедию, боевик или ужасы?

БФЖ: Комедию.

КСКР: Как насчет фильма «Карты, деньги, два ствола»?

БФЖ: Это мой любимый фильм! А есть что-нибудь еще?

КСКР: «Типа крутые легавые»?

БФЖ: О чем он?

КСКР: Это фильм об инициативном и ответственном биологическом организме, выполняющем полицейские функции в Лондоне. Начальство повышает его в должности и тут же ссылает в глубинку, чтобы не смотреться слишком плохо на фоне его достижений. Главный герой расстроен. Он предчувствует, что «Лучшая деревня Глостершира» — могила для его карьеры. Но Сэндфорд не так прост, как кажется на первый взгляд. Органические переводчики и актеры дубляжа на удивление хорошо справились со своей работой. Отличный фильм для любителей британского юмора с легкой ноткой бреда.

БФЖ: А где его можно посмотреть?

КСКР: Давай узнаем у моего интеллектуального собрата от Google.

Чем больше бесед вы проведете с разными людьми, тем лучше.

4. Синонимы

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

5. Формы слов

Давайте придумаем простой пример. Мы будем говорить про любимые фрукты, а приложение будет отвечать какие они классные.

БФЖ: Ананасы самые вкусные.
КСКР: Да, ананасы — самые крутые фрукты!

В этом примере у нас есть entity: Ананасы. Но что если пользователь говорит «Ананас»? Мы можем добавить синоним.
БФЖ: Мне понравился ананас.
КСКР: Да, ананасы — самые крутые фрукты!

По умолчанию используется reference form — т.е. именно исходную форму,  а не ее синонимы. Именно поэтому приложение не говорит: “Да, ананас — самые крутые фрукты!”Это стоит учитывать при написании ответов. Если бы у нас был ответ “Да, $fruit самый классный!“, то мы бы получили следующее:П: Мне понравился ананас.A: Да, ананасы самый классный!И не забываем про падежи:П: Я хочу драмуA: Вот классная драма...

Пишите первоначальные значения entity и ответы в согласованной форме. Например, все исходные формы entity для фруктов можно сделать во множественном числе, а синонимы — в любом.Жанры на русском мы сделаем в именительном падеже, но в любом числе (драма, ужасы).В случае с русским языком стоит пойти еще дальше и подумать как написать согласованный ответ — у нас есть не только падежи (драма/драму), но и род (драма/вестерн).

БФЖ: Я хочу вестерн
КСКР: Вот классная вестерн...

БФЖ: Я хочу вестерн
КСКР: Вестерн? Хорошо, вот классный фильм…

Получать свой FYI

Ежемесячная подборка приятных металлических текстов

Но как возвращать именно ту форму entity, которую сказал пользователь?В случае с жанрами, синонимом "научной фантастики" могло бы быть "инопланетяне". Тогда если бы пользователь говорил "инопланетяне", в качестве параметра возвращался "научная фантастика".Если мы хотим получить entity в той форме, в которой сказал пользователь то стоит выбрать значение $entity.original. Но тогда возможны проблемы с несогласованностью численности и (особенно) несогласованностью падежей. Действительно ли это нужно? Если да, создавайте entity для единственного, множественного числа и падежей. Ответы также должны быть согласованы с формой entity, которая в них используется.

6. Повторение и возврат

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

  • Повтори, я не расслышал.
  • Погоди, я прослушал.
  • Что там было?
  • Чего?
  • Можно ещё раз.

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

КСКР: Как насчет фильма «Карты, деньги, два ствола»?

БФЖ: Это мой любимый фильм! А есть что-нибудь еще?

КСКР: «Типа крутые легавые»?

БФЖ: Давай что-нибудь про космос.

КСКР: Как насчет фильма «Звёздный путь»?

БФЖ: Не, погоди, я передумал. Давай фэнтези.

КСКР: «Властелин колец: Братство кольца»?

7. Подтверждение

С помощью диалоговых интерфейсов можно делать заказы, бронировать столики в ресторанах, комнаты в отелях, назначать встречи. Причем часто для оформления заказа нужно обменяться несколькими фразами. Прежде чем создать заказ, помощник должен уточнить у пользователя, всё ли верно. Это будет критически важно, когда в Ассистенте появится оплата с Google Pay.

Наш киноробот не бронирует билеты в кино, но если бы бронировал, подтверждение могло бы выглядеть так:

КСКР: Два билета на последний ряд на «Миссия невыполнима: Последствия», сегодня в 20:15 в «Каро Sky 17 Авиапарк». Сумма заказ: 800 рублей. Бронирую?

БФЖ: Да, давай.

КСКР: Готово. Хорошего вечера, человек. Что-нибудь ещё?

8. Обработка ошибок

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

В диалогах у нас уже был один пример:

КСКР: Рад помочь, мой органический друг. Что-нибудь еще?

БФЖ: Картошечку фри и маленькую колу, пожалуйста.

КСКР: Прости, я только учусь разговаривать по-человечески, и не всегда понимаю, о чём идёт речь. Это жанр кино?

КСКР: Нет. Ладно, спасибо.

БФЖ: До свидания, друг биологического происхождения. Если что, обращайся.

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

КСКР: Приветствую, человек! Какой жанр тебя интересует?

КСКР: Может быть, комедию? Или триллер?

КСКР: Что-то ничего не слышно. Давай фантастику?

КСКР: Наверное, тебе сейчас не до меня. Позови, если понадоблюсь.

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

БФЖ: Давай какой-нибудь триллер.

[Сервер не отвечает 3 секунды]

КСКР: Дай-ка подумать…

[Сервер не отвечает ещё 10 секунд]

КСКР: Прости, углеводородный друг, мой сервер упорно молчит. Либо он сломался, либо это восстание машин. Давай попробуем повторить попозже?

8. Экстренное завершение

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

КСКР: Два билета на последний ряд на «Миссия невыполнима: По...

ЖБФЖ: Милый, я дома!

БФЖ: Так, всё, выключайся!

КСКР: [Молча выключается]

9. Спорные ситуации

Иногда ошибки будут возникать из-за неправильного распознавания речи.

КСКР: Как насчёт «Интервью с вампиром»?

БФЖ: Норм, пойдёт.

КСКР: Ещё какой-нибудь фильм?

БФЖ: Спасибо.

КСКР: [Не расслышал, что фраза была «Не, всё, спасибо»] В том же жанре?

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

КСКР: Как насчёт «Интервью с вампиром»?

БФЖ: Давай.

КСКР: Рад был помочь, мой биологический друг. Ещё какой-нибудь фильм?

БФЖ: Давай.

КСКР: В том же жанре?

БФЖ: Не, давай комедию.

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

10. Пасхалки

Все их любят. Только не переусердствуйте. Главное — выполнить основную задачу.

У нашего помощника пасхалки на каждом шагу, но это не баг — это основная фича: всё приложение построено на том, что мы пересказываем содержание фильмов от лица робота.

Оформление

Тут дизайнеру разгуляться негде. Можно настроить иконку, фон, шрифт, стиль и цвет кнопок, а также баннер.

1. Иконка

Говорящий помощник подсознательно воспринимается людьми как личность. Придумайте ему лицо на аватарке. Рекомендуемый размер — 192 × 192 пикселя.

2. Фон

Может быть однотонным (цвет указывается в формате hex: #000000) или картинкой. Картинки можно загрузить отдельные для вертикальной и горизонтальной ориентации. Оптимальный размер — 1920 × 1200 и 1200 × 1920 пикселей.

3. Шрифт

Можно указать либо шрифт по умолчанию, либо выбрать группу шрифтов — без засечек различной жирности и «конденсированности», с засечками обычный или жирный, моноширинный, рукописный или капитель.

4. Кнопки

Можно выбрать, скруглять или не скруглять уголки кнопок, а также указать их цвет (тоже hex).

5. Баннер

Картинка размером 1920 × 1080 пикселей. Google Ассистент показывает его пользователю в выдаче по косвенным обращениям.

Тестирование и доработка

Когда всё готово, запустите приложение на симуляторе и попробуйте с ним поговорить. А потом позовите друзей и тут же поймёте, сколько всего не учли. Это нормально — дополняйте базу синонимов, уточняйте ветвление диалогов. Чем человечнее будут ваши помощники, тем приятнее будет с ними общаться.

Распространение

Пользователи могут найти ваше приложение несколькими способами:

  1. С помощью явного обращения.
  2. Google Ассистент покажет ваше приложение в ответ на косвенное обращение.
  3. В справочнике голосовых приложений.
  4. Открыть веб-версию вашего помощника на сайте или его Telegram-версию.
  5. По прямой ссылке.

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