Skip to content

Универсальное приложение, позволяющее писать только логику бота. В дальнейшем логику можно использовать для Навыков для Алисы, а также различных ботов.

License

Notifications You must be signed in to change notification settings

max36895/universal_bot-ts

Repository files navigation

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

Запуск

  1. Установите зависимости.
npm i
  1. Напишите логику приложения.
  2. Соберите проект.
npm run build
  1. Запустите. Для стандартного запуска, в директории приложения 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}}
  1. domain - Название домена (example.com)
  2. domain dir - Директория, в которой находится сайт
acme.sh --install-cert -d {{domain}} --key-file {{key file}} --fullchain-file {{cert file}} --reloadcmd "service nginx reload"
  1. domain - Название домена (example.com)
  2. key file - Директория, в которой хранится ключ сертификата
  3. cert file - Директория, в которой сохранится сертификат

Важно!

После получения сертификата, перезапустите сервер. Для ngnix - sudo service nginx reload

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

Ngrok

Используется для локального тестирование навыка. Актуально в том случае, когда разработчику необходимо протестировать работу приложения в локальной сети.

Установка

Смотрите на сайте ngrok

Запуск

ngrok http --host-header=rewrite <domain>:port
  1. domain - локальный адрес сайта. Важно сайт должен быть доступен на машине! (Прописан в файле hosts)
  2. port - Порт для подключения. Для бесплатного аккаунта нельзя использовать 443 порт

После успешного запуска, скопируйте полученную ссылку с https, и вставить в консоль разработчика.

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

Протестировать приложение можно 2 способами:

  1. Через ngrok (Актуально для Алисы и сбера), либо через свой webhook.
  2. Через консоль, средствами движка (локально).

Тестирование через Ngroc

Для тестирования через ngrok, необходимо скачать программу, а также запустить её. После полученную ссылку с https, вставить в консоль разработчика, и перейти на вкладку тестирования. Данное действие актуально для Алисы. Для других платформ ссылка вставляется в соответствующую консоль разработчика.

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

Для тестирования используется тот же код, что и для запуска. С той лишь разницей, что нужно использовать класс BotTest вызывать метод test вместо run, также нет необходимости запускать сервер. После запустить приложение.

node index.js

Откроется консоль с Вашим приложением. Для выхода из режима тестирования нужно:

  1. Если навык в определенный момент ставит isEnd в True (Что означает завершение диалога), то нужно дойти до того места сценария, в котором диалог завершается.
  2. Вызвать команду exit.

Помимо ответов, можно вернуть время обработки команд и состояние хранилища.

Помощь и поддержка проекта

Любая помощь и поддержка приветствуется. Если будут найдены различные ошибки или предложения по улучшению, то смело пишите на почту: maximco36895@yandex.ru

About

Универсальное приложение, позволяющее писать только логику бота. В дальнейшем логику можно использовать для Навыков для Алисы, а также различных ботов.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published