> ## Documentation Index
> Fetch the complete documentation index at: https://koreai.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Set up Microsoft Teams and Copilot

<Badge icon="arrow-left" color="gray">[Back to messaging or digital channels](/agent-platform/channels#messaging-or-digital)</Badge>

Deploy your agent as a Slack bot for team collaboration. Connect your Slack app to Artemis by entering its credentials manually.

<Note>
  **Redirect URL and Request URL are different.** Slack uses two URLs at different stages:

  * **OAuth Redirect URL** — used only during the **Add to Slack** authorization flow, registered under **OAuth & Permissions** so Slack can return authorization back to Studio.
  * **Events Request URL** — generated for this connection and pasted under **Event Subscriptions → Request URL** in Slack, allowing Slack to deliver messages and events to Studio.
</Note>

## Create an app in Slack

<Steps>
  <Step title="Create or select your Slack app">
    At [api.slack.com/apps](https://api.slack.com/apps), select **Create New App**, choose **From scratch**, name the app, and choose a development workspace.
  </Step>

  <Step title="Copy the Team ID, App ID, and Signing Secret">
    You need three values from Slack before you can create the connection in Artemis:

    | Value              | Where to find it                                                                                                             |
    | ------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
    | **Team ID**        | Open your workspace in a browser. In `https://app.slack.com/client/T.../...` the segment beginning with `T` is your Team ID. |
    | **App ID**         | Go to **Basic Information** -> **App Credentials** and copy **App ID**.                                                      |
    | **Signing Secret** | On the same **App Credentials** panel, select **Show** next to **Signing Secret** and copy it.                               |
  </Step>

  <Step title="Add bot token scopes">
    Go to **OAuth & Permissions** and, under **Bot Token Scopes**, add:

    | Scope                          | Purpose                                                    |
    | ------------------------------ | ---------------------------------------------------------- |
    | `chat:write`                   | Send messages as the bot.                                  |
    | `im:history`                   | Read direct message history with the bot.                  |
    | `commands`                     | Required for slash commands.                               |
    | `app_mentions:read` (optional) | Read @mentions of the bot in channels.                     |
    | `files:read` (optional)        | Required for file attachments.                             |
    | `chat:write.public` (optional) | Required to post to public channels the bot hasn't joined. |
  </Step>

  <Step title="Bot User OAuth Token">
    On the same **OAuth & Permissions** page, select **Install to Workspace** (or **Reinstall to Workspace** if the app is already installed). Once installed, copy the **Bot User OAuth Token** from **OAuth Tokens** — it begins with `xoxb-`.

    <Note>Reinstall the app whenever you add or change scopes so the bot token receives the new grants.</Note>
  </Step>
</Steps>

## Integrate the Slack app in Artemis

<Steps>
  <Step title="Open the New Slack Connection dialog">
    Open Artemis, select the required project, and go to **Deployments** -> **Channels** -> **MESSAGING** -> **Slack** -> **+ New**.
  </Step>

  <Step title="Enter credentials manually">
    Select **Enter credentials manually instead**, then fill in the following fields.

    | Field                              | Description                                                                                                                                                            |
    | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | **Display Name**                   | A label for the connection, for example `Slack Production`. Up to 255 characters.                                                                                      |
    | **Slack Team ID:App ID**           | The Team ID and App ID from Slack, joined by one colon with no spaces, for example `T0xxxxxxxxx:A0xxxxxxxxx`.                                                          |
    | **Bot Token**                      | The Bot User OAuth Token from **OAuth & Permissions** -> **OAuth Tokens**. Must begin with `xoxb-`.                                                                    |
    | **Signing Secret**                 | The signing secret from **Basic Information** -> **App Credentials**.                                                                                                  |
    | **Environment**                    | Select an environment to follow its active deployment.                                                                                                                 |
    | **Provider Verification Strength** | **Weak (default)** is set by default. Choose **Strong** only for channels/providers whose identity assertions you trust for stronger continuity and linking decisions. |
    | **Initial Status**                 | **Active** connections can be used immediately. **Inactive** connections stay saved but disabled until you activate them.                                              |

    Select **Create**.
  </Step>

  <Step title="Webhook URL and Event Subscriptions">
    Open the connection you created and copy the **Webhook URL** from the **Overview** tab. Go back to your Slack app's **Event Subscriptions** page, turn **Enable Events** on, and paste the Webhook URL into **Request URL**. Wait for Slack to show **Verified**, then, under **Subscribe to bot events**, add:

    | Event         | Description                                     |
    | ------------- | ----------------------------------------------- |
    | `message.im`  | Direct messages sent to the bot.                |
    | `app_mention` | @mentions in channels where the app is invited. |

    Save your changes.
  </Step>

  <Step title="Test both conversation paths">
    Send the app a direct message, then invite it to a channel and @mention it. Confirm the agent replies in both places.
  </Step>
</Steps>

## Manage the channel connection

Opening a channel from **Deployments** -> **Channels** -> **MESSAGING** -> **Slack** shows four tabs: **Overview**, **Credentials**, **Configuration**, and **Deployment**.

<Tabs>
  <Tab title="Overview">
    The **Connection Summary** shows these fields.

    | Field           | Description                       |
    | --------------- | --------------------------------- |
    | **Status**      | For example: *Active*             |
    | **Created**     | Timestamp the channel was created |
    | **Updated**     | Timestamp of the last change      |
    | **Environment** | For example: `staging`            |
    | **Source Type** | `Channel Connection`              |
    | **Source ID**   | Unique channel identifier (UUID)  |

    Under **Setup Instructions**, the tab shows the **Webhook URL** to paste into Slack's Event Subscriptions **Request URL**, and the **Slack Team ID:App ID** for reference. Select the copy icon next to either value to copy it.
  </Tab>

  <Tab title="Credentials">
    Credentials are saved and encrypted after creation; the fields show placeholder text and accept new values only if you want to update them.

    | Field                | Description                                                                                                                                                                       |
    | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | **Use Auth Profile** | Toggle on to authenticate through a saved Auth Profile instead of entering credentials manually. When enabled, select the profile from the dropdown in place of the fields below. |
    | **Bot Token**        | The Bot User OAuth Token from Slack's **OAuth & Permissions** -> **OAuth Tokens**. Shown as *(saved — enter to update)*; leave blank to keep the current value.                   |
    | **Signing Secret**   | The signing secret from Slack's **Basic Information** -> **App Credentials**. Shown as *(saved — enter to update)*; leave blank to keep the current value.                        |

    Select **Save Credentials** to apply any changes.
  </Tab>

  <Tab title="Configuration">
    Under **General**, update the **Display Name** and **Provider Verification Strength**.

    Under **Slack Settings**, the following fields apply.

    | Field                    | Description                                                                                          |
    | ------------------------ | ---------------------------------------------------------------------------------------------------- |
    | **Slack Team ID:App ID** | The Team ID and App ID entered at creation, shown for reference. You can't change it after creation. |

    Under **Response Streaming**, configure the following.

    | Field                       | Description                                                                                             |
    | --------------------------- | ------------------------------------------------------------------------------------------------------- |
    | **Enable Streaming**        | Stream LLM responses to Slack in real time instead of waiting for the full response.                    |
    | **Chunk Size (characters)** | Minimum characters to buffer before sending to Slack. Lower values feel faster but make more API calls. |

    Under **Authorization Message**, configure the message shown when a tool needs the user to authorize.

    | Field                | Description                                                                                                                                                                                                                      |
    | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | **Message template** | The message text, with insertable variables: `{{#authorizations}}`, `{{profileName}}`, `{{authLink}}`, and `{{remaining}}`. Select **See all variables** for the full list, or **Show preview** to preview the rendered message. |

    Select **Save Changes** to apply any changes.
  </Tab>

  <Tab title="Deployment">
    The **Deployment** tab shows these fields.

    | Field                 | Description                                                                                                         |
    | --------------------- | ------------------------------------------------------------------------------------------------------------------- |
    | **Agent Version**     | An **Environment** dropdown (for example: `Staging`) that selects which deployed version handles incoming messages. |
    | **Active Deployment** | Shows the bound deployment version and when it was deployed.                                                        |

    Select **Save Changes** after switching the environment or version.
  </Tab>
</Tabs>

## Optional Slack features

| Feature                           | Setup                                                                                                                              |
| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| **Buttons, menus, and shortcuts** | Enable **Interactivity & Shortcuts** and use the same connection-specific Events Request URL as the **Interactivity Request URL**. |
