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

# Microsoft Teams

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

<Note>The **Microsoft App ID** must be the same value in the Azure Bot registration and in the **App ID** field of the channel connection in Artemis. A mismatch is the most common cause of a Teams integration that won't connect.</Note>

## Configure the integration

The setup runs across four surfaces in this order: the [Azure Portal](https://portal.azure.com/), the [Microsoft Teams Developer Portal](https://dev.teams.microsoft.com/), the [Teams Admin Center](https://admin.teams.microsoft.com/), and Artemis.

<Steps>
  <Step title="Create an Azure Bot">
    1. Sign in to the [Azure Portal](https://portal.azure.com/) and search for **Azure Bot** in the **Create a resource** section.
    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">
    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.

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

    While you're in the app registration, copy the **Application (client) ID** from the **Overview** page. This is your Microsoft App ID, also referred to as the Enterprise App ID in the steps below. Copy the **Directory (tenant) ID** from the same page.
  </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.

    Before you leave the Teams Developer Portal, copy the **App ID** from the application's **Dashboard**. This is the Bot App ID that Artemis asks for in the next step.
  </Step>

  <Step title="Create the connection in Artemis">
    Open Artemis, select the required project, and go to **Deployments** -> **Channels** -> **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`.                                                                                                        |
    | **Bot App ID**      | The App ID of the Teams application, from the Teams Developer Portal dashboard. Up to 255 characters.                                                                        |
    | **App ID**          | The Microsoft App ID (Enterprise App ID) from the Azure Bot registration.                                                                                                    |
    | **Client Secret**   | The client secret value you created in step 2.                                                                                                                               |
    | **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. Leave it unselected during initial setup; you can bind an environment later from the connection's **Deployment** tab. |
    | **Initial Status**  | **Active** connections can be used immediately. **Inactive** connections stay saved but disabled until you activate them. Set this to **Active**.                            |

    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="Validate 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 validate 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 **App ID** field in Artemis, the bot ID and 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                                                        |
| **Bot App ID**                           | The Teams application's App ID in the Teams Developer Portal dashboard              | The **Bot App ID** 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**                                                          |

## Validation checklist

Confirm each item before you hand the channel to users.

* Azure Bot is created and accessible.
* Client secret is generated and securely saved.
* Supported accounts are configured as required.
* Microsoft Teams and Microsoft 365 channels are enabled.
* Teams application is created or imported and basic information is configured.
* Bot ID, Enterprise App ID, commands, and scopes are configured.
* App package IDs are updated and the app is published.
* Artemis Microsoft Teams connection is created successfully.
* Webhook URL is configured as the Azure Bot messaging endpoint.
* Streaming Endpoint is enabled and changes are applied.
* Application is available in Teams and Copilot, and responses come from Artemis.

## Manage an existing Microsoft Teams channel

Opening a channel from **Deployments** -> **Channels** -> **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 App ID of the Teams application, 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>
