This is a slack bolt python bolt that provides the backend for a /jitsi bot on your Slack workspace to easily invite members to video conferences. It is the service run in support of the TBD LINK app in the Slack Marketplace.
Enables starting and joining Jitsi Meet meetings from within Slack channels and direct messages. It's also possible to configure a custom URL for your workspace and use that instead.
This is a drop-in replacement for jitsi-slack which is now deprecated because it does not support all modern Slack standards.
- /jitsicreates a Jitsi room with a random name
- /jitsi servershows the current server configuration for the workspace
- /jitsi server defaultresets server url to default -- JITSI_DEFAULT_SERVER_URL
- /jitsi server <url>: Sets custom default server URL for the workspace
- /jitsi @<user1> .. @<userN>ceates a Jitsi room and sends it via DM
This project is based on the Slack's Bolt library for Python which has an excellent getting started guide
To run your own version of this service, you will need to follow the guide to set up your own Slack app. We recommend you begin in socket mode for development since it is easy to step on your own foot with OAUTH. If you do not plan to deploy a service that connects to more than one workspace, you can use socket mode indefinitely.
This is a python3 project which, leverages the Slack python sdk and the Slack bolt sdk.
Service endpoints are handled by flask and run within the gunicorn wsgi server.
Current development uses python 3.12.10. There is no support for python 2.
Dependency management uses poetry; use poetry install to install
all required libraries for development.
The following environment variables configure the service:
- JITSI_DEFAULT_SERVER_URL: the base URL for the server, e.g.,- https://meet.jit.si/
- SLACK_EVENTS_API_MODE: Set to "socket" for socket mode, otherwise uses "oauth" and the Events API
- SLACK_SLASH_CMD: The slash command to call the service in Slack (defaults to /jitsi)
- STORAGE_PROVIDER: "memory", "vault", or "postgres"
- PORT: port that gunicorn listens on (default: 3000)
- PROXY_MODE: the app is running behind a proxy
- DEBUG_LEVEL: error, warn, info, or debug (default: info)
- SLACK_BOT_TOKEN: The bot token for your Slack app (required)
- SLACK_APP_TOKEN: The app-level token for your Slack app (required for socket mode)
- SLACK_SIGNING_SECRET: The signing secret for your Slack app
- SLACK_CLIENT_ID: OAuth client ID
- SLACK_CLIENT_SECRET: OAuth client secret
- VAULT_URL: URL for vajdult server
- VAULT_TOKEN: token for vault access
- VAULT_MOUNT_POINT: mount point for secrets
- VAULT_PATH_PREFIX: prefix for jitsi-slack k-v store
- DB_HOST: postgres host
- DB_PORT: port for postgres db
- DB_USERNAME: postgres username
- DB_PASSWORD: postgres user password
- DB_NAME: name of the database
You can easily perform local development in socket mode.
'eval $(poetry env activate)'
SLACK_EVENTS_API_MODE="socket" SLACK_BOT_TOKEN=<bot token> SLACK_APP_TOKEN=<app token> poetry run ./start.shDeploy a container for integration testing.
The build.sh script handles building a container.
There is some work to do to make postgres connections work properly if more than one gunicorn worker is used.
This project is licensed under the Apache 2.0 License LICENSE