An open API service indexing awesome lists of open source software.

https://github.com/vitalets/skill-dev-proxy

Навык для Алисы, позволяющий отлаживать другие навыки прямо на устройстве
https://github.com/vitalets/skill-dev-proxy

Last synced: 6 months ago
JSON representation

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

Awesome Lists containing this project

README

          

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

## Платформы
* Алиса
* Сбер
* Маруся

## Установка
1. `skill-dev-proxy` удобнее всего развернуть на [heroku](https://heroku.com) в бесплатном аккаунте. Для этого нажмите на кнопку ниже:

[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)

2. Укажите название приложения, регион `Europe` и нажмите `Deploy app`
3. После успешного деплоя нажмите на кнопку `View app`. Откроется новая вкладка по урлу `https://xxx.herokuapp.com`. Там будет текст:
```
Работает. Таргеты:
Локалхост
Мой навык 1
```
4. В настройках приложения вы увидите переменную окружения `TARGETS`. Это список навыков для проксирования. Внесите туда свои навыки в виде JSON, например:
```json
[
{
"name": "Локалхост",
"regexp": "([lv]ocal|локал|около|локо)\\s?([hfp]ost|[хп]ост|хвост)",
"url": "websocket"
},
{
"name": "Мой навык 1",
"url": "https://my-webhook.ru"
}
]
```

5. Создайте на нужных платформах проксирующий навык (например `Мой прокси`) и укажите вебхуком ссылку на heroku вида `https://xxx.herokuapp.com`.
* Алиса: в [панели разработчика](https://dialogs.yandex.ru/developer) создайте приватный навык и опубликуйте его. Для приватных навыков модерация не требуется.
* Сбер: в [смарт-маркет студии](https://developers.sber.ru/studio) заведите черновик и укажите ему вебхук. Публиковать черновик не нужно.
* Маруся: в [списке приложений](https://vk.com/apps?act=manage) заведите черновик и укажите ему вебхук. Публиковать черновик не нужно.

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

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

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

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

> Скрипт `check.js` можно запустить через [nodemon](https://github.com/remy/nodemon) или [ts-node-dev](https://github.com/wclr/ts-node-dev). Тогда он будет автоматически перезапускаться при изменениях файлов. И вы сразу сможете тестить эти изменения на устройстве.

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

## Лицензия
MIT @ [Vitaliy Potapov](https://github.com/vitalets)