Программистам
- Создайте функцию
- Создайте версию функции
- Укажите функцию в настройках навыка
- Проверьте работу навыка
- Что дальше
- Полезные ссылки
Эта инструкция поможет вам подготовить код на Node.js или Python, запустить его и протестировать навык.
Для примера создадим навык «Попугай»: он повторяет все, что написал или сказал пользователь.
Создайте функцию
- Перейдите по ссылке. Примите условия и нажмите кнопку Войти.
- Введите название нового облака и нажмите кнопку Создать.
Создайте в Yandex Cloud функцию для навыка:
- Откройте консоль управления.
- Выберите Cloud Functions.
- Нажмите кнопку Создать функцию.
Введите имя функции. Условия:
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Например,
my-first-function
.- Нажмите кнопку Создать.
- Если у вас нет платежного аккаунта, зарегистрируйте его.
Платежный аккаунт необходим для любых сервисов Yandex Cloud, даже бесплатных. Функции Cloud Functions для навыков Алисы не тарифицируются — Yandex Cloud не будет списывать деньги с вашей карты.
Сразу после создания функция содержит только метаинформацию: имя, описание, уникальный идентификатор и т. д. Вы добавите в функцию код навыка на следующем шаге.
Создайте версию функции
Каждая версия функции — это исходный код на языке программирования. Поддерживаются Node.js, Python, Go, Java, .NET Core, PHP, R, Bash.
- Скачайте с GitHub файл с примером index.js и создайте ZIP-архив parrot-js.zip с этим файлом.
- В консоли управления в каталоге, где хотите создать версию функции, откройте Cloud Functions
- Выберите функцию.
- В разделе Последняя версия нажмите кнопку Создать в редакторе.
Задайте параметры версии:
- Среда выполнения:
nodejs12
. - Таймаут, секунды: 2.
- Память: 128 МБ.
- Сервисный аккаунт: Не выбрано.
Подготовьте код функции:
- Способ: ZIP-архив.
- Файл:
parrot-js.zip
. - Точка входа:
index.handler
.
- Нажмите кнопку Создать версию.
- Скачайте с GitHub файл с примером parrot.py и создайте ZIP-архив parrot-py.zip с этим файлом.
- В консоли управления в каталоге, где хотите создать версию функции, откройте Cloud Functions
- Выберите функцию.
- В разделе Последняя версия нажмите кнопку Создать в редакторе.
Задайте параметры версии:
- Среда выполнения:
python37
. - Таймаут, секунды: 2.
- Память: 128 МБ.
- Сервисный аккаунт: Не выбрано.
Подготовьте код функции:
- Способ: ZIP-архив.
- Файл:
parrot-py.zip
. - Точка входа:
parrot.handler
.
- Нажмите кнопку Создать версию.
Вне зависимости от таймаута в настройках версии Яндекс Диалоги будут ждать ответа функции не больше 4,5 секунды.
Откроется страница функции, где в блоке История версий появится ваша версия с тегом $latest
.
Укажите функцию в настройках навыка
После того как навык заработает, зарегистрируйте его:
- Перейдите в консоль разработчика навыка.
- Создайте навык и перейдите на вкладку Настройки.
- В блоке Backend выберите вариант Функция в Yandex Cloud.
- Из выпадающего списка выберите функцию.
- Заполните обязательные поля в блоках Основные настройки и Публикация в каталоге.
- Внизу страницы нажмите кнопку Сохранить.
В списке отображаются функции, которые вы имеете право просматривать. Но навык заработает, только если вы имеете право запускать функцию. Разрешение на запуск входит в роли Yandex Cloud serverless.functions.invoker, editor и выше.
Проверьте работу навыка
- На странице навыка откройте вкладку Тестирование.
- Если все настроено правильно, навык предложит начать беседу: «Hello! I'll repeat anything you say to me».
- Отправьте сообщение с любым текстом и убедитесь, что вам пришел такой же ответ.
- Попробуйте изменить код навыка. Откройте функцию во вкладке Редактор в консоли Yandex Cloud и отредактируйте код:Измените приветственную фразу
Найдите строку и измените текст в кавычках. Например:
До:
let text = 'Hello! I\'ll repeat anything you say to me.'
После:
let text = 'Hello! I\'ll repeat anything you say to me twice.'
До:
text = 'Hello! I\'ll repeat anything you say to me.'
После:
text = 'Hello! I\'ll repeat anything you say to me twice.'
Измените ответДобавьте еще один повтор реплики:
До:
text = request['original_utterance'];
После:
text = request['original_utterance'].concat('\n').repeat(2);
До:
text = event['request']['original_utterance']
После:
text = '\n'.join(2*[event['request']['original_utterance']])
Чтобы сохранить новую версию функции, нажмите Создать версию. Проверьте изменения в навыке.
- Попробуйте заменить код и среду выполнения в рамках одной функции. Функция останется активной, и накопленная статистика сохранится.
Что дальше
- Попробуйте выполнить другие функции, которые возвращают в ответе изображения и проигрывают звуки.
- Узнайте обо всех дополнительных возможностях в протоколе работы Яндекс Диалогов и модели программирования Cloud Functions.
Полезные ссылки
- Видео «Навык за 20 минут»