skill-dev-proxy
v3.0.0
Published
Proxy skill for testing other skills
Downloads
1,838
Readme
skill-dev-proxy
Проскирующий навык, позволяющий отлаживать другие навыки.
Платформы
- Алиса
- Сбер
- Маруся
Установка
skill-dev-proxy
удобнее всего развернуть на heroku в бесплатном аккаунте. Для этого нажмите на кнопку ниже:Укажите название приложения, регион
Europe
и нажмитеDeploy app
После успешного деплоя нажмите на кнопку
View app
. Откроется новая вкладка по урлуhttps://xxx.herokuapp.com
. Там будет текст:Работает. Таргеты: Локалхост Мой навык 1
В настройках приложения вы увидите переменную окружения
TARGETS
. Это список навыков для проксирования. Внесите туда свои навыки в виде JSON, например:[ { "name": "Локалхост", "regexp": "([lv]ocal|локал|около|локо)\\s?([hfp]ost|[хп]ост|хвост)", "url": "websocket" }, { "name": "Мой навык 1", "url": "https://my-webhook.ru" } ]
Создайте на нужных платформах проксирующий навык (например
Мой прокси
) и укажите вебхуком ссылку на heroku видаhttps://xxx.herokuapp.com
.- Алиса: в панели разработчика создайте приватный навык и опубликуйте его. Для приватных навыков модерация не требуется.
- Сбер: в смарт-маркет студии заведите черновик и укажите ему вебхук. Публиковать черновик не нужно.
- Маруся: в списке приложений заведите черновик и укажите ему вебхук. Публиковать черновик не нужно.
Использование
- Запустите ваш приватный навык на устройстве
- Выберите таргет для проксирования
- Все последующие фразы проксируются в выбранный таргет
- Для смены таргета в любой момент скажите
список таргетов
илиустанови таргет XXX
Проксирование на localhost
Для отладки локального кода в конфиге по умолчанию есть таргет Локалхост
. Он умеет проксировать запросы на локалльную машинку через WebSocket. Для этого нужно установить клиент (пока только Node.js):
- Установите в проект зависимость
skill-dev-proxy
npm i -D skill-dev-proxy
- Заведите в проекте скрипт, который будет слушать запросы и вызывать ваш код. Пример:
// check.js
const { runClient } = require('skill-dev-proxy');
const { handler } = require('./skill');
runClient({
wsUrl: 'https://xxx.herokuapp.com', // <-- замените на ваш урл на хероку
handler, // <-- js-функция или урл вида http://localhost:PORT
});
- Запустите это скрипт
node check.js
- В проксирующем навыке скажите
Установи таргет локалхост
- Теперь все запросы в проксирующий навык будут обрабатываться локальным кодом в
./skill
Скрипт
check.js
можно запустить через nodemon или ts-node-dev. Тогда он будет автоматически перезапускаться при изменениях файлов. И вы сразу сможете тестить эти изменения на устройстве.
FAQ
Ошибка Диалог не отвечает
Такое бывает при первом обращении к навыку после неактивности, т.к. приложение на heroku засыпает при отсутствии запросов. Вообще это полезно и позволит вам сэкономить бесплатные часы. Нужно просто повторить запрос. Я обычно тестирую с локалхоста, поэтому сначала запускаю клиента, который своим коннектом по вебсокету будит приложение. А потом уже захожу с устройства.
Лицензия
MIT @ Vitaliy Potapov