docs(it-management): add E2E lessons learned for meeting auto-import

- UPN -> OID resolution required (Policy matches by OID)
- aiInsights moved under /copilot/ (Beta)
- Transcript Accept header workaround
- Permission rename: OnlineMeetingArtifact -> OnlineMeetingRecording

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
beo3000 2026-05-07 07:46:57 +02:00
parent 69c7f86fac
commit a1d4b7b0ce
1 changed files with 9 additions and 2 deletions

View File

@ -66,7 +66,7 @@ Authentication: OAuth2 Client Credentials Flow (`@azure/msal-node`)
Ergänzt am 2026-05-06:
- `OnlineMeetings.Read.All` — OnlineMeeting per JoinUrl auflösen
- `OnlineMeetingTranscript.Read.All``.vtt` lesen
- `OnlineMeetingArtifact.Read.All` — Recording-URL lesen
- `OnlineMeetingRecording.Read.All` — Recording-URL lesen (frühere Bezeichnung `OnlineMeetingArtifact.Read.All` wurde von Microsoft umbenannt; alter Name funktioniert nicht mehr)
- `OnlineMeetingAiInsight.Read.All` — Copilot-Recap (Beta-Endpoint)
Bereits vorhanden: `Calendars.Read`, `User.Read.All`, plus Mail/Sites.
@ -110,7 +110,7 @@ Meeting endet
├─> resolveOnlineMeeting ── OnlineMeetings.Read.All + AccessPolicy
├─> fetchTranscriptVtt ── OnlineMeetingTranscript.Read.All
├─> fetchAiInsights ── OnlineMeetingAiInsight.Read.All (Beta)
└─> fetchRecordingUrl ── OnlineMeetingArtifact.Read.All
└─> fetchRecordingUrl ── OnlineMeetingRecording.Read.All
── JSON ──>
Claude: Doppel-Pass + Speaker-Mapping + Merge + Agenda-Rückführung
└─> Meeting-Notiz + Agenda.md aktualisiert
@ -123,6 +123,13 @@ Meeting endet
- Recap fehlt (kein Copilot) → User-Prompt zum manuellen Einfügen
- Kein O365-ID → User kann manuell weitermachen ohne Auto-Import
## Lessons Learned (E2E 2026-05-06)
- **UPN → OID Auflösung Pflicht:** `/users/{upn}/onlineMeetings` liefert 404, auch mit korrekter Application Access Policy. OnlineMeetings-API + Policy matchen ausschließlich gegen die Object-ID. Script löst daher zuerst UPN → OID via `/users/{upn}?$select=id` auf.
- **aiInsights ist umgezogen:** Endpoint liegt jetzt unter `/copilot/users/{oid}/onlineMeetings/{mid}/aiInsights` (Beta). Alter Pfad `/users/{oid}/onlineMeetings/{mid}/aiInsights` antwortet mit 404 "API not supported". List-Call liefert nur Metadaten — Details (`meetingNotes`, `actionItems`, `mentions`) brauchen einen Detail-Call pro Insight-ID.
- **Transcript Content braucht expliziten Accept-Header:** Default `Accept: */*` wird mit "Invalid format '*/*' specified" abgewiesen. Lösung: `?$format=text/vtt` + `Accept: text/vtt` + `responseType('text')`.
- **Permission-Rename `Artifact` → `Recording`:** Microsoft hat `OnlineMeetingArtifact.Read.All` umbenannt zu `OnlineMeetingRecording.Read.All`. Alter Name ist tot, gibt 403 mit Hinweis auf den neuen Namen.
## Bekannte Einschränkungen
- Nur Meetings, bei denen `AZURE_USER_EMAIL` der Organizer ist (Graph-Restriktion)