> ## 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>

Integrate your agent into Microsoft Teams channels, chats, and Microsoft 365 Copilot through an Azure Bot registration and a Teams application.

## Before you begin

Complete the following tasks in Microsoft before you create the channel connection in Artemis. You need administrator access to the [Azure Portal](https://portal.azure.com/), the [Microsoft Teams Developer Portal](https://dev.teams.microsoft.com/), and the [Teams Admin Center](https://admin.teams.microsoft.com/).

<Steps>
  <Step title="Create an Azure Bot">
    1. Sign in to the [Azure Portal](https://portal.azure.com/) and search for **Azure Bot** in Marketplace.
    2. Select **Create** and complete the bot registration.
    3. When the deployment completes, select **Go to resource** under **Next steps**.
  </Step>

  <Step title="Create a client secret and copy the IDs">
    1. In the Azure Bot resource, go to **Settings** -> **Configuration**.
    2. Select the **Manage password** link beside the **Microsoft App ID**. This opens the app registration's **Certificates & secrets** page.
    3. Select **+ New client secret** and create the secret.
    4. Copy the secret value immediately and store it securely.
    5. Go to the app registration's **Overview** page and copy the **Application (client) ID**. This is your Microsoft App ID, also called the Enterprise App ID later in this article.
    6. Copy the **Directory (tenant) ID** from the same page.

    <Warning>When you copy the client secret, use the **Value**, not the **Secret ID**. The Secret ID won't authenticate. The Value appears only once. If you navigate away before copying it, create a new client secret.</Warning>
  </Step>

  <Step title="Configure supported account types">
    1. In the app registration, go to **Authentication (Preview)** -> **Supported accounts**.
    2. Select **Multiple Entra ID tenants**, choose **Allow all tenants**, and save.
  </Step>

  <Step title="Enable the Microsoft Teams and Microsoft 365 channels">
    1. Return to the Azure Bot resource and go to **Settings** -> **Channels**.
    2. Enable **Microsoft Teams** and **Microsoft 365**.
  </Step>

  <Step title="Create or import the Teams application">
    1. Sign in to the [Microsoft Teams Developer Portal](https://dev.teams.microsoft.com/).
    2. Create a new application or import an existing manifest.
    3. Go to **Configure** -> **Basic information**, enter the **Short name** and **Long name**, and set the **Application (client) ID** to the Microsoft App ID you copied in step 2.
  </Step>

  <Step title="Configure the bot, commands, and scopes">
    1. Go to **Configure** -> **App features** and select **Bot**.
    2. Enter the Enterprise App ID as the bot ID.
    3. Add the project commands, utterances, and descriptions.
    4. Select the **Personal**, **Team**, and **Group Chat** scopes.
  </Step>

  <Step title="Update the app package">
    1. Go to **App package editor** -> **Actions** -> **Edit** to open `manifest.json`.
    2. Update the Web App ID (`webApplicationInfo.id`) and the Copilot/Agents ID (`copilotAgents.customEngineAgents.id`) to the Enterprise App ID in both locations.
    3. To support file attachments, set `bots[0].supportsFiles` to `true`.
    4. Select **Update** and confirm.

    <Note>Attachment ingestion currently supports personal chat scope only.</Note>
  </Step>

  <Step title="Publish the application">
    1. In the Teams Developer Portal, go to **Publish** -> **Publish to org**, select **Get started**, and publish the application.
    2. Open the [Teams Admin Center](https://admin.teams.microsoft.com/) and go to **Teams apps** -> **Manage apps**.
    3. Search for the application, open it, and publish it.
  </Step>
</Steps>

## Create the channel connection in Artemis

<Steps>
  <Step title="Enter the connection details">
    Open Artemis, select the required project, and go to **Deployments** -> **Channels** -> **MESSAGING** -> **Microsoft Teams** -> **+ New**. On the **New Microsoft Teams Connection** dialog, provide the following fields.

    | Field               | Description                                                                                                                                                                                                 |
    | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | **Display Name**    | A label for the connection, for example `Microsoft Teams Production`. Up to 255 characters.                                                                                                                 |
    | **Bot App ID**      | The Microsoft App ID of the bot configured in your Teams application. Up to 255 characters.                                                                                                                 |
    | **App ID**          | The Microsoft App ID from the Azure Bot registration, also called the Enterprise App ID.                                                                                                                    |
    | **Client Secret**   | The client secret value you created in the Azure app registration.                                                                                                                                          |
    | **Azure Tenant ID** | The Directory (tenant) ID from the app registration's Overview page in the Azure Portal.                                                                                                                    |
    | **Environment**     | Select an environment to follow its active deployment. If no environment has an active deployment yet, leave the default to use the working copy and bind the connection later from the **Deployment** tab. |
    | **Initial Status**  | **Active** connections can be used immediately. **Inactive** connections stay saved but disabled until you activate them. Set this to **Active**.                                                           |

    <Tip>**Bot App ID** and **App ID** both take a Microsoft App ID. The app ID of your Teams app must match the app ID in the Azure Bot registration and the values you enter here. A mismatch is the most common cause of a Teams integration that won't connect.</Tip>

    Select **Create**.
  </Step>

  <Step title="Configure the messaging endpoint">
    1. Open the connection you created and copy the **Webhook URL** from the **Overview** tab.
    2. In the [Azure Portal](https://portal.azure.com/), open the Azure Bot resource and go to **Configuration**.
    3. Paste the Webhook URL into the **Messaging endpoint** field.
    4. Enable the **Streaming Endpoint** and select **Apply**.
  </Step>

  <Step title="Test the agent in Teams and Copilot">
    1. Open [Teams](https://teams.cloud.microsoft/) and go to **Apps**.
    2. Search for the published application, open it, and select **Add**. To test in Copilot, select **Open with Copilot**.
    3. Trigger the configured queries and verify the Artemis response.
  </Step>
</Steps>

## Key values reference

| Value                                    | Where it comes from                                                                 | Where it's used                                                                                                                                 |
| ---------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| **Microsoft App ID (Enterprise App ID)** | The Azure Bot registration's Application (client) ID                                | The **Bot App ID** and **App ID** fields in Artemis, the bot ID in the Teams application, and the app package IDs in the Teams Developer Portal |
| **Client Secret**                        | Created under **Certificates & secrets**; copy the value immediately after creation | The **Client Secret** field in Artemis                                                                                                          |
| **Azure Tenant ID**                      | The Directory (tenant) ID in the Azure Portal (admin account)                       | The **Azure Tenant ID** field in Artemis                                                                                                        |
| **Webhook URL**                          | The Artemis Microsoft Teams connection's **Overview** tab                           | The Azure Bot **Messaging endpoint**                                                                                                            |

## Manage the channel connection

Opening a channel from **Deployments** -> **Channels** -> **MESSAGING** -> **Microsoft Teams** 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 set as the bot's messaging endpoint in Azure, the **Bot App ID** for reference, and the **Require verified Teams identity** toggle.

    #### Require verified Teams identity

    Turn this on to require Microsoft-resolved Teams profile identity before the connection starts or resumes a session. Leave it off for baseline Teams conversations.

    When the toggle is on, Runtime resolves the sender's Microsoft profile email or UPN through the Bot Connector member endpoint before it allows the turn. If the identity can't be resolved, the turn doesn't proceed. This confirms that the person on the other end is the Teams user their profile claims they are, which matters for agents that act on a user's behalf or return information scoped to that user.

    The toggle relies on the credentials already configured for this connection or its selected auth profile, and on the bot staying installed and reachable in Teams. It doesn't use Microsoft Graph consent, OBO settings, or Graph scopes.

    The **Stronger identity verification setup** panel below the toggle lists the specific requirements to complete when you enable 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. |
    | **App ID**           | Your Microsoft App ID. Shown as *(saved — enter to update)*; leave blank to keep the current value.                                                                               |
    | **Client Secret**    | The client secret from your Azure Bot registration. Shown as *(saved — enter to update)*; leave blank to keep the current value.                                                  |
    | **Azure Tenant ID**  | The Directory (tenant) ID from the Azure Overview page. 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**.

    Under **Microsoft Teams Settings**, configure the following.

    | Field                | Description                                                                                                                                                                                                  |
    | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
    | **Bot App ID**       | The Microsoft App ID of the bot, shown for reference. You can't change it after creation.                                                                                                                    |
    | **Enable Streaming** | Under **Response Streaming**, turn this on to stream LLM responses to Teams as the agent generates them, instead of waiting for the full response. Turn it off to deliver each response as a single 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>
