RORI is a modulable open-source chatterbot platform. The first version was written in 2011 (2.0 in September 2012). I rewrote it in Rust in 2017, and I'm currently migrating the whole communication to use GNU Ring.
A complete RORI chain needs 4 things:
- An entry point is a application which get commands from an user and send it to
rori_server
. For example, a chat where the entry point reads what users says. - An endpoint is a application which performs actions requested by RORI. For example, it can execute a shell command or write something in a chat.
- A module is a script activated when a condition is fulfilled and send actions for endpoints to RORI.
- The rori_server which get data from entries, call modules, and send data to endpoints.
I run a lot of chatterbots on multiple services (IRC, Discord, Websites, my computer). Some bots do the exact same thing but run on a different service. The idea is to avoid to rewrite the core of each chatterbot and use the same base. Now, I just have to write an interface to communicate with this core on each services.
This is some examples of what I will do with RORI (as soon as the migration is finished):
- Ask RORI to launch music on the best device (on my computer, or stream on a discord server for example).
- Ask RORI to be alarmed at 7:40.
- Ask RORI to send messages to a friend.
- Ask RORI to shutdown a device.
- Send a picture to RORI and ask to store this pict in the best folder.
- Ask RORI to send me a notification before a rendez-vous.
RORI is for RORI On RIng. Where RORI is for Really Obvious Really Intelligent.
Please, see wiki
- Definitions
- API documentation
- Authentification system and discovery
- Interaction handling (server side)
- Modules
- Custom datatypes handling
- Emotions
- Bridges
make dependencies
will install the following packages:
ring-daemon
: https://ring.cx for the communicationcargo
: https://crates.io/ for rustsqlite3
for the databaselibdbus
for the communication between the client andring-daemon
libncurses
for the UIopenssl
to generate keys for the APIpython > 3.6
for modules.pip3
and modules:wikipedia feedparser appdirs
./launch-rori.sh
will:
- Generate keys for the API
- Generate modules table into the database
- Then run RORI to generate the config file and the database
config.json
looks something like:
{
"ring_id":"xxxxxxxxxxxxxxxxx",
"api_listener":"0.0.0.0:1412",
}
Another way is to use docker... this is for now, how I run it:
make docker # build the image
make docker-run
The recommended way is to use nginx + Let's Encrypt in front of the service to provide https support. The app will not support code for that.
Please, feel free to contribute to this project in submitting patches, corrections, opening issues, etc.
If you don't know what you can do, you can look the good-first-issue label, or still creates modules.
For more infos and ideas read CONTRIBUTING.md (this file doesn't exists for now) and CODE_OF_CONDUCT.md.