Примеры навыков в AWS

Примеры навыков для Node.js и Python адаптированы и проверены на платформе Amazon Web Services. Если вы не пользовались этим сервисом раньше, вы сможете развернуть и проверить свой навык в AWS в рамках бесплатного периода.

  1. Подготовка
  2. Node.js
  3. Python
  4. Настройка HTTPS для AWS
  5. Регистрация навыка

Подготовка

Создайте учетную запись AWS, если у вас ее еще нет, и дождитесь активации сервиса (может занимать до 24 часов).

Node.js

Исходный код навыка доступен в GitHub-репозитории Яндекса.

Создайте веб-приложение на базе Node.js по инструкции в документации Amazon Elastic Beanstalk (на английском):

  • Убедитесь, что на этапе выбора типа среды отмечен вариант Web server environment.
  • В блоке Platform выберите вариант Preconfigured platform и пункт Node.js в выпадающем списке.
  • В блоке Application code выберите Upload your code и загрузите архив c исходным кодом навыка.

На этом этапе можно проверить работу навыка по протоколу HTTP — попробовать отправить POST-запрос согласно протоколу. Но для работы с Яндекс.Диалогами необходимо, чтобы навык поддерживал шифрование — для этого нужно настроить HTTPS.

Python

Создайте веб-приложение на базе Python и Flask по инструкции в документации AWS (на английском), с некоторыми поправками:
  • при конфигурации приложения укажите версию Flask 0.12.2;
  • в файл application.py вставьте код навыка, размещенный в GitHub-репозитории Яндекса.

На этом этапе можно проверить работу навыка по протоколу HTTP — попробовать отправить POST-запрос согласно протоколу. Но для работы с Яндекс.Диалогами необходимо, чтобы навык поддерживал шифрование — для этого нужно настроить HTTPS.

Настройка HTTPS для AWS

Чтобы ваше приложение Elastic Beanstalk могло использовать HTTPS, его следует настроить согласно документации AWS.

Один из вариантов настройки:

  1. Сгенерируйте и самостоятельно подпишите сертификат по стандарту X.509. Для этого можно использовать приложение OpenSSL (например, по этой инструкции).
  2. Загрузите полученный сертификат в Amazon Certificate Manager.
  3. Создайте балансировщик нагрузки для приложения по инструкциям в документации AWS:

    1. Измените тип среды вашего приложения на Load balanced.
    2. Создайте балансер.
  4. Настройте балансировщик для приема шифрованных соединений на порт 443 с созданным сертификатом по инструкции AWS. Не забудьте нажать кнопку Apply после того, как настроите прослушивание порта.

После этого приложение, к которому привязан балансировщик, сможет принимать соединения по HTTPS, а вы сможете зарегистрировать навык в Яндекс.Диалогах со ссылкой на это приложение.

Регистрация навыка

После того, как навык заработает, его можно зарегистрировать, указав URL приложения в поле Webhook URL. Сразу после этого работу навыка можно будет проверить на вкладке Тестирование. Чтобы писать более сложные навыки, ознакомьтесь с протоколом работы Яндекс.Диалогов.