-
Notifications
You must be signed in to change notification settings - Fork 0
Home
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 communication -
cargo
: https://crates.io/ for rust -
sqlite3
for the database -
libdbus
for the communication between the client andring-daemon
-
libncurses
for the UI -
openssl
to generate keys for the API -
python > 3.6
for modules. -
pip3
and modules:wikipedia
./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",
"cert_path":"keys/api.p12",
"cert_pass":""
}
Another way is to use docker... this is for now, how I run it:
make docker # build the image
make docker-run
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.