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

# Microsoft Teams

> Direkt in Microsoft Teams mit Devin chatten und zusammenarbeiten

Erwähne **@Devin** in Microsoft Teams, sobald Bugs, Feature-Wünsche und Fragen eingehen. Devin antwortet im Thread mit Updates und Rückfragen, sobald es erwähnt wird.

<div id="get-started">
  ## Erste Schritte
</div>

<div id="installation">
  ### Installation
</div>

1. Gehen Sie zu [Settings > Connections](https://app.devin.ai/settings/connections) und wählen Sie **Microsoft Teams** aus
2. Klicken Sie auf „Connect“
3. Sie werden aufgefordert, die Devin-App für Microsoft Teams in Ihrem Mandanten und/oder im Ziel-Team zu installieren
4. Stellen Sie sicher, dass Sie Ihr persönliches Benutzerkonto verknüpfen. Alle Benutzer in Ihrer Organisation müssen diesen Schritt abschließen, um Devin nutzen zu können
5. Erwähnen Sie `@Devin` in einem Team-Kanal oder Chat, um eine Sitzung zu starten

> Hinweis: Damit Devin für jeden Benutzer funktioniert, muss jede Person ihr eigenes Konto im Devin-Dashboard (Settings > Connections) verbinden. So kann Devin die Microsoft-Teams-Identität der Person mit ihrem Devin-Benutzer verknüpfen.

<div id="how-to-use-devin-from-microsoft-teams">
  ### Devin in Microsoft Teams verwenden
</div>

Sobald Sie die Microsoft-Teams-Integration installiert haben, können Sie Devin einfach mit `@Devin` in jedem Team-Kanal aufrufen.

Devin antwortet in einem Thread auf Ihre Sitzung. Sie können wie in der üblichen Devin-Chatoberfläche hin und her kommunizieren.

*Beachten Sie, dass Devin Fehler machen kann. Bitte überprüfen Sie die Antworten sorgfältig.*

<div id="inline-teams-keywords-functions">
  ### Inline-Teams-Keywords & -Funktionen
</div>

| Keyword             | Function                                                                                                                            |
| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `!ask`              | Beginne deine Nachricht mit `!ask`, um eine schnelle Antwort zur Codebasis zu erhalten, ohne einen vollständigen Agenten zu starten |
| `!deep`             | Erhalte eine ausführlichere Antwort mit vertiefter Recherche über die erweiterte Suche                                              |
| `mute`              | Verhindert, dass Devin weitere Nachrichten im Thread sieht                                                                          |
| `unmute`            | Macht die obige Aktion rückgängig                                                                                                   |
| `(aside)`, `!aside` | Veranlasst Devin, die Nachricht zu ignorieren (nützlich für Kommentare zur Devin-Ausführung direkt im Thread)                       |
| `sleep`             | Versetzt Devin in den Schlaf; um Devin aufzuwecken, sende eine beliebige Nachricht im Thread                                        |
| `archive`           | Versetzt Devin in den Schlaf und archiviert zusätzlich die Sitzung                                                                  |
| `EXIT`              | Beendet die Sitzung                                                                                                                 |
| `help`              | Zeigt eine Hilfenachricht mit verfügbaren Keywords und Funktionen                                                                   |

<div id="pricing">
  ### Preise
</div>

Wenn Sie noch kein Devin-Konto haben, erfahren Sie [hier](https://devin.ai/pricing) mehr über Preise und Pläne.

<div id="privacy">
  ### Datenschutz
</div>

Unsere Datenschutzerklärung finden Sie [hier](https://cognition.com/privacy-policy).

<div id="authentication-flow">
  ### Authentifizierungsablauf
</div>

Die folgende Abbildung zeigt die Authentifizierungsarchitektur auf hoher Ebene für die Microsoft-Teams-Integration und veranschaulicht, wie die Authentifizierung ausgehend von Teams durch verschiedene Schichten fließt, um authentifizierte Devin-Sitzungen einzurichten.

```mermaid theme={null}
graph TB
    subgraph MSTeams ["Microsoft Teams"]
        A[Teams-Benutzer] --> B[Teams-Kanal]
        B --> C[Teams Bot Framework]
        C --> D[Microsoft Graph API]
    end
    
    subgraph AuthLayer ["Authentifizierungsebene"]
        E[Zertifikatbasierte Authentifizierung] --> F[JWT-Token-Validierung]
        F --> G[Mandanten-ID-Verifizierung]
        G --> H[Benutzeridentitäts-Claims]
    end
    
    subgraph DevinPlat ["Devin-Plattform"]
        I[Chat-Manager] --> J[Identity-Mapping-Service]
        J --> K[Organisationsauflöser]
        K --> L[RBAC-Autorisierung]
        L --> M[Sitzungserstellung]
    end
    
    subgraph IdProviders ["Identitätsanbieter"]
        N[Microsoft Entra ID] --> O[SAML/SSO-Anbieter]
        O --> P[Devin-Identitätsspeicher]
    end
    
    A --> E
    D --> F
    H --> J
    N --> J
    P --> L
    M --> Q[Devin-Sitzung]
```

<div id="permissions-details">
  ### Berechtigungsdetails
</div>

Nachfolgend finden Sie eine Übersicht über die Microsoft Teams- und Microsoft Graph-Berechtigungen, die unsere Integration benötigt – was sie jeweils ermöglichen, warum wir sie benötigen und wo sie verwendet werden.

> Auf einen Blick
>
> * Graph (Application, tenantweit): Erkennung & Orchestrierung der Installation.
> * Teams-Bot-RSC (pro Team/Chat): Eingeschränkter Zugriff auf Nachrichten/Mitglieder/Einstellungen ausschließlich dort, wo der Bot installiert oder aktiv ist.

<div id="tenant-wide-microsoft-graph-application-permissions">
  #### Mandantenweite Microsoft Graph-Berechtigungen (Application)
</div>

Diese erfordern Adminzustimmung in Microsoft Entra ID. Es handelt sich um reine Anwendungsberechtigungen (keine Benutzerdelegierung).

| Permission                                                | What it allows                                                      | Why we need it                                                                     |
| --------------------------------------------------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| `Organization.Read.All`                                   | Basisprofil der Organisation lesen                                  | Den Mandanten validieren, in dem die App installiert wird                          |
| `User.ReadBasic.All`                                      | Basisprofile aller Benutzer lesen                                   | Mitgliederidentitäten abgleichen und Erwähnungen in verknüpften Teams auflösen     |
| `AppCatalog.Read.All`                                     | Den Teams-App-Katalog lesen                                         | Unsere App finden und die für die Installation erforderliche `teamsAppId` abrufen  |
| `TeamsAppInstallation.ReadWriteAndConsentSelfForTeam.All` | Unsere eigene App installieren/deinstallieren; der App RSC erteilen | Den Bot in einem ausgewählten Team über das Devin-Dashboard installieren/entfernen |

> Hinweis: Wir verwenden den mandantenweiten Graph-Zugriff nicht, um Nachrichteninhalte zu lesen. Nachrichtenzugriff wird nur über RSC und nur dort gewährt, wo der Bot installiert bzw. vorhanden ist.

<div id="teams-bot-resource-specific-consent-rsc-permissions">
  #### Teams Bot Resource-Specific Consent (RSC) Berechtigungen
</div>

Diese Berechtigungen werden pro Team/Chat zum Zeitpunkt der Installation gewährt (gelten nicht mandantenweit).

| Permission                  | Scope        | What it allows                                                                                       | Why we need it                                                                                                              |
| --------------------------- | ------------ | ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `ChannelMessage.Read.Group` | Team/Channel | Kanalnachrichten lesen, in denen die App installiert ist                                             | Verarbeitung von Kanalkonversationen (Zusammenfassungen, Trigger, Synchronisierung)                                         |
| `ChannelMessage.Send.Group` | Team/Channel | Nachrichten in Kanälen senden (neue Beiträge und Thread-Antworten), in denen die App installiert ist | Auf Nachrichten in Kanal-Threads antworten und proaktiv Updates in Kanälen veröffentlichen                                  |
| `Member.Read.Group`         | Team/Channel | Teammitgliedschaft lesen                                                                             | Identitäten zuordnen, Berechtigungen prüfen, Weiterleitung von Erwähnungen                                                  |
| `TeamSettings.Read.Group`   | Team/Channel | Team-Einstellungen lesen                                                                             | Teamweite Richtlinien respektieren und Verhalten anpassen                                                                   |
| `ChatMember.Read.Chat`      | Chat         | Chatteilnehmende einsehen                                                                            | Personen korrekt adressieren/beantworten und Audit-Trails unterstützen                                                      |
| `ChatMessage.Read.Chat`     | Chat         | Nachrichten in Chats lesen, an denen der Bot teilnimmt                                               | Prompts, Kontext und Folgefragen verarbeiten                                                                                |
| `ChatMessage.Send.Chat`     | Chat         | Nachrichten in 1:1- und Gruppen-Chats (DMs) senden, an denen der Bot teilnimmt; nicht für Kanäle     | Nutzer:innen in DMs und Gruppen-Chats antworten, Benachrichtigungen posten und interaktive Antworten in Chat-Threads senden |
| `ChatSettings.Read.Chat`    | Chat         | Chat-Einstellungen lesen (z. B. Moderation)                                                          | Verhalten an Chatrichtlinien ausrichten (Rate-Limits, wer posten darf etc.)                                                 |

> RSC-Schutzmaßnahmen: Der Zugriff ist auf das spezifische Team bzw. den spezifischen Chat beschränkt, in dem die App installiert ist oder teilnimmt. Das Entfernen der App aus einem Team/Chat widerruft diesen Zugriff.

<div id="example-certificate-based-authentication-for-teams-discovery">
  #### Beispiel: Zertifikatbasierte Authentifizierung für die Teams-Erkennung
</div>

Das folgende Diagramm zeigt unsere reine Anwendungs-, zertifikatbasierte Authentifizierung mit Microsoft Graph. Mithilfe eines X.509-Clientzertifikats erhält der Dienst ein Zugriffstoken und ruft anschließend Microsoft Graph auf, um Teams aufzulisten (GET /v1.0/teams). Dieses Beispiel zeigt, wie Devin sicher eine Mandantenermittlung ohne Benutzerkontext durchführt.

```mermaid theme={null}
sequenceDiagram
    participant S as Cognition
    participant M as MSAL-Client
    participant K as Privater Zertifikatsschlüssel
    participant A as Entra ID Token-Endpunkt
    participant G as Microsoft Graph

    S->>M: Token für Graph abrufen (.default-Bereich)
    M->>M: Token-Cache prüfen (Mandant, Bereich, Client)
    M->>K: client_assertion JWT erstellen (mit Zertifikat signieren)
    K-->M: client_assertion (signiertes JWT)
    M->>A: POST /oauth2/v2.0/token
    A-->A: Signatur & Zertifikats-Fingerabdruck validieren<br/>App-Rollen für Graph verifizieren
    A-->M: 200 access_token (aud=graph)
    M-->S: access_token zurückgeben (im Cache speichern)

    S->>G: GET /v1.0/teams mit Authorization: Bearer access_token
    G-->S: 200 Liste der Teams (seitenweise über @odata.nextLink)
```

> Hinweis zu Anmeldeinformationen: Wir verwenden ein X.509-Zertifikat (`client assertion`) anstelle eines `client secret` für die Service-zu-Service-Authentifizierung. Dies gilt für Microsoft-Graph-Aufrufe, die Bot-Kommunikation mit dem Bot Framework Adapter sowie alle App-only-API-Aufrufe aus der Integration.

<div id="complete-message-processing-flow-teams-cognition">
  #### Vollständiger Nachrichtenverarbeitungsablauf (Teams → Cognition)
</div>

Das folgende Diagramm zeigt den vollständigen End-to-End-Ablauf der Verarbeitung, wenn ein Benutzer in Microsoft Teams eine Nachricht an Devin sendet, einschließlich Tokenüberprüfung und Bot-Verarbeitung.

```mermaid theme={null}
sequenceDiagram
    participant U as Teams-Client
    participant T as Teams-Dienst
    participant W as Bot-Webhook-Adapter
    participant J as JWT-Validator
    participant O as OpenID-Metadaten & Schlüssel
    participant C as Credential-Provider
    participant B as Bot-Logik

    U->>T: @Devin Benutzernachricht
    T->>W: HTTP POST-Aktivität + Authorization Bearer Token
    note over W: Authorization-Header und Token extrahieren

    W->>J: Token validieren
    J->>O: OpenID-Konfiguration und Signaturschlüssel abrufen
    O-->J: JWKS-Schlüssel zurückgeben
    J->>J: RS256-Signatur verifizieren<br/>und Claims parsen
    J-->W: Validierte Claims

    W->>C: AppId gegen Credentials prüfen
    C-->W: AppId erkannt
    W->>W: ServiceUrl zur Vertrauensliste hinzufügen

    W->>B: TurnContext erstellen und Bot-Handler aufrufen
    B->>B: Geschäftslogik ausführen
    B-->W: Ausgehende Aktivität

    W->>T: Antwort über Connector-Dienst senden
    T->>U: Nachricht an Benutzer zustellen
```

> Hinweis zu Anmeldeinformationen: Wir verwenden ein X.509-Zertifikat (Client-Assertion) statt eines Client-Secrets für die Dienst-zu-Dienst-Authentifizierung. Dies gilt für Microsoft-Graph-Aufrufe, die Bot-Kommunikation mit dem Bot Framework Adapter und alle App-only-API-Aufrufe aus der Integration.

<div id="consent-installation-flow">
  #### Zustimmungs- & Installationsablauf
</div>

1. **Admin-Zustimmung (mandantenweit)**
   * Ein Entra ID-Admin erteilt die oben aufgeführten Graph-Application-Berechtigungen.
2. **App-Discovery**
   * Die Integration fragt den Teams-App-Katalog ab, um unsere App zu finden und die `teamsAppId` abzurufen.
3. **Gezielte Installation**
   * Über unser Dashboard installieren wir den Bot in einem bestimmten Team.
   * Während der Installation werden die RSC-Scopes nur für dieses Team gewährt (oder für den entsprechenden Chat, wenn der Bot in einem Chat aufgerufen wird).
4. **Betrieb**
   * Discovery (Organisation/Teams/Kanäle/App-Katalog) verwendet Graph-Application-Berechtigungen.
   * Das Lesen und Senden von Nachrichten sowie das Lesen von Mitgliedern/Einstellungen basieren auf RSC in den installierten Oberflächen.

<div id="least-privilege-notes">
  #### Hinweise zum Least-Privilege-Prinzip
</div>

* Nur Basisleser: `User.ReadBasic.All` (kein mandantenweites Lesen von Nachrichten).
* Nachrichteninhalte werden ausschließlich über RSC und nur dort abgerufen, wo der Bot installiert bzw. vorhanden ist.
* Es werden keine Berechtigungen für Postfächer, Dateien oder Kalender angefordert.

<div id="revocation-uninstallation">
  #### Widerruf & Deinstallation
</div>

* Adminzustimmung widerrufen: Ein Mandantenadministrator kann die Unternehmens-App-Berechtigungen der App in Entra ID entfernen.
* Aus Teams deinstallieren: Entfernen Sie die App aus einem Team/Chat, um RSC für diese Ressource zu widerrufen.
* Datenverarbeitung: Bei der Deinstallation beendet unsere Integration die Verarbeitung von Ereignissen für dieses Team/diesen Chat und bereinigt zugehörige Abonnements/Verknüpfungen.
