- Что такое навыки Алисы?
- Как сторонние навыки интегрируются с Алисой?
- Формальные требования к навыкам.
- Техника взаимодействия платформы Диалоги и сторонних веб-сервисов.
Что такое навыки Алисы? Говоря по простому, навыки — это любые веб-сервисы, предоставляющие какой-либо полезный (или не очень) функционал. Как только Алиса научилась (ну, или сотрудники Яндекса её научили) пользоваться определённым веб-сервисом, — можно говорить о том, что у Алисы появился новый навык.
Например, когда мы спрашиваем Алису, что такое трансформатор, — она может воспользоваться поисковой машиной Яндекса и озвучить нам определение трансформатора, скажем, из википедии. В данном случае поиск информации — это веб-сервис, которым Алиса умеет пользоваться и ответы которого она умеет озвучивать.
Своих веб-сервисов у Яндекса много: Такси, Еда, Карты и так далее. И всеми этими веб-сервисами программисты Яндекса научили пользоваться Алису. Там не менее, своих сервисов Яндексу показалось мало и в марте 2018 года компания открыла доступ к разработке навыков для голосового помощника Алиса всем желающим. То есть сторонние разработчики получили возможность интегрировать с Алисой свои собственные веб-сервисы.
В случае со сторонними навыками, функции Алисы, фактически, сводятся только к организации интерфейса взаимодействия между пользователем и сторонним веб-сервисом (навыком). Внешне всё выглядит как диалог с Алисой, реально — Алиса только преобразует речь в текст и обратно, а обработкой текста и формированием ответов занимаются сторонние скрипты, размещённые на сторонних серверах (то есть не обязательно на серверах Яндекса).
Как сторонние навыки интегрируются с Алисой? Интеграция сторонних сервисов и Алисы производится при помощи платформы Яндекс.Диалоги. Это вполне логично, поскольку, как я уже сказал, задача Яндекса — обеспечить диалог вашего веб-сервиса и пользователя Алисы. Яндексу без разницы что делает ваш сервис (с технической точки зрения), для него главное — работоспособность диалога между вашим сервисом и пользователем. С точки зрения самой платформы Диалоги, навык — это и есть диалог.
Допустим, что вы решили разработать и опубликовать свой собственный навык для Яндекс.Алисы. Первое, что вам нужно сделать, — это… изучить документацию. Документация доступна вот по этой ссылке и доступна без регистрации на Яндексе. Она довольно обширна, но слегка запутана (поэтому я и решил написать свой собственный мануал). Есть примеры на node.js и python, плюс, если покопаться, — можно найти ссылки на готовые фреймворки для разных языков программирования. Впрочем, как вы знаете, я предпочитаю чистый кодинг и мои примеры будут на чистом php (тем более, на самом деле, всё не так страшно как кажется).
Далее нужно всё-таки зарегистрироваться на Яндексе. При этом вы получите доступ ко всем сервисам Яндекса, в том числе и к Диалогам. На этой платформе вы должны будете оформить всю внешнюю часть своего навыка, фасад, который будет виден пользователям со стороны Алисы (название, активационное имя, приватность, иконка и так далее). И, самое главное, — здесь вы должны будете указать «Webhook URL» — адрес, по которому платформа Диалоги будет отправлять вашим скриптам сообщения, содержащие распознанные Алисой реплики пользователя.
Если вы нажмёте кнопку «Создать навык» на главной странице Яндекс.Диалогов, то после авторизации попадёте в раздел, называемый консоль разработчика. На главной странице этого раздела будут отображаться все созданные вами ранее диалоги (навыки) с указанием их статуса (черновик или опубликован). Здесь же вы можете создать новый диалог, просто нажав на кнопку «Создать диалог».
Нажав на кнопку «Создать диалог» вы попадёте на страницу, где нужно будет ввести настройки создаваемого навыка: Имя, Активационное имя, Webhook URL, Приватность, и так далее. Настроек не так много и все они снабжены достаточно понятными комментариями. Единственное, что может вызвать вопросы — это последний пункт (Связка аккаунтов / Авторизация). В рамках этой статьи мы рассматривать авторизацию не будем (про это будет отдельная статья), скажу лишь, что она позволяет исключить выполнение несанкционированных действий в ваших аккаунтах на сторонних веб-сервисах. Иногда это может быть критично, например, вы вряд ли хотели бы чтобы вашим умным домом управлял кто-нибудь посторонний. Для простых навыков авторизация не нужна и пока можете ей не заморачиваться.
На вкладке «Общие сведения» (внизу) можно найти «Идентификатор диалога». Этот идентификатор создаётся автоматически и является секретным. Он будет содержаться в каждом сообщении от платформы Диалоги и по нему ваш веб-сервис сможет в дальнейшем распознать от какого именно навыка оно получено.
Далее. Скрипты вашего навыка, как я уже сказал, должны размещаться где-то на сторонних серверах и должны быть доступны из интернета (чтобы платформа Диалоги могла отправить данные на указанный вами URL). Для этого вам нужно:
- Купить доменное имя. Яндекс.Диалоги не позволяют отправлять данные просто по IP.
- Купить хостинг. С хостингом возможны варианты: независимый хостинг, хостинг на домашнем компе (нужен белый IP) или хостинг в Яндекс.Облаке. В настоящее время, в качестве стимулирующей меры, для размещения навыков в Яндекс.Облаке компания Яндекс выделяет гранты сроком на 1 год.
- Приобрести и установить для своего домена SSL-сертификат и настроить https. Сейчас большинство хостеров ставят бесплатные сертификаты и опять же бесплатно настраивают для вашего сайта https, однако если вы решили привязать домен к домашнему серваку — придётся немного напрячься.
- Подтвердить права на домен, на котором размещён ваш веб-сервис (домен из указанного вами Webhook URL). Подтверждение прав можно получить с помощью сервиса Яндекс.Вебмастер. Сервис предлагает несколько способов подтверждения на выбор, самым простым из которых, на мой взгляд, является размещение специального HTML-файла в корне вашего сайта.
Формальные требования к навыкам. Поскольку внешне всё выглядит так, как-будто пользователь общается с Алисой (считай с Яндексом), и этот пользователь вообще ничего не знает ни про какие сторонние сервисы, то любые возникшие в процессе этого общения технические или морально-этические проблемы будут бросать тень в первую очередь на компанию Яндекс и на её продукт. В связи с этим Яндекс предъявляет к публикуемым на своей платформе навыкам ряд общих и специальных требований, среди которых: законность, этичность, добросовестность и так далее.
Кроме того, первоначально, после создания ваши навыки получают статус «Черновик» и не видны никому, кроме вас. Вы можете проверить работоспособность своего навыка на специальной вкладке — «Тестирование». Далее, когда вы всё отладили и считаете, что всё работает нормально, вы можете отправить навык на модерацию. Модерация проводится вручную и в ходе неё проверяется как соответствие навыка предъявляемым выше формальным требованиям, так и техническая работоспособность. И только после успешного прохождения модерации ваш навык может быть опубликован и стать доступным всем желающим.
На этом, однако, надзор за навыком не заканчивается, платформа Диалоги будет периодически проверяет доступность и работоспособность вашего навыка и может выключить его при обнаружении проблем.
Техника взаимодействия платформы Диалоги и сторонних веб-сервисов. Взаимодействие вашего веб-сервиса и платформы Диалоги происходит путём отправки платформой Диалоги POST-запросов на указанный вами при настройке Webhook URL. При этом ваш веб-сервис должен не позднее, чем через 3 секунды, сформировать и выдать ответ. Если ответы регулярно не приходят в течении трёх секунд, то Диалоги могут попросту заблокировать ваш навык и исключить его из каталога.
Все сообщения (запросы и ответы) передаются упакованными в формате JSON, а их структуру и список полей можно посмотреть в документации, вот на этой странице. Перечислять все поля запроса я не буду, скажу лишь, что, помимо самой распознанной реплики, здесь передаётся ещё много чего интересного, начиная от идентификатора конкретного экземпляра клиентского приложения, при помощи которого происходит диалог, и заканчивая идентификатором конкретной сессии. Аналогично, ответ не ограничен только текстом, который должен быть озвучен (подробности читайте в документации).
На сегодня на этом всё. А в следующий раз я расскажу как спроектировать работоспособный навык и какими свойствами он должен обладать.
- Часть 1. Что такое голосовой помощник Алиса, как она работает и зачем нужна.
- Часть 2. Что такое навыки Алисы, как они работают и что нужно для разработки своего собственного навыка?
- Часть 3. Проектирование сценария навыка.