Teams Verbindungsdaten

Diese Seite beschreibt die verschiedenen Datenquelle, mit denen Administratoren und 3rd Party Programme die Verbindungsdaten für Teams Meetings und Voice ermitteln und verarbeiten können. Microsoft hat hier eine ganze Flut von Quellen mit unterschiedlichen Ausprägungen, was sicher auch der Historie geschuldet ist. Skype for Business Online hatte schon ein Reporting und Skype for Business 2019 hat die QoE-Datenbank in die Cloud ausgelagert. Auf dieser Seite möchte ich die Möglichkeiten einer Auswertung mit Microsoft Teams vorstellen, um Probleme zu suchen oder Reports zu erstellen. Der Schwerpunkt liegt dabei auf Audio und Video, d.h. Telefonanrufe und Konferenzen, die bezüglich der Netzwerkverbindung und dem Zufriedenheitsfaktor der Mitarbeiter und Teilnehmer kritisch sind. Nicht berücksichtigt wird die Arbeit in Teams mit Chats, Dokumenten etc.

Die Story

Ich konzentriere mich hier erst einmal nur Microsoft Teams und Audio/Video. Zudem müssen Sie zwischen dem Reporting von Verbindungen von der Steuerung (Call Queues, Bots etc.) unterscheiden. Hier geht es um Reporting und dabei gibt es folgende Szenarien für Verbindungen:

  • PSTN-Calls über einen eigenen SBC
    Als Kunde kann ich Anrufe über meine eigene TK-Infrastruktur leiten und kann z.B. auf die Logs dieser Struktur anzapfen.
  • DirectRouting Calls
    Hier stellt Microsoft die TK-Anbindung und sie haben keinen Zugriff auf die SBCs. Es bleibt nur der Datenbestand in Teams selbst
  • Operator Connect / Hosted SBC
    Die Sprache kommt über die SBC-Umgebung eines Dienstleisters. Damit habe ich in der Regel keinen Zugriff auf die SBC-Logs und in welchem Umfang der Operator ihnen andere Informationen liefert, die über einfache Verbindungsdaten hinaus gehen, wäre zu prüfen.
  • Meetings
    Ob nun geplant oder Adhoc, Meetings mit Sprache, Bild, PowerPoint, Whiteboard und Desktop-Sharing sind die Regel und sollten mit erfassbar sein.
  • Internet Teams Calls/Federation Calls
    Je mehr Firmen und Mitarbeiter mit Teams arbeiten, desto ehe wird gar nicht mehr die Telefonnummer genutzt sondern direkt kommuniziert. Diese Verbindungen laufen nicht über einen SBC oder Telefonanschluss und sind damit über den TK-Weg nicht zu erfassen.

Wenn ich das als Bild aufzeichne, dann ist Teams in der Mitte und verschiedene Ein- und Ausgänge nutzen die Vermittlungsfunktion:

Und hier kann jeder Endpunkt mit jedem anderen Endpunkt sprechen und entsprechend Verbindungsdaten generieren. Selbst wenn Sie nur einen SIP-Trunk haben und die Clients (PC, Browser, Smartphone, Telefon, Konferenzsystem etc.) als einen zweiten Endpunkt ansehen, komme ich mit der MCU, Federation, Bots und Call-Queues auf fünf Endpunkte und damit auf 4+3+2=9 Kombinationen.

Datenbanken und Schnittstellen

Sie kennen sicher das Teams Admin Panel, um sich Anrufe anzeigen zu lassen und das "alte" CQD-Dashboard vermutlich auch. Deutlich weniger Administratoren dürften schon mit PowerBI die Daten auswerten und noch weniger nutzen Graph. Wenn Sie aber den APIs mit Fiddler u.a. auf die Finger schauen, dann werden sie verschiedene Zugriffe aber auch unterschiedliche Datenmodelle sehen. Eine offizielle Dokumentation gibt es nicht aber für mich stellt sie das Ökosystem wie folgt dar:

Dies keine Microsoft Referenz-Folie und ich habe keine Bestätigung, dass es wirklich so ist und die Werte und Pfeile so korrekt sind.

Eventuell ist auch alles im gleichen Backend und speziell der CQD-Zugriff mit PowerBI könnte auch einfach eine REST-API auf einen Cube sein und liefert damit nur Teilmengen.

Nach meiner Einschätzung gibt es allein im Teams System drei Datenspeicher, die Daten für mögliche Auswertungen vorhalten. Aber auch in ihre Exchange Postfach oder dem Azure Audit-Log kann es Informationen geben, die für die ein oder andere Auswertung relevant sein kann.

Unterstützung durch Net at Work:
Ich werde auf der Seite nur einen Teil beschreiben können. Sie können aber gerne eine weitergehende Beratung zu ihrer Problemstellung anfragen.

Portale und APIs

Einen Teil der Daten kann ich einfach per Browser im Teams Admin Center oder anderen URLs erreichen, während andere Daten per PowerShell, Graph o.a. anzusprechen sind.

Schnittstelle Beschreibung Zukunft

Team Admin Portal

Unter https://admin.teams.microsoft.com kann ein berechtigter Administrator auf den jeweiligen Benutzer gehen und sieht sofort die Anzahl an Calls und eine Übersicht der Qualität. Über den Reiter "Meetings & Calls" können sie aktuelle Meetings und vergangene Besprechungen und 1:1 Anrufe nachverfolgen.

Die Auswertung kann hier sehr detailliert erfolgen, wenn Sie die Werte zu interpretieren wissen.

OK

Team Admin Portal
RealTimeData

Mittlerweile gibt es im Teams Admin Center auch einen Zugriff auch Echtzeitdaten
"[Microsoft Teams] Microsoft Teams: Real time data for Teams Meetings in Teams Admin Center (Preview) [MC282781]"

OK

Microsoft Anrufqualitäts-Dashboard

Aus dem Teams Admin-Portal können Sie das CQD unter der URL https://cqd.teams.microsoft.com starten. Das war schon unter Skype for Business Online Administratoren bekannt und sieht auch immer noch etwas so aus. Es ist der Versuch die ganzen Einzelverbindungen zu gruppieren. Die Funktion ist auch für Microsoft Teams verfügbar. Das Look and Feed ist aber ziemlich altbacken und ich könnte mir vorstellen, dass hier nicht viel mehr kommt.

OK

PowerBI

Als Ablösung des CQD sehe ich PowerBI. Microsoft hat für Teams ein PowerBI Paket bereit gestellt, welches im Hintergrund aber einen REST-Zugriff auf https://cqd.teams.microsoft.com nutzt und damit anscheinend die automatische Schnittstelle des "Microsoft Anrufqualitäts-Dashboard" ist. Leider ist aber die API selbst nicht "offen", auch wenn ein Reverse Engineering per Fiddler durchaus möglich ist.

Wer mag, kann aus dem Connector die PQX-Datei auspacken (Umbenanntes Zip-Archiv) und den Code direkt anschauen.

OK

Graph

Über Microsoft Graph können Sie mittlerweile umfangreiche Daten abrufen und auswerten. Über einen Webhook können Sie sogar sehr zeitnah diese Daten erhalten. Allerdings können Sie z.B.: keine Liste der Federation Calls oder internen Teams-Verbindungen oder Meetings erhalten oder per Data Connect mit ca. 9h Verzögerung auch große Datenmengen auslesen.

Timestamp in UTC when the Call Record was created. It is approximate 9 hours after the meeting has ended
https://github.com/microsoftgraph/dataconnect-solutions/blob/main/datasetschemas/BasicDataSet_v0.TeamsCallRecords_v1.md

OK

SBC

Wenn Sie selbst einen SBC betreiben oder ihre Carrier ihnen Zugriff auf die Logs eines gehosteten SBCs erlaubt, können Sie hier zumindest die PSTN-Anrufe in beide Richtungen auswerten. Allerdings sehen Sie meist nur den Verbindungsaufbau/Abbau aber keine internen Weitervermittlungen.

OK

PowerShell

Lange Zeit konnte ein Administrator per SfB PowerShell mit dem Befehl "Get-CSUserSession" Details zu den Aktivitäten eines Benutzers in Erfahrung bringen. Dieser Befehl ist mit dem Ende von Skype for Business Online abgekündigt.

Depreciated

Diese Liste ist sicher nicht vollständig, wenn speziell die Webseiten rund ums Teams Admin Portal nutzen im Hintergrund weitere APIs, die aber nicht öffentlich sind und daher eine Funktion und Beständigkeit nicht gewährleistet werden kann. Interessant sind natürlich Wege, die keinen Browser erfordern, sondern eine automatische Übernahme in das eigene Monitoring erlauben oder sogar Echtzeitdaten liefern.

Datensicherheit

Hinweis:
Die Auswertung von Verbindungsdaten ist aus Datenschutzgründen besonders sensibel zu behandeln. Sprechen Sie vorab mit ihrem Datenschutzbeauftragten und Betriebsrat/Personalrat über den genauen Umfang

Microsoft hat in 2021 die Default-Einstellung für die Anzeige der personenbezogenen Daten geändert, so dass diese nicht mehr in Klartext im Reporting zu sehen sind. Sie können das Verhalten als "Global Admin" im Office 365 Portal wieder aktivieren:

Die folgenden Ausnahmen wurden mit der angezeigten Einstellung gemacht.

Teams Admin Portal

Der einfachste Weg zu Problemen eines Benutzers ist das Teams-Admin-Portal. Bei jedem Benutzer gibt es eine Karteikarte "Meetings&Calls", die einen direkten Zugang zu den Verbindungen der letzten 30(?) Tage gewährt.

Etwas ungeschickt ist die Sortierung nach der MeetingID. Sie können auch nach den anderen Spalten sortieren, aber es ist eine lexikalische Sortierung, was beim Datum und beim "When" untauglich ist.

Ich hätte mir hier eine Standardsortierung nach der zeitlichen Abfolge gewünscht, bei denen die letzten Anrufe oben stehen.

Mit einem Klick auf die Meeting ID kommen Sie direkt an die Details. Hier ein "poor call", den Microsoft als schlecht ansieht. Das ist nicht das Rating des Anwenders.

So schön diese Gui ist, so beschränkt ist sie natürlich für Massenauswertungen.

Das Admin Portal bietet auch einen Zugriff per Browser auf "Usage Reports" unter "Analytics & Reports". Hier können vordefinierte Berichte angeschaut und manuell herunter geladen werden.

Microsoft Call Quality Dashboard

Parallel dazu gibt es noch das klassische Call Quality Dashboard unter der URL https://cqd.teams.microsoft.com, welches noch den Skype for Business Fair verströmt. Schon dass man sich nochmal anmelden muss, ist ungewöhnlich und an Layout hat sich seit einige Zeit auch nichts mehr getan. Sie bekommen aber schon einen ersten Überblick über Trend u.a., wenn Sie denn den richtigen Bericht finden. Zudem sollten Sie ihre Gebäudedaten hochladen, damit Sie auch nach Netzwerk-Standorten gruppieren und filtern können.

Exemplarisch habe ich den "Erfahrungsqualitätsbericht" ausgewählt, der die Rückmeldungen der Anwender enthalten sollte. Sie sehen, dass hier im März 2021 neben Microsoft Teams auch noch Skype for Business gelistet wurde:

Auch wenn die Oberfläche altbacken wirkt, erlaubt sie doch sehr gute Einblicke über längere Zeiträume, Analysen nach Standorten u.a. Spezielle "Qualitäts-Drilldown Reports" erlauben die Filterung immer weiter zu verfeinern, um Probleme zu erkennen. Eine Suche nach Subnetz zeigt sogar die BSSID der WLAN-Access-Points

Ein zweiter wichtiger Bericht ist der "Erfahrungsqualitätsbericht". Hier interessiert mich insbesondere die Clients und Anzahl der Verbindungen, die nicht über UDP erfolgt sind.

Microsoft fordert, dass die Clients per UDP mit der Konferenz kommunizieren kann. Hier sehen Sie weniger als ein Prozent und das ist in Ordnung, da der Anwender vermutlich in einem Gäste-LAN oder Hotel ist, in dem UDP gerne mal geblockt wird. Das sollte aber nicht in von ihnen verwalteten Netzwerken erfolgen. 

Dann fehlt nur noch die ordentliche Pflege der Netzwerktopologie.

Power BI und CQD

Über die Leistungsfähigkeit von Power Bi zur Analyse von Datenbeständen habe ich schon im Bereich Power Bi mehrere Seiten geschrieben. Umso mehr habe ich mich gefreut, dass es von Microsoft nun auch einen PowerBI-Connector und Beispiel-Reports für CQD gibt. Sie müssen dazu auf einem PC einfach die kostenfreie Version von PowerBi installieren und dann den Connector nachinstallieren

PowerBi Desktop
https://powerbi.microsoft.com/de-de/desktop

CQD Power BI Query Templates
https://www.microsoft.com/en-us/download/details.aspx?id=102291

Das Archiv enthält mehrere vorgefertigte PowerBI-Reports, die sie auch anpassen können:

Für die Nutzung müssen Sie CQD-Admin sein. Sie können die Report auch anpassen und im Unternehmen veröffentlichen und so anderen Personen zur Verfügung stellen. Allerdings benötigen diese Personen dann eine PowerBi Lizenz und natürlich CQD-Rechte. Mit dem Connector können Sie natürlich auch selbst die Daten anzapfen.

Sie haben dann die Wahl, ob sie die Daten "importieren" oder quasi "live" über die Funktion "Direct Query" abfragen.

Leider habe ich keine offizielle API gefunden, um die Daten selbst per Skript o.ä. abzufragen. Per Fiddler kann man natür.ich schon sehen, was PowerBI im Hintergrund macht

Die im Archiv enthaltene „MicrosoftCallQuality.pqx“ ist eine ZIP-Datei, welche ausgepackt den Sourcecode für den Zugriff offenbart. Die Datei „MicrosoftCallQuality.m“ aus dem Archiv enthält URLs und auch App-IDs, mit denen sich PowerBi dann am Backend anmeldet:

 

Allerdings ist das natürlich eine "dokumentierte API", und kann von Microsoft immer wieder verändert werden.

Data API für CQD

Leider ist die dahinter verwendete Schnittstelle wohl nicht Graph, sondern ein eigener REST-Service, zu dem es keine API gibt. Per Fiddler ist zumindest zu sehen, dass der erste Zugriff (authentifiziert) einen Redirect auf die eigentliche Seite anfordert

Der zweite Zugriff beim "Direct Query" liefert eine 141kByte große JSON-Definition des Data Cube:

Die Abfrage liefert aber einfach nur eine ganz große Tabelle mit ganz vielen Spalten

Wenn ich dann eine Spalte in PowerBi einbinde, sehe ich folgende Abfrage:

Man kommt also mit etwas Bastelei vermutlich schon an die Daten ran, nachdem man sich ein Authentifizierungs-Token (OAuth) besorgt hat. Die URL der API ist:

https://cqd.teams.microsoft.com/data/emea/runQuery

Wenn Sie dann etwas weiter schaue, dann finden Sie eine ältere Beschreibung für Skype for Business Server, die ziemlich viele Parallelen hat:

PowerShell: Get-CSUSerSession

Dieses Commandlet war mit Skype for Business der Zugang zu den Daten. Allerdings wurde das Modul schon länger angekündigt und ist mittlerweile nicht mehr verfügbar.

Deprecation Notice 
We will be retiring this feature and cmdlet from Skype for Business Online beginning 5/30/2020. Instead we recommend the utilization of MS Graph Call Records API, which is where we will continue to invest our development resources. https://docs.microsoft.com/graph/api/resources/callrecords-api-overview?view=graph-rest-beta
Quelle: https://docs.microsoft.com/en-us/powershell/module/skype/get-csusersession?view=skype-ps 

Damit funktionieren natürlich auch andere Skripte nicht mehr, die auf diesem Commandlet aufbauen

Graph / Teams Call Records API

Die Notiz bei Get-CSUserSession führt direkt zur Graph API. Für den Zugriff auf diese API benötigen Sie die Berechtigung "CallRecords.Read.All". Allerdings brauchen Sie noch eine Information, die es zumindest im März 2021 noch nicht per API gab: Die CallID. Über Graph können sie zu jeder CallID die Details erhalten aber keine Liste de CallIDs.

Es gibt aber eine API um zumindest die PSTN-Verbindungen als Liste zu erhalten. Das ist für Abrechnungszwecke natürlich notwendig.

Allerdings gibt es einen Webhook, über den man selbst einen WebService einbinden kann. Sie können dann Graph mitteilen, dass Microsoft ihren öffentlich erreichbaren Webservice ansprechen soll, sobald neue Daten vorliegen. Das ist eine durchaus gängige Praxis, da sie dann nicht immer wieder pollen müssen.

Über den Webhook, der durchaus auch eine Azure Funktion sein kann, bekommen Sie die CallID aber keine weiteren Daten..

SBC Logs

Wenn Sie mit Teams über Direct Routing telefonieren, dann laufen die Festnetzanrufe über einen Session Border Controller. Die meisten SBCs protokollieren auch die ein oder anderen Kennzahlen. Sie sehen aber nur die beiden Teilstrecken vom Carrier zum SBC und vom SBC zu Microsoft. Was dahinter passiert, können Sie nicht sehen. Es gibt aber den Sonderfall, dass mit "Direct Routing und Media Bypass" gearbeitet wird. Dann sieht wiederrum die Cloud keine Details und sie müssen Sprachprobleme beim SBC analysieren.

Bei einem korrekten Setup nutzen aber nur Clients den direkten Weg, die am gleichen Standort und im gleichen LAN sind. Da "sollte" es doch keine Probleme geben. Knifflig könnten hier die VPN-Benutzer sein, wenn diese als "Intern" angesehen werden aber die Verbindung besser über die Cloud gehen sollte.

Weitere Links