To set up the Slack tool you will need a Slack application. Follow the steps below to set it up:
Head to the Slack API and create a new app.
After creating the app, you will see the App Credentials
section. Copy the Client ID
and Client Secret
values.
That will be used for the environment variables specified above.
OAuth flow is required to authenticate users with Slack. To enable it please set the following redirect URL to your app's settings:
https://<your_backend_url>/v1/tool/auth
Please note that for the local development you will need to enable HTTPS. See the Setup HTTPS for Local Development section for more details. If you are using a local https setup, redirect url should be
https://localhost:8000/v1/tool/auth
Also, you can set up a proxy, such as ngrok, to expose your local server to the internet.
The Slack tool uses User Token Scopes to access the user's Slack workspace.
The required and the default permission scope is search:read
.
Set it in the OAuth & Permissions
section of your Slack app settings.
To work with the Slack Tool Advanced token security via token rotation is required.
To enable it, go to the OAuth & Permissions
section of your Slack app settings and click 'Opt in' button in the 'Advanced token security via token rotation' section.
More information about the OAuth flow can be found here.
Then set the following environment variables. You can either set the below values in your secrets.yaml
file:
slack:
client_id: <your_client_id from step 1>
client_secret: <your_client_secret from step 1>
or update your .env
configuration to contain:
SLACK_CLIENT_ID=<your_client_id from step 1>
SLACK_CLIENT_SECRET=<your_client_secret from step 1>
To enable the Slack tool in the frontend, you will need to modify the src/interfaces/assistants_web/src/constants/tools.ts
file. Add the TOOL_SLACK_ID
to the AGENT_SETTINGS_TOOLS
list.
export const AGENT_SETTINGS_TOOLS = [
TOOL_HYBRID_WEB_SEARCH_ID,
TOOL_PYTHON_INTERPRETER_ID,
TOOL_WEB_SCRAPE_ID,
TOOL_SLACK_ID,
];
To enable the Slack tool in the frontend for Base Agent, you will need to modify the src/interfaces/assistants_web/src/constants/tools.ts
file. Remove the TOOL_SLACK_ID
from the BASE_AGENT_EXCLUDED_TOOLS
list.
By default, the Slack Tool is disabled for the Base Agent. Also if you need to exclude some tool from the Base Agent just add it to the BASE_AGENT_EXCLUDED_TOOLS
list.
export const BASE_AGENT_EXCLUDED_TOOLS = [];
To enable HTTPS for local development, the self-signed certificate needs to be generated. Run the following command in the project root directory to generate the certificate and key:
openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
Then, update the backend Docker configuration(src/backend/Dockerfile) to use the generated certificate. Just change next lines in the Dockerfile:
COPY pyproject.toml poetry.lock cert.pem key.pem ./
and
CMD uvicorn backend.main:app --reload --host 0.0.0.0 --port ${PORT} --timeout-keep-alive 300 --ssl-keyfile /workspace/key.pem --ssl-certfile /workspace/cert.pem
Change NEXT_PUBLIC_API_HOSTNAME environment variable in the .env https
protocol:
NEXT_PUBLIC_API_HOSTNAME=https://localhost:8000
or in the configurations.yaml file:
auth:
backend_hostname: https://localhost:8000
To run the Frontend with HTTPS, update the start
script in the package.json
file:
"scripts": {
"dev": "next dev --port 4000 --experimental-https",
..........
}
Add the following line to the 'docker-compose.yml' file to the frontend environment variables:
NEXT_PUBLIC_API_HOSTNAME=https://localhost:8000
and change the API_HOSTNAME to
API_HOSTNAME: https://localhost:8000
also change the src/interfaces/assistants_web/.env.development file env variables to use https.
run next command to start the backend and frontend:
make dev
If you encounter any issues with OAuth, please check the following link For example, if you see the invalid_team_for_non_distributed_app error, please ensure the app is distributed or try logging in with the workspace owner's account.