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

Есть множество вариантов размещения навыка на собственном сервере. Пример навыка на 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. Откройте вкладку Настройки.
  3. В блоке Backend в поле Webhook URL укажите URL приложения.
  4. Внизу страницы нажмите кнопку Сохранить.
  5. Проверьте работу навыка на вкладке Тестирование. Подробнее см. раздел Тестирование навыка.

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

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

  1. Проверьте работу навыка на вкладке Тестирование. Если все настроено правильно, появится приветствие: Привет! Купи слона!

  2. Отправьте сообщение и убедитесь, что навык отвечает.

  3. Попробуйте изменить код навыка. Откройте файл api.py в визуальном редакторе. Отредактируйте приветственную фразу: в тексте кода замените 'Привет! Купи слона!' на 'Добрый день! Не желаете купить слона?'.

  4. Повторно разверните приложение с помощью консольной команды:

    dokku ps:rebuild buy-elephant
    
  5. Обновите страницу на вкладке Тестирование. Проверьте изменения в навыке.

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