Программистам

  1. Создайте функцию
  2. Создайте версию функции
  3. Укажите функцию в настройках навыка
  4. Проверьте работу навыка
  5. Что дальше
  6. Полезные видео

Эта инструкция поможет вам подготовить код на Node.js, Python, PHP, R, Go, Java или C#, запустить его и протестировать навык.

Для примера создадим навык «Попугай»: он повторяет все, что написал или сказал пользователь.

Создайте функцию

Если вы не работали с Yandex Cloud
  1. Перейдите по ссылке. Примите условия и нажмите кнопку Войти.
  2. Введите название нового облака и нажмите кнопку Создать.

Создайте в Yandex Cloud функцию для навыка:

  1. Выберите Cloud Functions.
  2. Нажмите кнопку Создать функцию.
  3. Введите имя функции. Условия:

    • длина — от 3 до 63 символов;
    • может содержать строчные буквы латинского алфавита, цифры и дефисы;
    • первый символ — буква, последний — не дефис.

    Например, my-first-function.

  4. Нажмите кнопку Создать.
  5. Если у вас нет платежного аккаунта, зарегистрируйте его.

Платежный аккаунт необходим для любых сервисов Yandex Cloud, даже бесплатных. Функции Cloud Functions для навыков Алисы не тарифицируются — Yandex Cloud не будет списывать деньги с вашей карты.

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

Создайте версию функции

Каждая версия функции — это исходный код на языке программирования. Поддерживаются Node.js, Python, Go, Java, C#, PHP, R.

  1. Сохраните пример кода в файл с названием index.js (или скачайте готовый файл с GitHub) и создайте ZIP-архив parrot-js.zip с этим файлом.

    module.exports.handler = async (event, context) => {
        const {version, session, request} = event;
    
        let text = "Hello! I\'ll repeat anything you say to me.";
        if (request["original_utterance"].length > 0)
            text = request["original_utterance"];
        return {
            version,
            session,
            response: {
                text: text,
                end_session: false,
            },
        };
    };
    Скопировано
  2. В консоли управления в каталоге, где хотите создать версию функции, откройте Cloud Functions
  3. Выберите функцию.
  4. В разделе Последняя версия нажмите кнопку Создать в редакторе.
  5. Задайте параметры версии:

    • Среда выполнения: nodejs12.
    • Таймаут, секунды: 2.
    • Память: 128 МБ.
    • Сервисный аккаунт: Не выбрано.
  6. Подготовьте код функции:

    • Способ: ZIP-архив.
    • Файл: parrot-js.zip.
    • Точка входа: index.handler.
  7. В правом верхнем углу нажмите кнопку Создать версию.

Вне зависимости от таймаута в настройках версии Яндекс Диалоги будут ждать ответа функции не больше 4,5 секунды.

Откроется страница функции, где в блоке История версий появится ваша версия с тегом $latest.

Укажите функцию в настройках навыка

После того как навык заработает, зарегистрируйте его:

  1. Создайте навык и перейдите на вкладку Настройки.
  2. В блоке Backend выберите вариант Функция в Яндекс Облаке.
  3. Из выпадающего списка выберите функцию.
  4. Заполните обязательные поля в блоках Основные настройки и Публикация в каталоге.
  5. Внизу страницы нажмите кнопку Сохранить.

В списке отображаются функции, которые вы имеете право просматривать. Но навык заработает, только если вы имеете право запускать функцию. Разрешение на запуск входит в роли Yandex Cloud functions.functionInvoker, editor и выше.

Проверьте работу навыка

  1. На странице навыка откройте вкладку Тестирование.
  2. Если все настроено правильно, навык предложит начать беседу: «Hello! I'll repeat anything you say to me».
  3. Отправьте сообщение с любым текстом и убедитесь, что вам пришел такой же ответ.
  4. Попробуйте изменить код навыка. Откройте функцию во вкладке Редактор в консоли 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 = request['original_utterance'];

    После: text = request['original_utterance'].concat('\n').repeat(2);

    Чтобы сохранить новую версию функции, нажмите Создать версию. Проверьте изменения в навыке.

  5. Попробуйте заменить код и среду выполнения в рамках одной функции. Функция останется активной, и накопленная статистика сохранится.

Что дальше

Полезные видео

Школа Алисы. Как бесплатно разместить навык в Yandex Cloud
Навык за 20 минут

Служба поддержки