Skip to content

Latest commit

 

History

History
131 lines (101 loc) · 4.64 KB

File metadata and controls

131 lines (101 loc) · 4.64 KB

Slack Tool Setup

To set up the Slack tool you will need a Slack application. Follow the steps below to set it up:

1. Create a Slack App

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.

2. Set up OAuth & Permissions

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.

3. Set Up Environment Variables

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>

4. Enable the Slack Tool in the Frontend

To enable the Slack tool in the frontend, you will need to modify the src/community/config/tools.py 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/community/config/tools.py 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 = [];

5. Setup HTTPS for Local Development

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.

6. Run the Backend and Frontend

run next command to start the backend and frontend:

make dev

7. Troubleshooting

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.