64 lines
3.2 KiB
Markdown
64 lines
3.2 KiB
Markdown
<!-- status: canonical -->
|
|
<!-- lastReviewed: 2026-04-05 -->
|
|
<!-- verifiedAgainst: service-teams-browser-bot (documentation review 2026-02-18) -->
|
|
|
|
# Teams Meeting Bot -- Architektur
|
|
|
|
## Überblick
|
|
|
|
AI-gesteuerter Meeting-Bot für Microsoft Teams. Tritt Meetings als regulärer Teilnehmer bei (Browser-Automation via Playwright/Chromium), erfasst Live-Transkripte, reagiert per Sprache (TTS) und/oder Chat. Kein Teams-Graph-SDK nötig -- funktioniert mandantenübergreifend ohne Admin-Approval.
|
|
|
|
## System-Architektur
|
|
|
|
```
|
|
┌────────────┐ SSE ┌──────────────┐ WebSocket ┌─────────────┐
|
|
│ Frontend │◄──────────────│ Gateway │◄───────────────│ Bot Service │
|
|
│ (Nyla UI) │ │ (AI, TTS, │ HTTP (join/ │ (Playwright │
|
|
│ │ │ Sessions) │ leave) │ Chromium) │
|
|
└────────────┘ └──────────────┘ └─────────────┘
|
|
```
|
|
|
|
| Verbindung | Protokoll | Zweck |
|
|
|------------|----------|-------|
|
|
| Gateway ↔ Bot | WebSocket | Echtzeit: Transkripte, Chat, Audio, Status |
|
|
| Gateway → Bot | HTTP | Session-Steuerung (join, leave, status) |
|
|
| Frontend ← Gateway | SSE | Live-Transkript-Stream für UI |
|
|
|
|
## Kernfähigkeiten
|
|
|
|
- **Live Transcription:** Erfasst Untertitel mit Sprecher-Zuordnung, streamt via SSE
|
|
- **AI-Analyse:** Transkript-Segmente werden durch AI-Modell (GPT-4o-mini / Claude) analysiert
|
|
- **Voice Response:** TTS-Audio wird über den Mikrofon-Kanal ins Meeting gespielt
|
|
- **Chat Response:** Bot kann Chat-Nachrichten ins Meeting schreiben
|
|
- **Multi-Session:** Mehrere Bot-Instanzen parallel in verschiedenen Meetings
|
|
|
|
## Use Cases
|
|
|
|
| UC | Beschreibung |
|
|
|----|-------------|
|
|
| AI Meeting Assistant | Bot nimmt teil, hört zu, antwortet auf Ansprache ("Hey Nyla, ...") |
|
|
| Live Transcription | Echtzeit-Transkript-Stream für Teilnehmer ausserhalb des Meetings |
|
|
| Meeting Summary | AI-generierte Zusammenfassung nach Meeting-Ende |
|
|
| Multi-Bot | Mehrere parallele Sessions in verschiedenen Meetings |
|
|
|
|
## Integration mit Gateway
|
|
|
|
Der Gateway (Feature `teamsbot`) verwaltet Sessions und stellt die AI-Pipeline bereit:
|
|
- Session-Lifecycle: erstellen, starten, stoppen
|
|
- WebSocket-Verbindung pro Session
|
|
- AI-Analyse der Transkript-Segmente via `serviceAi`
|
|
- TTS-Generierung für Voice-Responses
|
|
|
|
## Schlüssel-Dateien
|
|
|
|
| Datei / Bereich | Rolle |
|
|
|-----------------|-------|
|
|
| `gateway/modules/features/teamsbot/` | Gateway-seitiges Feature-Modul |
|
|
| `service-teams-browser-bot/` | Eigenständiger Bot-Service (separates Repository) |
|
|
|
|
## Regeln / Invarianten
|
|
|
|
- Bot tritt als **regulärer Web-Teilnehmer** bei (Browser-Automation), nicht via Graph Communications SDK
|
|
- Jede Session läuft in einer **eigenen Browser-Instanz** (Isolation)
|
|
- Authentifizierter Join (mit Microsoft-Account) oder Anonymous Guest -- je nach Konfiguration
|
|
- Gateway ist die **einzige** Schnittstelle für AI-Aufrufe und TTS -- der Bot-Service selbst hat keine AI-Logik
|