Skip to main content

Overview

Use the Slack integration after the shared GCP setup to ingest the Slack channels you care about. The current Slack integration covers both real-time channel ingestion and an initial historical backfill.

Before you start

  • Run the shared GCP setup first with ./cloud-providers/gcp/scripts/init.sh.
  • Install Terraform >= 1.9, gcloud, jq, curl, openssl, and python3.
  • Make sure you have access to the Slack workspace and channels you want to ingest.
  • If you have more than one generated GCP install under generated/gcp/, decide which install-state.json you want to use and pass it with --install-state PATH.
  • Use a GCP identity that can create Slack integration resources and deploy the Slack workloads.

Fill install.yaml

The Slack installer reads cloud-providers/gcp/scripts/integrations/slack/install.yaml by default. Slack inherits the hosting mode, project ID, and other shared values from the base install-state.json. You do not set those again here. Fill in these fields:
  • slack.channels: required. Use Slack channel IDs or #channel-name references.
  • In self-hosting, leave slack.app.* and slack.installation.* blank. The installer captures those values while it creates and installs the app.
  • In cloud-hosting, fill in:
    • slack.app.app_id
    • slack.app.client_id
    • slack.app.client_secret
    • slack.app.signing_secret
    • slack.installation.team_id
    • slack.installation.team_name
    • slack.installation.bot_token
  • slack.app.state_secret is optional if you want to set it yourself.
  • The remaining slack.* fields are optional naming overrides for Slack-specific resources.
Config shape:
slack:
  channels:
    - "#eng"
    - "C0123456789"
  app:
    app_id: ""
    client_id: ""
    client_secret: ""
    signing_secret: ""
    state_secret: ""
  installation:
    team_id: ""
    team_name: ""
    bot_token: ""
  connector_subnet_name: ""
  connector_subnet_cidr: ""
  app_secret_name: ""
  installation_secret_name: ""
  artifact_registry_repository_id: ""
  events_function_name: ""
  ingest_function_name: ""
  topic_name: ""
  subscription_name: ""
  backfill_job_name: ""

Hosting modes

Self-hosting mode

Use base mode: self-hosting.
  • The installer helps you create a customer-owned Slack app in your workspace.
  • It then walks you through installing that app in the workspace you want to ingest.
  • Leave slack.app.* and slack.installation.* blank in the YAML and provide the selected channels in slack.channels.

Cloud-hosting mode

Use base mode: cloud-hosting.
  • Install the Asymptote-managed Slack app in your workspace from the marketplace instead of creating your own app.
  • After that install is complete, copy the app and installation details into install.yaml.
  • Make sure the installed bot has access to every channel listed in slack.channels.

Run the installer

1

Update `cloud-providers/gcp/scripts/integrations/slack/install.yaml`

Fill in the channels you want to ingest and any Slack-specific settings you need.
2

Run the script

From the repository root, run:
./cloud-providers/gcp/scripts/integrations/install-integration.sh slack
3

Approve the planned changes

Review the planned changes and approve them to continue.
If you want to use a different config file, target a specific base install, or skip confirmation prompts:
./cloud-providers/gcp/scripts/integrations/install-integration.sh slack --config /path/to/install.yaml
./cloud-providers/gcp/scripts/integrations/install-integration.sh slack --install-state /path/to/install-state.json
./cloud-providers/gcp/scripts/integrations/install-integration.sh slack --auto-approve

What happens at a high level

After the Slack setup completes successfully:
  • The selected channels are connected to the integration.
  • The Slack app is created and installed in self-hosting, or the Asymptote-managed app is used in cloud-hosting.
  • Real-time Slack event ingestion is enabled for the selected channels.
  • An initial historical backfill is triggered.
When the script finishes, it prints the mode and the key connection details for the deployed Slack integration.

Add channels later

If Slack is already connected and you want to add more channels, update the existing Slack integration instead of rerunning the base GCP setup.
1

Update `slack.channels`

Edit cloud-providers/gcp/scripts/integrations/slack/install.yaml and keep the full set of channels you want connected. Add the new channels to slack.channels rather than replacing the existing list unless you want to remove channels from the integration.
2

Confirm app access

Make sure the installed Slack app can access the same channels listed in slack.channels.In self-hosting, confirm the customer-owned Slack app is installed in the workspace and has access to the added channels.In cloud-hosting, confirm the Asymptote-managed Slack app is installed in the workspace and has access to the added channels.
3

Rerun only the Slack installer

Run:
./cloud-providers/gcp/scripts/integrations/install-integration.sh slack
If needed, pass --install-state /path/to/install-state.json to target the existing base setup you want to update.
After that rerun, the existing Slack connection stays in place and the newly added channels are picked up by the integration.

Troubleshooting

  • If the installer cannot find the base setup you want, pass --install-state /path/to/install-state.json.
  • If you are using cloud-hosting, make sure the app and installation fields match the workspace where the Asymptote-managed Slack app is installed.
  • Make sure the app has access to each channel listed in slack.channels.