Образ в Яндекс.Облаке

Вы можете запустить сервисы для навыков на Node.js и Python с помощью образа Яндекс.Диалоги из каталога Яндекс.Облака.

При регистрации в Облаке вы можете воспользоваться пробным периодом (предоставляется грант на 4000 рублей, действующий 60 дней).

  1. Подготовка
  2. Создайте виртуальную машину
  3. Настройте DNS
  4. Сгенерируйте SSL-сертификат
  5. Запустите навыки
  6. Измените код навыков

Подготовка

Перед тем, как создавать виртуальную машину Яндекс.Облака для ваших диалогов:

  1. Подготовьте доменное имя, которое будет указывать на IP-адрес вашей виртуальной машины. Доменное имя необходимо, чтобы зарегистрировать навык в Яндекс.Диалогах.

  2. Если у вас еще нет платежного аккаунта в Облаке, создайте его.

Создайте виртуальную машину

Перед созданием виртуальной машины убедитесь, что в каталоге Облака есть сеть с подсетью, в которой может быть размещена ВМ. Для этого на странице каталога нажмите плашку Yandex Virtual Private Cloud. Если в списке есть сеть — нажмите на нее, чтобы увидеть список подсетей. Если ни одной подсети или сети нет, создайте их.

Чтобы создать виртуальную машину для навыка:

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

  2. Укажите Имя и выберите зону доступности на свое усмотрение (поле Описание заполнять необязательно).

  3. Нажмите кнопку Выбрать на плашке Каталог в блоке Публичные образы.

  4. Наберите «диалоги» в строке поиска и нажмите кнопку Выбрать на плашке образа Яндекс.Диалоги.

  5. В блоке Диски будет автоматически выбран нужный образ загрузочного диска.

  6. В блоке Вычислительные ресурсы вы можете выбрать любое количество ресурсов, но для функционального тестирования навыков хватит минимальной конфигурации:

    • Гарантированная доля vCPU — 5%.

    • vCPU — 1.

    • RAM — 1 ГБ.

  7. В блоке Сетевые настройки нажмите Добавить сеть и выберите нужные сеть и подсеть из доступных.

  8. В блоке Доступ задайте логин пользователя Linux для виртуальной машины и публичный SSH-ключ для доступа к ней.

    Чтобы сгенерировать SSH-ключ, используйте PuTTygen для Windows и ssh-keygen в Linux и macOS.

  9. При первом запуске виртуальной машины отредактируйте конфигурацию nginx:

    $ sudo nano /etc/nginx/sites-available/alice.conf

    В директиве server_name укажите имя вашего домена. Например так (не забудьте убрать «#» в начале строки):

    server {
      server_name example.com www.example.com;
      ...

Настройте DNS

Доменное имя, которое вы хотите использовать для навыков, нужно связать с созданной виртуальной машиной.

  1. В интерфейсе Яндекс.Облака нажмите на виртуальную машину в списке и найдите поле Публичный IPv4 на вкладке Обзор.

  2. Найденный адрес нужно вставить в A-запись для вашего домена.

    Пример для reg.ru

    Пример предполагает, что вы настраиваете DNS для основного домена (например, example.com), а не для поддомена.

    1. Перейдите в список ваших доменов и нажмите на имя нужного домена.

    2. Перейдите по ссылке Управление зоной в блоке Управление доменом.

    3. Создайте или отредактируйте записи так, чтобы у домена было две A-записи с IP-адресом виртуальной машины: для поддоменов «@» (указывает на основной домен) и «www».

  3. Подождите 15-20 минут, пока изменения DNS-записей вводятся в действие.

Сгенерируйте SSL-сертификат

URL навыка для Яндекс.Диалогов обязательно должен быть доступен по протоколу HTTPS. Чтобы легко управлять сертификатами, в образ Яндекс.Диалогов интегрирована утилита certbot и сервер nginx с плагином для certbot.

Чтобы сгенерировать сертификат:

  1. Войдите на виртуальную машину по протоколу SSH.

  2. Запустите команду генерации сертификатов, указав ваш домен и email, с которым домен был зарегистрирован:

    $ sudo certbot --nginx --agree-tos -m example@example.com -d example.com --max-log-backups 1000

    По умолчанию срок действия сертификата — 3 месяца, после этого его нужно будет обновить. Внимательно читайте инструкции, которые выводит certbot.

    Примечание. Если вы видите ошибку Unable to install the certificate, проверьте директиву server_name в конфигурации nginx.

Запустите навыки

После настройки DNS и сертификатов вы можете запустить веб-сервисы для примеров навыков:

$ sudo systemctl start nginx
$ sudo systemctl start alice-test
$ sudo systemctl start alice-test-js

Затем проверьте работу сервисов в Яндекс.Диалогах: укажите https://example.com/parrot/ или https://example.com/buy-elephant/ в поле Webhook URL, нажмите кнопку Сохранить и перейдите на вкладку Тестирование.

Измените код навыков

Чтобы изменить обработку запросов, отредактируйте исходные файлы навыков:

  • Код и конфигурация навыка на Python (/buy-elephant) находится в каталоге /srv/alice-buy-elephant/, код обработки запроса — в файле api.py.

  • Код и конфигурация навыка на Node.js (/parrot) находится в каталоге /srv/alice-parrot/, код обработки запроса — в файле index.js.

После того, как вы изменили исходный код, нужно перезапустить сервис навыка:

  • Для навыка на Python — sudo systemctl restart alice-test

  • Для навыка на Node.js — sudo systemctl restart alice-test-js