Teams Personal Chat

Dieser Seite beschäftigt sich mit der Chat-Funktion, die (fast) jeder Teams Anwender nutzen kann, um außerhalb von Teams und Kanälen mit anderen Teams Benutzern im eigenen oder einem anderen Tenant aber auch Skype Consumer/Teams Home-Benutzern zu kommunizieren.

Warum chatten?

Natürlich möchten wir beim Thema "Modern Work", dass die Mitarbeiter miteinander kooperativ arbeiten, quasi "Collaboration" leben und dazu gehört nicht nur das Meeting und die gemeinsame Bearbeitung von Dateien in einem Teams-Kanal oder Sharepoint, sondern auch die Diskussion in eben diesen Kanälen. Ein Team und der Kanal sind aber der falsche Platz wenn es um 1:1 Kommunikation oder AdHoc-Gruppenchats geht. Dafür gibt es dann die Chat-Funktion in Teams selbst, wenn sie Links den Bereich "Chat" anwählen.

Sie können denn direkt einen neuen Chat starten oder seit Sommer 2022 sogar mit sich selbst chatten. Ich nutze die Funktion aktuell aber nicht. Natürlich können Sie auch direkt oben nach einem Namen suchen oder an verschiedenen anderen Stellen einen Chat starten.

Teams sucht übrigens sowohl die Proxy-Addresses als auch den UPN der Person. Ich habe extra einen "fedtest"- Benutzer mit folgenden Daten angelegt:

UPN:         fedtest@msxfaqlab.de
Alias:       fedtest2
Proxy:       SMTP:fedtest3@msxfaqlab.de
Proxy:       smtp:fedtest@msxfaqlab.de  (Wird aufgrund es UPN immer wieder addiert)
Proxy:       smtp:fedtest5@msxfaqlab.de
Proxy:       SIP:fedtest4@msxfaqlab.de
IM-Adresse : fedtest6@msxfaqlab.de (wurde aus dem lokalen AD gefuellt)

Per Suche aus einem anderen Tenant finde ich den Kontakt aber nur über die folgenden Adressen:

fedtest@msxfaqlab.de
fedtest3@msxfaqlab.de
fedtest5@msxfaqlab.de

Im Sep 2022 hat Teams bei einer Suche nach Teilnehmern nach allen SMTP-Adressen in den ProxyAddreses gesucht. Ob auch der UPN durchsucht wird, kann ich nicht unterscheiden, da Exchange Online anscheinend des UPN immer auch als ProxyAddresse addiert. Das bedeutet aber auch, dass ein Benutzer mit Teams-Lizenz ohne Exchange Lizenz durchaus "ProxyAddresses" im AzureAD haben kann.

Suche nach Exchange Kontakten

Teams kann bei der Suche nach externen Personen auch ihre Kontakte aus dem Exchange Postfach nutzen. Dazu gibt es allerdings einige Vorgaben:

  • Exchange Online Postfach
    Teams fragt nicht per EWS bei Exchange On-Premises nach.
  • Kontakte muss Telefonnummer haben
    Kontakte im Postfach werden von Teams nur gefunden, wenn eine Telefonnummer hinterlegt ist. Das dürfte insbesondere für die Funktion "Telefonieren mit Teams" wichtig sein, damit Anwender die in Outlook gepflegten Kontakte auch in Teams verwenden können
  • Suche nach Mailadresse
    Microsoft Teams sucht aber nicht über den Displaynamen sondern nur die "Mailadresse".

So richtig "bequem" ist das natürlich nicht. Speziell der Zwang einer Rufnummer am Kontakt und die fehlende Suche nach Name, Displayname etc. ist schon eine starke Einschränkung. Da würde ich dann doch wieder lieber in Outlook nach einem Kontakt suchen und von dort die Anwahl oder den Chat starten.

Intern/Extern und Island/TeamsOnly

Es gibt vier Arten, einen Chat zu nutzen, von dem diese Seite nur zwei Fälle genauer betrachtet:

  • 1:1 Same Tenant Chat
    Die Konten im gleichen Tenant können natürlich miteinander 1:1 chatten. Das ist sogar im Island-Mode möglich aber keine Federation
  • 1:1 Cross Tenant Chat
    Sobald die beiden Kommunikationspartner in unterschiedlichen Tenants sind, sprechen wir von Federation. Die Nutzung von Federation kann pro Tenant eingeschränkt werden.
  • Gruppen-Chat in einem Kanal (nicht betrachtet)
    Anwender nutzen einen bereitgestellten Teams-Kanal, um da drin sich zu einem Thema zu unterhalten. Über verschiedene Teams  und Kanäle können Konversationen separiert und über "Threads" in einem Kanal auch gruppiert werden.
  • Gruppen-Chat zwischen Personen/Meetings (nicht betrachtet)
    Außerhalb der Teams und Kanäle können Anwender natürlich ein "Meeting" (auch ohne Audio/Video) starten und darin chatten.

Aber auch beim 1:1 Chat geht nicht alles immer sofort. Selbst wenn beide Kommunikationspartner mit Microsoft Teams arbeiten, ist nicht sichergestellt, dass die Kommunikation ungehemmt funktioniert. Neben DNS-Einträgen für die Kompatibilität Skype for Business ist vor allem der Teams Interop-Mode relevant.

Teams Mode

Microsoft Teams kennt insgesamt fünf Betriebsarten, von denen nur bei zwei Modi eine Personal-Chat-Funktion bereitgestellt wird. Der Chat in einem Kanal ist davon nicht betroffen. Wenn jemand keinen 1:1-Chat in Microsoft Teams nutzen kann, würde ich nach der Prüfung auf eine gültige Lizenz zuerst die Einstellung der Betriebsart beim Benutzer prüfen:

Mittlerweile stellt Microsoft immer mehr mehr Tenants auf "TeamsOnly" um, wen es keine SfB-Spuren gibt, was vieles vereinfacht. Siehe auch Teams Zwangsmigration.

Mode

Chat

Bemerkung

Island

Ja, aber nur intern

Im Island-Mode, welcher zugleich die Standardbetriebsart eines Tenants bis zum Wechsel zu Teams Only ist, kann der Anwender auch 1:1-Chat nutzen. Allerdings ist die Funktion auf den gleichen Tenant beschränkt, denn Federation zu anderen Tenants ist nicht vorgesehen. Eingehende Chats anderer Firmen landen immer in Skype for Business. Wenn Sie kein Skype for Business mehr haben oder nie hatten, dann sollten sie ihre Anwender auf TeamsOnly stellen oder warten, bis Microsoft das für sie machen.

SfBOnly
SfBWithTeamsCollab
SfBWithTeamsCollabandMeeting

Nein, da in SfB

Bei allen drei SfB*Modes können die Anwender nicht in Teams einen persönlichen Chat nutzen. Die Konfiguration zwingt die Anwender dazu weiterhin mit Skype for Business zu arbeiten.

TeamsOnly

Ja , komplett

Erst mit TeamsOnly wechselt neben der Telefonie und Präsenzstatus auch die Chat-Funktion zu Teams. Nun kann der Anwender auch wieder den persönlichen Chat nutzen

Entsprechend gibt es dann schon hier eine Matrix, wer mit wem kommunizieren kann. Links stehen die fünf Betriebsarten ihrer eigenen Benutzer, die den Chat statt und oben die möglichen Gegenstellen:

  Same Tenant Federation Cross Tenant
Island SfB* TeamsOnly Island SfB* TeamsOnly
TeamsOnly

Teams

Interop

Teams

SfB Interop

SfB Interop

Teams

SfBOnly
SfBWithTeamsCollab
SfBWithTeamsCollabandMeeting

SfB

SfB

Interop

SfB

SfB

Interop

Island

Teams/SFB

SfB

Teams

SfB

SfB

SfB

Die Bedeutung der Farben ist::

Farbe Bedeutung

Teams

Bei dieser Paarung nutzen beide Teilnehmer Microsoft Teams und können alle Funktionen einsetzen.

Interop/ SfBInterop

Eine Seite nutzt noch SfB Premises und solange der entsprechende Benutzer nicht "TeamsOnly" ist, kann er in Teams nicht chatten. Er muss für ausgehende und eingehende Chats seinen Skype for Business Client nutzen. Wenn die Gegenseite aber Teams nutzt, dann haben wir den "Interop"-Mode. Sie Teilnehmer sehen ihren Status und können einfache Text-Nachrichten senden. Aber schon die Smiley funktionieren nicht sauber. Ebenso kann kein Dateitransfer genutzt werden.

Teams/SfB

Wenn beide Partner im gleichen Tenant im "Island"-Mode sind, dann haben sie die Wahl, ob sie mit Skype for Business oder Teams miteinander chatten. Sie müssen aber auch beide Clients gestartet haben, damit sie keine Meldung verpassen.

SfB

Diese Benutzer haben keine 1:1 Chat-Funktion in Microsoft Teams und müssen daher den Skype for Business Client nutzen. Die Gegenstelle bekommt die Nachrichten auch in Skype for Business.

Die Einschränkungen beim "Interop"-Betrieb können Sie direkt im Chatfenster sehen. Bei nativer Federation mit Microsoft Teams können Sie in den Nachrichten auch Zusatzfunktionen nutzen:

Bei einer Federation mit einem Skype for Business-Benutzer sind alle zusätzlichen Funktionen nicht mehr vorhanden:

Messaging Policies

Solle die Lizenz und die Betriebsart passen aber die Chatfunktion weiterhin nicht erscheinen, dann kann es an einer "Messaging Policy" liegen, die ein Administrator eingestellt hat. Diese gibt es einmal als globale Einstellung für alle Benutzer, die keine abweichende Richtlinie haben.

Wer mit der PowerShell nachschaut, findet weitere Richtlinien, die aber im Teams Admin Center nicht aufgeführt werden.

PS C:\> Get-CsTeamsMessagingPolicy | ft identity,allowuserchat

Identity       AllowUserChat
--------       -------------
Global                  True
Tag:Default             True
Tag:EduFaculty          True
Tag:EduStudent          True

Diese Einstellungen betreffen die Chat-Funktion insgesamt und wenn diese über eine Messaging-Policy beschränkt werden, dann wirkt sich dies auch auf Chats in Kanälen aus.

Cross Tenant Einstellungen

Wenn zwei Tenants miteinander chatten wollen, sprechen wir von "Federation" und damit dies funktioniert, müssen mehrere Voraussetzungen erfüllt sein.

  • Federation auf beiden Seiten erlaubt (Default:Open)
    Beide Tenants haben ein "External Access"-Einstellungen, über die eine Kommunikation zwischen Tenants beschränkt werden kann. Normalerweise ist hier alles "offen". Wenn eine Seite die Kommunikation unterbindet, kommt kein Chat zustande:
  • Domainaktivierung
    Wenn Sie eine eigene Domain im Tenant eintragen, dann fordert sie Microsoft zur Anlage von einigen DNS-Einträge an, wenn Sie die entsprechende Checkbox setzen:

    Diese Einstellung hat aber keine Bedeutung für die eigentliche Federation aber Natürlich sollten sie hier "Skype for Business" aktivieren und die geforderten DNS-Einträge vornehmen. Nur dann sind sie von Firmen erreichbar, die noch mit Skype for Business arbeiten. Aber für die Federation zwischen zwei TeamsOnly-Benutzern unterschiedlicher Tenants funktioniert auch ohne diese DNS-Einträge. In der Domain-Übersicht sehen die direkt, welche Dienste für eine Domain konfiguriert sind.
  • Keine IM-Adresse
    Die Anzeige der "IM Adressen" in der Domainübersicht ist für Teams nicht aussagekräftig, sondern beschreibt wohl die alten Skype for Business-SIP-Adressen. Der Benutzer "fctest6" in dem Beispiel hat eine Teams Lizenz und ist auch per Federation erreichbar, obwohl er hier keine IM-Adresse hat und die Domain weder für Skype for Business aktiviert noch mit den DNS-Einträgen versehen ist
  • Teams Lizenz
    Natürlich müssen alle Teams Nutzer auch eine Teams Lienz haben. Sie können hier natürlich nur ihre eigenen Benutzer prüfen. Der Administrator der Gegenseite sollte dies auch sicherstellen. Erschwerend kommt dazu, dass im Teams Admin Center (https://admin.teams.microsoft.com/users) auch Benutzer angezeigt werden, die noch keine Lizenz haben. Nicht immer ist ein "Unlicensed" so offensichtlich, denn das Feld liefert der Directory-Status. Daher ist es hilfreich, den "InterpretedUserTyp" mit einzublenden.

    Oder sie prüfen natürlich direkt am fraglichen Benutzer, ob er wirklich eine Teams-Lizenz hat.

External Access Policy

Auch für die Steuerung der Federation gibt es neben der globale Einstellung der Message Policy und der "Allowed/Blocked-Domains" eine eigene "External Access Policy". Die meisten Administratoren werden diese aber noch nicht gesehen haben, da sie im Teams Admin Panel nicht erscheint. Sie ist aktuell (Herbst 2022) allein per Teams PowerShell zu verwalten.

Connect-MicrosoftTeams 
Get-CsExternalAccessPolicy
....

Per Default sind vier oder Richtlinien vordefiniert. Die "Tag:PICOnly" habe ich nicht in allen Tenants gefnuden.

Einstellung/Richtlinien Global Tag:FederationAndPICDefault Tag:FederationOnly Tag:PICOnly Tag:NoFederationAndPIC
EnableFederationAccess
EnableXmppAccess
EnablePublicCloudAccess
EnablePublicCloudAudioVideoAccess
EnableOutsideAccess
EnableAcsFederationAccess
EnableTeamsConsumerAccess
EnableTeamsConsumerInbound
RestrictTeamsConsumerAccessToExternalUserProfiles
True
False
True
True
True
True
True
True
False
True
False
True
True
True
True
True
True
False
True
False
False
False
True
True
True
True
False
False
False
True
True
True
True
True
True
False
False
False
False
False
True
True
True
True
False

Die globale Richtlinie entspricht im Standard der "Tag:FederationAndPICDefault". Die anderen Richtlinien schalten einmal nur PIC oder die komplette Federation ab. Sie können mit "New-CsExternalAccessPolicy" weitere eigene Richtlinien anlegen.

Pro Benutzer können Sie die aktive Richtlinie einfach ausgeben. Bei meinem Testusern ist nur einem Benutzer eine Richtlinie zugewiesen.

PS C:\> Get-Csonlineuser | ft UserPrincipalname,ex*

UserPrincipalName                 ExternalAccessPolicy
-----------------                 --------------------
ADuser1@UCLABOR.DE
Clouduser1@lyncfaq.net
fctest1@UCLABOR.de
fctest2@lyncfaq.net               NoFederationAndPIC
teamskalender@lyncfaq.net
user1@uclabor.de

Das lässt sich aber ebenfalls per PowerShell ändern.

# Abweichende External Access Policy zuweisen
Grant-CsExternalAccessPolicy `
   -Identity fctest2@lyncfaq.net `
   -PolicyName Tag:NoFederationAndPIC

# External Access Policy entfernen
Grant-CsExternalAccessPolicy `
   -Identity fctest2@lyncfaq.net `
   -PolicyName $null

Wenn Sie sehr viele Benutzer auf einen Schlag anpassen wollen, dann sollten Sie besser "New-CsBatchPolicyAssignmentOperation" nutzen.

TeamsFederationDiag

Wenn Federation nicht funktioniert, können Sie den Microsoft-Troubleshooter aus dem Microsoft 365 Portal nutzen. Sie starten die Hilfe und suchen einfach nach "Diag:Teams Federation" oder klicken einen der beiden Links:

Im Dialog geben sie dann einen Benutzer aus ihrem Tenant und die Zieldomain an.

Danach kann es einige Zeit dauern, in der Microsoft verschiedene Tests im Hintergrund durchführt. Leider wird nicht angezeigt, welche Tests genau durchgeführt werden aber bei einem Fehlerfall könnten die Hinweise helfen. Hier ein paar Beispiele:

  • Gültiger Benutzer und Zieldomain
    Meine Diagnose kann dann keinen Fehler finden aber es könnte ja an der Gegenseite liegen
  • Angegebener eigener Benutzer gibt es nicht (Tippfehler)
  • Angegebener Benutzer ist nicht in TeamsOnly-Mode oder Island sondern angeblich On-Premises
    Beim dem User war der "InterpretedUserType= HybridOnPremTeamsOnlyUser", was so gar nicht möglich sein sollte. Siehe auch TeamsOnly Rollback und InterpretedUserType
  • Fehlende Lizenz
    Die Meldung ist durchaus interessant, wenn in dem Fall hatte mein Benutzer eine Teams-Lizenzen aber konnte dennoch keine Federation nutzen. Für Federation ist aber auch auch eine Skype for Business Lizenz in der Cloud erforderlich. Ansonsten zeigt der Assistenz folgenden Fehler:
  • Ungültige Zieldomain
    Wenn ich eine Domain angebe, die es definitiv weder in einem Microsoft 365 Tenant noch per SfB Federation gibt, dann kommt interessanterweise keine Fehlermeldung.

    Prüft Microsoft vielleicht nur in meinem Tenant, dass Federation zu der Domain generell erlaubt wäre aber macht sonst keine aktiven Tests?.

So schön der "Tester" ist, so wenig aus    sagekräftig sind die Ergebnisse. Ich habe mehrfach konkrete Probleme mit der Federation gehabt, die nicht sachlich zu erklären waren und dennoch hat der Diagnose-Assistent keine Hinweise geben können.

Fehlermeldungen

Wenn Teams eine Chat-Nachricht nicht weitersenden kann, dann bekommt der Absender eine Fehlermeldung. Leider ist die Meldung recht Allgemein nur mit einem "Es ist ein Problem beim Versenden Ihrer Nachricht aufgetreten" und dann gefolgt von einem Diagnosecode.

Ich habe noch keine Liste gefunden, in der die verschiedenen Diagnose-Codes und ihrer Bedeutung wiedergegeben sind.
Insofern kann ich hier nur aus eigenen Erfahrungen berichten und vermuten.

Fehlercode Beschreibung

488/6000

Hier hat mich ein MSXFAQ-Leser an einen Sonntag um 11:32 angechattet. Sie sehen die eingehende Nachricht aber oben auch, dass da ein kleines "(S)"-Symbol für Skype for Business ist. Der Absender ist auf jeden Fall nicht im TeamsOnly-Mode sondern Island oder ein anderer SfB*-Mode. Er muss ja auch mit SfB gesendet haben, denn Teams im Island-Mode unterbindet eine Kommunikation mit Teams zu anderen Tenants.

Dennoch konnte ich ca. 13h später nicht auf die Nachricht antworten. Der Absender war "orange", also abwesend. Ich kann nur vermuten, dass der Endpunkt nicht Chat-tauglich war und Skype for Business ja keinen "Offline Chat" kennt. Leider gibt es keinen Fehler/Trace auf meinem Teams Clients oder dem Teams-Backend und einen Zugriff auf den Edge-Server der Gegenstelle hatte ich nicht, um die SIP-Nachricht zu finden, die diese Meldung produziert.

403/1002"

Dies ist ein weiterer Fehler, den ich schon gesehen habe aber nicht lösen konnte. Teams löst den externen Kommunikationspartner auf "Skype for Business" auf. Das passiert immer, wenn eine fremde Adresse nicht in Teams vorhanden oder nicht im "TeamsOnly"-Mode ist. Allerdings habe ich auch hier die Ursache ohne Zugriff auf den entfernten SfB-Server nicht ermitteln können.

504/1008

Diesen Fehler hatte ich beim Versuch von Microsoft Teams (TeamsOnly) eine Nachricht an einen per Federation erreichbaren Teams Island-Benutzer zu senden. Eigentlich sollte die Nachricht dann beim Benutzer in SfB landen.

504/1010

Ein Chat-Versuch von meinem Net at Work Konto (TeamsOnly) zu einem Kunden (Teams Island mit Federation zu SfB On-Prem) konnte ich die Adresse auflösen und auch das "Skype"-Symbol aber ohne Status sehen . Ein Chat war nicht möglich. Eventuell hat der Fehler mit Policies auf der Gegenseite zu tun.

x/x

Liste wird fortgesetzt.

Wenn Sie noch Fehler, idealerweise mit der Beschreibung der Umgebung haben, dann kann ich die hier gerne mit ausführen.

Suche nach Extern

Jeder Chat mit einer externen Person startet mit einer Suche nach der Adresse- Das geht, indem ich oben einfach die Mailadresse eingebe und etwas warte. In der Regel sehe ich dann die Funktion "Extern durchsuchen" 

Diese Auswahl erscheint nicht, wenn eine oder beide von zwei Einstellungen durch ihren Administrator konfiguriert wurde.

  • Federation
    Es kann sein, dass die Domain entweder auf der Block-Liste steht oder ihre Firma hat Federation nur für bestimmte Domains erlaubt, zu der die Adresse nicht gehört.
  • External Access Policy
    Es kann aber auch sein, dass der Administrator ihnen die Funktion genommen hat, überhaupt extern zu kommunizieren.

Wenn Sie aber suchen können, dann startet Teams die Suche im Microsoft 365 Verbundnetzwerk nach einem passenden Empfänger. auch hier gibt es drei mögliche antworten.

  • Kein Treffer
    Es kann sein, dass sie sich vertippt haben oder die Gegenseite weder Teams noch Skype for Business nutzt oder die Person mangels Federation der Gegenseite nicht erreichbar sein will. dann finden Sie den Eintrag nicht:
  • Treffer in Teams
    Im Idealfall nutzt ihr Gegenüber ebenfalls Teams in der Betriebsart "TeamsOnly" und hat auch keine Sperre bei der Federation oder "External Access Policy". dann finden Sie den Benutzer problemlos.
  • Treffer in Skype
    Wenn die Gegenstelle allerdings nicht in Teams gefunden wird oder nicht den TeamsOnly-Mode nutzt, dann sucht Microsoft nach einem passenden Skype for Business Benutzer. Das Suchergebnis zeigt dies noch nicht an aber wenn Sie den Chat starten, dann wird beim Benutzer ein kleines "Skype"-Symbol eingeblendet.

    Das ist dann natürlich auch das Zeichen, warum mit diesem Partner nicht alle Chat-Funktionen verfügbar sind.

Da Teams ja eigentlich "HTML, CSS und JavaScript auf Chromium-Basis" ist, können Sie mit dem Chromium-Debugger auch Teams auf die Finger schauen, was es im Hintergrund bei der Suche macht. Wir sehen eine einfache HTTP-GET-Anfrage auf https://teams.microsoft.com/api/mt/emea/beta/users/<mailadresse>/externalsearchv3. Ich habe den Request mitgeschnitten, weil ich keine Antwort bekommen habe und mir weitere Details oder einen Hinweis auf den Fehler erhofft hatte.

Dem war leider nicht so. Hier sind keine Fehlerdetails sondern nur eine leere Antwort zu sehen. Wenn die Gegenseite gültig ist, dann kommt eine recht umfangreiche JSON-Struktur zurück, von der Teams nur eine Teilmenge anzeigt.

Ich sehe hier durchaus weitere Informationen und sogar den coExistenceMode. Interessant ist auch, dass dieser Request mit einem Bearer-Token authentifiziert wird und nicht durch ein Cookie. Hier nur ein Auszug:

{
  "aud": "https://api.spaces.skype.com",
  "iss": "https://sts.windows.net/de21c301-a4ae-4292-aa09-6db710a590a6/",
  "appid": "1fec8e78-bce4-4aaf-ab1b-5451cc387264",
  "deviceid": "7e2f367a-7087-43c9-867d-9ea1b71b7709",
  "family_name": "Carius",
  "given_name": "Frank",
  "ipaddr": "94.31.82.213",
  "name": "Carius, Frank (NAW)",
  "scp": "user_impersonation",
  "unique_name": "xfrank.carius@netatwork.de",
  "upn": "xfrank.carius@netatwork.de",
  "ver": "1.0",
}

Es ist ein klassisches "user_impersonation"-Token für die AppID "1fec8e78-bce4-4aaf-ab1b-5451cc387264" und sie müssen im AzureAD nicht lange suchen, um die Verbindung zu Teams herzustellen.

Natürlich habe ich auch nach der URL gesucht und der erste Treffer zeigt ein Beispiel, wie Sie per PowerShell so Details zu Gegenstellen einsammeln können. Leider sehen Sie aber auch hier nicht, wenn die Federation nicht geht

Weitere Links