skill-dev-proxy

Proxy skill for testing other skills

Usage no npm install needed!

<script type="module">
  import skillDevProxy from 'https://cdn.skypack.dev/skill-dev-proxy';
</script>

README

skill-dev-proxy

Проскирующий навык, позволяющий отлаживать другие навыки.

Платформы

  • Алиса
  • Сбер
  • Маруся

Установка

  1. skill-dev-proxy удобнее всего развернуть на heroku в бесплатном аккаунте. Для этого нажмите на кнопку ниже:

    Deploy

  2. Укажите название приложения, регион Europe и нажмите Deploy app

  3. После успешного деплоя нажмите на кнопку View app. Откроется новая вкладка по урлу https://xxx.herokuapp.com. Там будет текст:

    Работает. Таргеты:
    Локалхост
    Мой навык 1
    
  4. В настройках приложения вы увидите переменную окружения TARGETS. Это список навыков для проксирования. Внесите туда свои навыки в виде JSON, например:

    [
     {
       "name": "Локалхост",
       "regexp": "(local|локал|около)\\s?([hfp]ost|[хп]ост)",
       "url": "websocket"
     },
     {
       "name": "Мой навык 1",
       "url": "https://my-webhook.ru"
     }
    ]
    
  5. Создайте на нужных платформах проксирующий навык (например Мой прокси) и укажите вебхуком ссылку на heroku вида https://xxx.herokuapp.com.

    • Алиса: в панели разработчика создайте приватный навык и опубликуйте его. Для приватных навыков модерация не требуется.
    • Сбер: в смарт-маркет студии заведите черновик и укажите ему вебхук. Публиковать черновик не нужно.
    • Маруся: в списке приложений заведите черновик и укажите ему вебхук. Публиковать черновик не нужно.

Использование

  1. Запустите ваш приватный навык на устройстве
  2. Выберите таргет для проксирования
  3. Все последующие фразы проксируются в выбранный таргет
  4. Для смены таргета в любой момент скажите список таргетов или установи таргет XXX

Проксирование на localhost

Для отладки локального кода в конфиге по умолчанию есть таргет Локалхост. Он умеет проксировать запросы на локалльную машинку через WebSocket. Для этого нужно установить клиент (пока только Node.js):

  1. Установите в проект зависимость skill-dev-proxy
npm i -D skill-dev-proxy
  1. Заведите в проекте скрипт, который будет слушать запросы и вызывать ваш код. Пример:
// check.js
const { runClient } = require('skill-dev-proxy');
const { handler } = require('./skill');

runClient({
  wsUrl: 'https://xxx.herokuapp.com', // <-- замените на ваш урл на хероку
  handler, // <-- js-функция или урл вида http://localhost:PORT
});
  1. Запустите это скрипт node check.js
  2. В проксирующем навыке скажите Установи таргет локалхост
  3. Теперь все запросы в проксирующий навык будут обрабатываться локальным кодом в ./skill

Скрипт check.js можно запустить через nodemon или ts-node-dev. Тогда он будет автоматически перезапускаться при изменениях файлов. И вы сразу сможете тестить эти изменения на устройстве.

FAQ

Ошибка Диалог не отвечает

Такое бывает при первом обращении к навыку после неактивности, т.к. приложение на heroku засыпает при отсутствии запросов. Вообще это полезно и позволит вам сэкономить бесплатные часы. Нужно просто повторить запрос. Я обычно тестирую с локалхоста, поэтому сначала запускаю клиента, который своим коннектом по вебсокету будит приложение. А потом уже захожу с устройства.

Лицензия

MIT @ Vitaliy Potapov