# Connector for Microsoft Teams

{% hint style="warning" %}
This documentation references external sources. Nexthink does not have control over the accuracy of third-party documentation, nor any external updates or changes that might create inconsistencies with the information presented on this page. Please report any errors or inconsistencies to [Nexthink Support](https://support.nexthink.com/).
{% endhint %}

The connector for Microsoft Teams allows you to measure and view call quality data and use the Nexthink web interface to investigate, troubleshoot and remediate Zoom call issues for well-informed decisions when optimizing the digital employee experience (DEX).

## Prerequisites <a href="#connectorformicrosoftteams-prerequisites" id="connectorformicrosoftteams-prerequisites"></a>

* Users are part of Microsoft Entra ID.
* Log in to Azure using a Microsoft Entra ID-joined device or use Active Directory synchronized with Microsoft Entra ID.
* You have enabled the connector for Entra ID for [Microsoft Hybrid Entra joined devices](https://docs.microsoft.com/en-us/azure/active-directory/devices/concept-azure-ad-join-hybrid). Refer to [Connector for Microsoft Entra ID (Azure AD)](https://docs.nexthink.com/platform/~/changes/Sh4xqs4GDClkDKT9Hvux/integrations/inbound-connectors/connector-for-microsoft-entra-id-azure-ad) for more information.
* You have a [Collaboration Experience](https://www.nexthink.com/platform/collaboration-experience/) license from Nexthink.

## Configuring the Azure application <a href="#connectorformicrosoftteams-configuringtheazureapplicationconfigureazureapp" id="connectorformicrosoftteams-configuringtheazureapplicationconfigureazureapp"></a>

Configure the application from the [Azure](https://azure.microsoft.com/es-es/free/search/?ef_id=_k_EAIaIQobChMIodqLx8ichgMVu5xQBh2GnA_UEAAYASAAEgJxevD_BwE_k_\&OCID=AIDcmm68ejnsa0_SEM__k_EAIaIQobChMIodqLx8ichgMVu5xQBh2GnA_UEAAYASAAEgJxevD_BwE_k_\&gad_source=1\&gclid=EAIaIQobChMIodqLx8ichgMVu5xQBh2GnA_UEAAYASAAEgJxevD_BwE) page to retrieve call-quality data:

1. Sign in using your Azure credentials.
2. Register a new application.
   * During the registration process, select the **Single tenant** option.
3. For the **Redirect URL**, select **Web**.
   * If the application already exists in the Azure portal, you can reuse the application to assign the permissions to read the call records.
4. **Register** the application.
5. Access the **API Permissions** option from the left-side menu.
6. Add permission for **Microsoft Graph**.
   * Select **CallRecords.Read.All** and add the API permission. See the image below.

<figure><img src="https://268444917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxJSUDk9NTtCHYPG5EWs3%2Fuploads%2Fgit-blob-02312c25fe03c26933d619ae5208db736c2d6013%2Fimage-20240524-061021.png?alt=media" alt="Configuring the Azure application" width="760"><figcaption></figcaption></figure>

<figure><img src="https://268444917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxJSUDk9NTtCHYPG5EWs3%2Fuploads%2Fgit-blob-45bf696db287ca7253d52ad72870f8da0428b2fc%2Fimage-20240524-061723.png?alt=media" alt="image-20240524-061723.png" width="760"><figcaption></figcaption></figure>

{% hint style="info" %}
The **Status** column on the permissions list indicates if the Azure account you are using lacks proper privileges.
{% endhint %}

Refer to the [Microsoft documentation](https://docs.microsoft.com/en-us/graph/auth-register-app-v2) for more information on the steps listed above.

7. Open the **Overview** section of the configured application to copy and save Azure AD credentials for future reference. That is, for the [Nexthink connector configuration](#connectorformicrosoftteams-configuringtheconnectorinthenexthinkwebinterfaceconnectorconfiguration).
   * **Application (client) ID**
   * **Directory (tenant) ID**

<figure><img src="https://268444917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxJSUDk9NTtCHYPG5EWs3%2Fuploads%2Fgit-blob-cecf827d98f58d1255944b3c069c4d825475b356%2Fimage-20220513-132432.png?alt=media" alt="MS Teams enrichment" width="744"><figcaption></figcaption></figure>

8. Generate and copy the client secret **Value** in the Azure portal using the **Certificates and secret** option for future reference. That is, for the [Nexthink connector configuration](#connectorformicrosoftteams-configuringtheconnectorinthenexthinkwebinterfaceconnectorconfiguration).
   * Click on **New client secret**.
   * Fill in the **Description** and **Expiration** values.
   * Click **Add** and copy the **Value**.

{% hint style="info" %}
You need to update the client secret both in the Azure portal and for the Nexthink connector after the expiration date.
{% endhint %}

<figure><img src="https://268444917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxJSUDk9NTtCHYPG5EWs3%2Fuploads%2Fgit-blob-b1527f0caa2ca474810b41caf647fa593a2622b6%2Fimage-20220419-071120.png?alt=media" alt="Generate new client secret" width="744"><figcaption></figcaption></figure>

## Configuring the connector in the Nexthink web interface <a href="#connectorformicrosoftteams-configuringtheconnectorinthenexthinkwebinterfaceconnectorconfiguration" id="connectorformicrosoftteams-configuringtheconnectorinthenexthinkwebinterfaceconnectorconfiguration"></a>

From the Nexthink web interface:

1. Select **Administration > Inbound connectors** from the main menu.
2. Select **Microsoft Teams** from the list of inbound connectors.
3. Enter the three **Credentials** gathered from the application configured in Azure. See [steps 7 and 8](#connectorformicrosoftteams-configuringtheazureapplicationconfigureazureapp) from above.
4. **Save** the MS teams inbound connector.

<figure><img src="https://268444917-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxJSUDk9NTtCHYPG5EWs3%2Fuploads%2Fgit-blob-5a1058086b12928925215a1d2eb1a1d3660aed32%2Fteams-1665479648.png?alt=media" alt="Configuring the MS Teams connector in the Nexthink web interface" width="744"><figcaption></figcaption></figure>

## Known limitations <a href="#connectorformicrosoftteams-knownlimitationsknownlimitations" id="connectorformicrosoftteams-knownlimitationsknownlimitations"></a>

* The system cannot retrieve call-quality data for macOS devices that are not on-premises AD joined.
* Sometimes, the system does not link calls to the virtual machine because the Microsoft Teams connector identifies devices based on the MAC address, which is not always reliable for virtual machines.

## FAQ <a href="#connectorformicrosoftteams-faq" id="connectorformicrosoftteams-faq"></a>

&#x20;

<details>

<summary>How does the system calculate the call quality?</summary>

The audio and video call quality classification is based on Microsoft’s definition of good versus poor.

Refer to the Microsoft [Stream Classification in Call Quality Dashboard](https://docs.microsoft.com/en-us/microsoftteams/stream-classification-in-call-quality-dashboard) documentation.

</details>

<details>

<summary>Do I always need to use the connector for Microsoft Entra ID to obtain the call quality data?</summary>

Not necessarily. If all users only authenticate through Entra ID, the connector for Microsoft Entra ID is not needed.

You should enable the connector for Entra ID only for [Hybrid Entra ID joined devices](https://docs.microsoft.com/en-us/azure/active-directory/devices/concept-azure-ad-join-hybrid). For example, when some users authenticate against (on-premises) Entra ID.

</details>

<details>

<summary>What happens if a user receives a call on a device that doesn’t have Nexthink Collector installed?</summary>

Nexthink associates the call-quality data for users with at least one device running Collector on it. Therefore, when a user joins a Microsoft Teams call on a mobile device that does not have collector installed, the system reports the session details for the user but does not capture the device information.

</details>

<details>

<summary>How can I verify that I have properly configured the subscription?</summary>

From the Nexthink web interface, use the **Test Credentials** button on the connector page to validate the **Azure Tenant ID**, **Azure Client ID,** and **Azure Client Secret** values.

</details>

<details>

<summary>How often is the call-quality data refreshed? Is it instant?</summary>

The current mechanism uses a subscription to receive the data from Graph API.

Every time a call ends, the system pushes the call details to the Nexthink platform. The process is not instant, as the data typically arrives 5 to 10 minutes after the call ends.

</details>

<details>

<summary>Does Nexthink retrieve call-quality data for calls from a virtual machine?</summary>

This is a [Known limitation](https://docs.nexthink.com/platform/~/changes/Sh4xqs4GDClkDKT9Hvux/integrations/inbound-connectors/connector-for-microsoft-teams), as sometimes, the system does not link calls to the virtual machine because the Microsoft Teams connector identifies devices based on the MAC address, which is not always reliable for virtual machines.

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nexthink.com/platform/~/changes/Sh4xqs4GDClkDKT9Hvux/integrations/inbound-connectors/connector-for-microsoft-teams.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
