Навык для п оиска навыков
У помощника Яндекс Алиса уже очень много навыков. И пользователю нужно помочь найти нужный. Было бы здорово, если бы существовал навык, с помощью которого Алиса сама искала подходящие навыки в своем каталоге.
В этом туториале мы создадим такой навык на Aimylogic, и будем при этом использовать сразу несколько хитростей. Поехали!
Рабочий вариант
Мы уже опубликовали навык, сделанный по этому туториалу в каталоге Алисы. Вы можете посмотреть, как он работает, сказав Алисе «Запусти навык Поиск навыков».
Логика работы навыка
Наш бот будет уметь искать другие навыки из каталога Алисы по запросу пользователя. Причем бот должен уметь выдавать не только название навыка, но и рассказывать, какой фразой его нужно запустить.
Где и как искать навыки
Итак, нам нужно для начала понять, как технически наш бот будет искать навыки по запросу пользователя. В Aimylogic есть блок HTTP запрос, с помощью которого можно отправлять запросы к любому сервису в Интернете и разбирать ответы.
Но куда отправлять запросы и как вытаскивать информацию о навыках?
Для этого мы зайдем на сайт Навыки Алисы, где Яндекс публикует все навыки.
Здесь же есть и поисковая строка, и меню категорий для навыков. Если поп робовать что-то поискать, то каталог быстро выдаст список. Нам нужно узнать, на какой URL уходят HTTP запросы и в каком формате, чтобы потом использовать это в блоке HTTP запрос в сценарии нашего бота.
Залезаем под капот
Для этого в браузере Google Chrome на странице каталога навыков нажмем правую кнопку мыши и выберем пункт «Просмотреть код». Откроется инспектор. Нажмите там на вкладку Network, чтобы увидеть все запросы, которые посылаются с данной страницы сайта.
Теперь попробуйте что-нибудь поискать в каталоге. Вы увидите в инспекторе, что поисковые запросы уходят по адресу такого вида
https://dialogs.yandex.ru/store/api/dialogs/search?q=запрос
В результате запросов всегда возвращается ответ в таком формате
То есть JSON объект, в котором есть поле result, в котором есть массив items — наш искомый массив найденных навыков. У каждого из них есть name — название навыка и examples — примеры фраз, которыми он запускается.
Все что нам нужно! Теперь начинаем создавать бота!
Простая версия
Наша версия навыка будет просто искать навыки по запросу. Вот так этот вариант выглядит в редакторе Aimylogic
Бот предлагает поискать навыки и ждет, когда пользователь скажет что-нибудь. Далее ищет навык в каталоге и выдает название навыка и как им пользоваться, а также показывает кнопку «Еще варианты». При нажатии на нее — выдает следующий навык из найденных. И так до тех пор, пока не исчерпает весь список.
Создаем бота
Переходим в Aimylogic и создаем нового бота. На первый экран добавим приветствие (блок Текст)
Таким образом бот при старте сразу спросит пользователя, что он ищет.
Хитрость номер 1. В голосовых каналах всегда нужно говорить пользователю, чего мы от него ожидаем сейчас.
Поисковый запрос
Нажмите на Сохранить и добавьте на тот же экран блок Интенты
Добавьте в него шаблон $TEXT. Под этот шаблон подходит любая фраза. Когда пользователь скажет что-нибудь, то бот сохранит всю фразу в переменную $TEXT. Не забудьте поставить галочку «Глобальный блок». Нажмите на Сохранить.
Хитрость 2. Чтобы использовать шаблон $TEXT во фразах, нужно переключить переключатель «кавычки» на «@»
Ищем навыки
Теперь давайте научим нашего бота искать что-нибудь в каталоге навыков.
Кликните на блоке фраз с шаблоном $TEXT и на новом экране добавьте блок HTTP запрос
В поле URL пропишите такой адрес
https://dialogs.yandex.ru/store/api/dialogs/search?q=${TEXT}
Когда пользователь говорит фразу, бот автоматически сохраняет ее в переменную $TEXT (как указано в шаблоне) и подставляет в URL запроса. И таким образом получает навыки, которые подходят под запрос.
Также добавьте переменную items
$httpResponse.result.items
Так бот разберет ответ от поискового сервиса и сохранит в переменную items массив найденных навыков.