umbot
v1.5.0
Published
Universal bot(vk, telegram, viber) or skills for Yandex.Alisa, Маруся and sber
Downloads
184
Maintainers
Readme
umbot
Универсальное приложение для создания навыков и ботов
Документация
Документация: umbot-ts. Получить информации о работе приложения можно в телеграм канале или группе. Также можно прочитать статью, в которой рассказано как создать навык "Я никогда не"
Описание
Движок позволяет создать навык для Яндекс.Алиса, Маруси, Сбер(SmartApp), бота для vk, viber или telegram, с идентичной логикой. Типы доступных приложений в дальнейшем будут дополняться.
При необходимости есть возможность создать приложение со своим типом бота.
Тип приложения устанавливается в mmApp.appType
, по умолчанию используется alisa.
Установка и запуск
Установка
Склонируйте репозиторий, например в папку u_bot
git clone https://github.com/max36895/universal_bot-ts.git u_bot
Или установите из npm
npm i umbot
Запуск
- Установите зависимости.
npm i
- Напишите логику приложения.
- Соберите проект.
npm run build
- Запустите. Для стандартного запуска, в директории приложения package.json должен быть со следующим содержимым:
{
"name": "Название Вашего приложения",
"description": "Описание",
"main": "index.js (Путь к индексному файлу)",
"scripts": {
"start": "node ./dist/index.js",
"build": "rm -rf dist/ && tsc"
}
}
После, запустите сервер командой:
npm start
На данный момент поддерживается запуск через стандартную библиотеку http
, но можно использовать любое удобное решение.
Старт
Для запуска приложения соберите проект, и по необходимости установите ssl сертификат
SSL
Для работы некоторых приложений, необходимо иметь ssl сертификат. Поэтому необходимо его получить. Для этого можно воспользоваться acme.
Установка acme.sh
curl https://get.acme.sh | sh
Использование и установка сертификата для сайта
acme.sh --issue -d {{domain}} -w {{domain dir}}
- domain - Название домена (example.com)
- domain dir - Директория, в которой находится сайт
acme.sh --install-cert -d {{domain}} --key-file {{key file}} --fullchain-file {{cert file}} --reloadcmd "service nginx reload"
- domain - Название домена (example.com)
- key file - Директория, в которой хранится ключ сертификата
- cert file - Директория, в которой сохранится сертификат
Важно!
После получения сертификата, перезапустите сервер. Для ngnix - sudo service nginx reload
Тестирование
Ngrok
Используется для локального тестирование навыка. Актуально в том случае, когда разработчику необходимо протестировать работу приложения в локальной сети.
Установка
Смотрите на сайте ngrok
Запуск
ngrok http --host-header=rewrite <domain>:port
- domain - локальный адрес сайта. Важно сайт должен быть доступен на машине! (Прописан в файле hosts)
- port - Порт для подключения. Для бесплатного аккаунта нельзя использовать 443 порт
После успешного запуска, скопируйте полученную ссылку с https, и вставить в консоль разработчика.
Тестирование проекта
Протестировать приложение можно 2 способами:
- Через ngrok (Актуально для Алисы и сбера), либо через свой webhook.
- Через консоль, средствами движка (локально).
Тестирование через Ngroc
Для тестирования через ngrok, необходимо скачать программу, а также запустить её. После полученную ссылку с https, вставить в консоль разработчика, и перейти на вкладку тестирования. Данное действие актуально для Алисы. Для других платформ ссылка вставляется в соответствующую консоль разработчика.
Тестирование в консоли
Для тестирования используется тот же код, что и для запуска.
С той лишь разницей, что нужно использовать класс BotTest
вызывать метод test
вместо run
, также нет необходимости запускать сервер.
После запустить приложение.
node index.js
Откроется консоль с Вашим приложением. Для выхода из режима тестирования нужно:
- Если навык в определенный момент ставит
isEnd
в True (Что означает завершение диалога), то нужно дойти до того места сценария, в котором диалог завершается. - Вызвать команду exit.
Помимо ответов, можно вернуть время обработки команд и состояние хранилища.
Помощь и поддержка проекта
Любая помощь и поддержка приветствуется. Если будут найдены различные ошибки или предложения по улучшению, то смело пишите на почту: [email protected]