edab42916b
All checks were successful
git.cronocide.net/bluebubbles-bot/pipeline/head This commit looks good
|
||
---|---|---|
bin | ||
persona | ||
bluebubbles_bot.hcl | ||
build.sh | ||
Dockerfile | ||
Jenkinsfile | ||
LICENSE | ||
README.md | ||
setup.py |
bluebubbles_bot
A chatbot for a local BlueBlubbles server.
Usage
usage: bluebubbles_bot [-h] [-l LOG] [-v]
optional arguments:
-h, --help show this help message and exit
-l LOG, --log LOG Specify a file to log to.
-v, --verbose Include verbose information in the output. Add 'v's for more output.
Example:
bluebubbles_bot -h
bluebubbles_bot loads instances of the PersonaSkill
class from python files in the skills folder.
You may configure the skill by specifying startup
and shutdown
functions to configure your skills as required.
It will be helpful to follow the examples in the skills folder for designing your skills for the bot.
Installation
As with most of my software, this can be installed as a python package or a Docker container.
pip3 install bluebubbles_bot
docker build -t blue_bubbles_bot .
Configuration
The following environment variables must be set to configure the bot:
BB_SERVER_URL
: The URL of the BlueBubbles server, including protocol and port.
BB_SERVER_PASSWORD
: The password to the BlueBubbles server.
BIND_PORT
: The port to bind to to receive callbacks from the BlueBubbles server.
USE_PRIVATE_API
: Whether or not to use the Private API in BlueBubbles. Default is false
Configuring Skills
Each skill consumes it's own environment variables to configure and run. Here are some of the configurable options for the included skills:
chatgpt.py
OPENAI_API_KEY
: The API key to OpenAI, from OpenAI.
OPENAI_ORGANIZATION
: The Organization ID from OpenAI.
RESPONSE_PREAMBLE
: Instructions to ChatGPT for how it should respond and behave, given as a preamble for any conversation with it. A default preamble is provided (see persona/skills/chatgpt.py.
Writing Skills
Writing new skills is simple. Copy a skill from the persona/skills/ folder to a different name and modify these three functions:
match_intent
: This should return true if your skill should respond to a message
respond
: Return a message object to a chat
generate
: Create a new message object to be sent to a chat
Additional you can use these two functions to start up and shut down your skill:
startup
: Do any work your skill needs to get ready
shutdown
: Do any work your skill needs to clean up
Justification
Initially all I wanted to do was translate Apple Music links to Spotify links and vice-versa. But building platforms is more fun than building tools.