Наш канал в telegram

Алиса от Яндекса. Часть 2. Что такое навыки Алисы, как они работают и что нужно для разработки своего собственного навыка?

Что такое навыки Алисы? Говоря по простому, навыки — это любые веб-сервисы, предоставляющие какой-либо полезный (или не очень) функционал. Как только Алиса научилась (ну, или сотрудники Яндекса её научили) пользоваться определённым веб-сервисом, — можно говорить о том, что у Алисы появился новый навык.

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

Своих веб-сервисов у Яндекса много: Такси, Еда, Карты и так далее. И всеми этими веб-сервисами программисты Яндекса научили пользоваться Алису. Там не менее, своих сервисов Яндексу показалось мало и в марте 2018 года компания открыла доступ к разработке навыков для голосового помощника Алиса всем желающим. То есть сторонние разработчики получили возможность интегрировать с Алисой свои собственные веб-сервисы.

В случае со сторонними навыками, функции Алисы, фактически, сводятся только к организации интерфейса взаимодействия между пользователем и сторонним веб-сервисом (навыком). Внешне всё выглядит как диалог с Алисой, реально — Алиса только преобразует речь в текст и обратно, а обработкой текста и формированием ответов занимаются сторонние скрипты, размещённые на сторонних серверах (то есть не обязательно на серверах Яндекса).

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

Допустим, что вы решили разработать и опубликовать свой собственный навык для Яндекс.Алисы. Первое, что вам нужно сделать, — это… изучить документацию. Документация доступна вот по этой ссылке и доступна без регистрации на Яндексе. Она довольно обширна, но слегка запутана (поэтому я и решил написать свой собственный мануал). Есть примеры на node.js и python, плюс, если покопаться, — можно найти ссылки на готовые фреймворки для разных языков программирования. Впрочем, как вы знаете, я предпочитаю чистый кодинг и мои примеры будут на чистом php (тем более, на самом деле, всё не так страшно как кажется).

Далее нужно всё-таки зарегистрироваться на Яндексе. При этом вы получите доступ ко всем сервисам Яндекса, в том числе и к Диалогам. На этой платформе вы должны будете оформить всю внешнюю часть своего навыка, фасад, который будет виден пользователям со стороны Алисы (название, активационное имя, приватность, иконка и так далее). И, самое главное, — здесь вы должны будете указать «Webhook URL» — адрес, по которому платформа Диалоги будет отправлять вашим скриптам сообщения, содержащие распознанные Алисой реплики пользователя.

Главная страница Яндекс.Диалогов

главная страница Яндекс.Диалогов

[свернуть]

Если вы нажмёте кнопку «Создать навык» на главной странице Яндекс.Диалогов, то после авторизации попадёте в раздел, называемый консоль разработчика. На главной странице этого раздела будут отображаться все созданные вами ранее диалоги (навыки) с указанием их статуса (черновик или опубликован). Здесь же вы можете создать новый диалог, просто нажав на кнопку «Создать диалог».

Главная страница консоли разработчика Яндекс.Диалогов

главная страница консоли разработчика Яндекс.Диалогов

[свернуть]

Нажав на кнопку «Создать диалог» вы попадёте на страницу, где нужно будет ввести настройки создаваемого навыка: Имя, Активационное имя, Webhook URL, Приватность, и так далее. Настроек не так много и все они снабжены достаточно понятными комментариями. Единственное, что может вызвать вопросы — это последний пункт (Связка аккаунтов / Авторизация). В рамках этой статьи мы рассматривать авторизацию не будем (про это будет отдельная статья), скажу лишь, что она позволяет исключить выполнение несанкционированных действий в ваших аккаунтах на сторонних веб-сервисах. Иногда это может быть критично, например, вы вряд ли хотели бы чтобы вашим умным домом управлял кто-нибудь посторонний. Для простых навыков авторизация не нужна и пока можете ей не заморачиваться.

На вкладке «Общие сведения» (внизу) можно найти «Идентификатор диалога». Этот идентификатор создаётся автоматически и является секретным. Он будет содержаться в каждом сообщении от платформы Диалоги и по нему ваш веб-сервис сможет в дальнейшем распознать от какого именно навыка оно получено.

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

  1. Купить доменное имя. Яндекс.Диалоги не позволяют отправлять данные просто по IP.
  2. Купить хостинг. С хостингом возможны варианты: независимый хостинг, хостинг на домашнем компе (нужен белый IP) или хостинг в Яндекс.Облаке. В настоящее время, в качестве стимулирующей меры, для размещения навыков в Яндекс.Облаке компания Яндекс выделяет гранты сроком на 1 год.
  3. Приобрести и установить для своего домена SSL-сертификат и настроить https. Сейчас большинство хостеров ставят бесплатные сертификаты и опять же бесплатно настраивают для вашего сайта https, однако если вы решили привязать домен к домашнему серваку — придётся немного напрячься.
  4. Подтвердить права на домен, на котором размещён ваш веб-сервис (домен из указанного вами Webhook URL). Подтверждение прав можно получить с помощью сервиса Яндекс.Вебмастер. Сервис предлагает несколько способов подтверждения на выбор, самым простым из которых, на мой взгляд, является размещение специального HTML-файла в корне вашего сайта.

Формальные требования к навыкам. Поскольку внешне всё выглядит так, как-будто пользователь общается с Алисой (считай с Яндексом), и этот пользователь вообще ничего не знает ни про какие сторонние сервисы, то любые возникшие в процессе этого общения технические или морально-этические проблемы будут бросать тень в первую очередь на компанию Яндекс и на её продукт. В связи с этим Яндекс предъявляет к публикуемым на своей платформе навыкам ряд общих и специальных требований, среди которых: законность, этичность, добросовестность и так далее.

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

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

Техника взаимодействия платформы Диалоги и сторонних веб-сервисов. Взаимодействие вашего веб-сервиса и платформы Диалоги происходит путём отправки платформой Диалоги POST-запросов на указанный вами при настройке Webhook URL. При этом ваш веб-сервис должен не позднее, чем через 3 секунды, сформировать и выдать ответ. Если ответы регулярно не приходят в течении трёх секунд, то Диалоги могут попросту заблокировать ваш навык и исключить его из каталога.

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

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

  1. Часть 1. Что такое голосовой помощник Алиса, как она работает и зачем нужна.
  2. Часть 2. Что такое навыки Алисы, как они работают и что нужно для разработки своего собственного навыка?
  3. Часть 3. Проектирование сценария навыка.

Добавить комментарий