Размещение навыка на своем сервере

Есть множество вариантов размещения навыка на собственном сервере. Пример навыка на Python адаптирован для размещения при помощи менеджера контейнеров Dokku.

Примечание. Помните, что для размещения навыка на собственном сервере у вас должен быть домен.

Подготовка

  1. Установите Dokku одним из методов:

    Для систем на Debian введите команду
    wget https://raw.githubusercontent.com/dokku/dokku/v0.26.8/bootstrap.sh;
    sudo DOKKU_TAG=v0.26.8 bash bootstrap.sh
    Скопировано

    Установка длится 5–10 минут.

  2. Установите SSH-ключ. Перед выполнением следующей команды убедитесь, что ключ уже доступен в файле ~/.ssh/authorized_keys.
    cat ~/.ssh/authorized_keys | dokku ssh-keys:add admin
    Скопировано
  3. Настройте виртуальный хост. Вместо example.com укажите домен, к которому у вас есть доступ и который содержит A record или CNAME, указывающий на IP вашего сервера.
    dokku domains:set-global example.com
    Скопировано

    Вы также можете использовать IP вашего сервера.

    dokku domains:set-global 10.0.0.2
    Скопировано

Размещение веб-приложения

Подробнее о размещении приложения читайте в документации Dokku.

  1. Разверните приложение. Скачайте или скопируйте исходный код примера из GitHub-репозитория Яндекса. Для этого на вашем сервере должен быть включен SSH-доступ к github.
    git clone https://github.com/yandex/alice-skills/tree/master/python/buy-elephant/now
    Скопировано
  2. Соберите приложение.
    dokku apps:create buy-elephant
    Скопировано
  3. Создайте резервные службы. Dokku не предоставляет поддержку баз данных по умолчанию, но ее можно подключить при помощи плагинов. Для установки плагинов нужно сменить пользователя на root. Например, Postgress:
    sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git
    Скопировано

    Создайте базу данных mydatabase:

    dokku postgres:create mydatabase
    Скопировано

    После установки укажите базу данных в приложении:

    dokku postgres:link mydatabase buy-elephant
    Скопировано
  4. Разместите приложение.
    cd buy-elephant
    git remote add dokku dokku@example.com:buy-elephant
    git push dokku main:master
    Скопировано

    Как только размещение завершится, будет сгенерирован URL приложения. Например:

    =====> Application deployed:
    http://buy-elephant.example.com
  5. Чтобы поддержать https-запросы, надо импортировать SSL-сертификаты из плагина Dokku.
    dokku certs:add buy-elephant server.crt server.key
    Скопировано

Добавление Webhook URL

  1. Откройте вкладку Настройки.
  2. В блоке Backend в поле Webhook URL укажите URL приложения.
  3. Внизу страницы нажмите кнопку Сохранить.
  4. Проверьте работу навыка на вкладке Тестирование. Подробнее см. раздел Тестирование навыка.

Тестирование навыка

Подробнее о тестировании навыка.

  1. Проверьте работу навыка на вкладке Тестирование. Если все настроено правильно, появится приветствие: Привет! Купи слона!
  2. Отправьте сообщение и убедитесь, что навык отвечает.
  3. Попробуйте изменить код навыка. Откройте файл api.py в визуальном редакторе. Отредактируйте приветственную фразу: в тексте кода замените 'Привет! Купи слона!' на 'Добрый день! Не желаете купить слона?'.
  4. Повторно разверните приложение с помощью консольной команды:
    dokku ps:rebuild buy-elephant
    Скопировано
  5. Обновите страницу на вкладке Тестирование. Проверьте изменения в навыке.

Чтобы писать более сложные навыки, ознакомьтесь с протоколом работы Яндекс Диалогов.

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