No description
  • JavaScript 95.6%
  • Roff 3.9%
  • HTML 0.5%
Find a file
2020-01-10 05:42:48 -02:00
adapters Added config file 2020-01-10 05:42:48 -02:00
config Added config file 2020-01-10 05:42:48 -02:00
core Added config file 2020-01-10 05:42:48 -02:00
public speech adaptor beep after recording 2019-12-30 03:54:25 -02:00
scripts Added config file 2020-01-10 05:42:48 -02:00
.gitignore Initial commit 2019-12-17 05:21:45 -02:00
index.html User and message models 2020-01-07 18:49:51 -02:00
index.js Added config file 2020-01-10 05:42:48 -02:00
package.json Added config file 2020-01-10 05:42:48 -02:00
readme.md Added config file 2020-01-10 05:42:48 -02:00

betabot-core

The betabot-core package is the main module in the Betabot robotics system. The core has adapter modules for communication, command modules for executing actions and middleware modules for extending functionality.

Getting Started

Installation

First install MongoDB on your system. Then clone this repository.

Configurations

🚧Configurations are currently inside the files. This will change into a global config file.

Running

To start, run node index.js.

Modules

The betabot-core doesn't do anything by itself, It requires modules for doing various tasks and communicating with the world.

Adapter Modules

Adapters are used for communicating with users. At least one is required and many can be used. An adapter can connect the robot to chat service like Telegram, Discord, or Slack. Adapters can also be used to connect the robot to protocols like socket.io or MQTT. There is also a terminal adapter that can be used to chat with the robot thru the command line.

List of adapter modules:

  • Example Adapter Template for creating your own adapter.
  • Terminal Adapter Basic adapter for communicating thru the CLI.
  • Speech Adapter Uses snowboy for wake-word, an external deepspeech-server for STT and the system's default TTS engine.
  • Socket.io Adapter Basic socket.io example for communicating with a web browser.

Command Modules

Commands are actions that the robot can perform. A message is received by an adapter, analysed using natural language processing and the robot picks the correct command and executes it. This command can create a response that will be sent back to the correct adapter to be sent to the user.

List of Command modules

  • Default Script When there robot can't understand the user
  • Hello Script Basic hello world example
  • Time Script Time, day and weekday commands
  • VLC Remote Script Control a VLC media player instance
  • Lights Controller Script Example script of controlling a Sonoff DIY enabled device

Middleware Modules

Middleware modules use hooks to extend core functions. This is not implemented yet! A list of planned hooks in the system are:

  • on message received (message)
  • on send message (message)
  • on event (event)
  • on user created (user)

Road map

Tasks in the development road map of betabot-core and its modules.

  • Add mongoDB
  • Save received and sent messages
  • Save user adapters
  • Module System
  • Testing framework
  • Beep after listening
  • Bot Analytics
  • Configurations file
  • Change wake word
  • Middleware
  • Event System
  • Dialogue Context
  • Job Queue
  • Timer Script
  • User Interface
  • Telegram Adapter
  • Discord Adapter

Development Log

version 0.1.0 (01-07-2020)

Initial version of the betabot project. All modules and scripts are still bundled together. Later they will all be moved to their own npm modules. This version is still under development.

  • Dynamic module loading from configs
  • Added main configuration file
  • Created dialogue example script
  • Added current context to user
  • Added Readme file
  • User and message models
  • MongoDB integration
  • speech adaptor beep after recording
  • Created Lights Controller script
  • Created VLC Remote script
  • Added the Response class
  • Created speech adapter
  • Created socket.io adapter
  • Created time script
  • Created the hello script
  • Created the terminal adapter
  • Added bot class
  • Added Index.js