Teams Rückwärtssuche (RNL)

Teams wendet verschiedene Wege an, um bei einem eingehenden Anruf statt der Nummer oder eines UPNs vielleicht einen sprechenden Namen anzuzeigen. Diese Funktion wird "Rückwärtssuche" oder "Reverse Number Lookup" (RNL) genannt. Schon Skype for Business (Reverse Name Lookup (RNL) hat diese Funktion nach einiger Zeit bekommen und auf der Ignite 2019 angekündigt und Ende 2019 verfügbar gemacht.

Hier geht es um die Auflösung einer Rufnummer zum Namen für Teams. Wird der Anruf zu Exchange VoiceMail/Cloud Voice Mail (CVM) weiter gegeben, kommt ein anderer Code zum Einsatz.

Update MC487014

Das Update MC487014 wurde im Dezember 2022 veröffentlicht und weist auf eine Änderung bei der Rufnummernauflösung hin, welche erst im Feb/Mrz 2023 kommen aber dann auf Juli-Aug 2023 verschoben wurde.

Betroffen sind Teams Phone System-Teilnehmer, bei denen dir direkte Durchwahl noch mit ";ext=xx" erweitert wurde. also z.B.

tel:+495251304613;ext=613

Teams "matched" diesen Teilnehmer nur, wenn die Rufnummer des SBC genau so auch normalisiert ankommt. In den meisten Firmen ist es aber einfach die E.164-Nummer ohne das "ext=xxx" als Anhang.

Dann sollten Sie das ;Ext=xxx einfach entfernen oder sie stellen im SBC sicher, dass die SIP-URI auch ein ";ext=xxx" angehängt bekommt

SIP-INVITE

Über diese Funktion bekommen Sie bei einem eingehenden Anruf nun zu übermittelten Rufnummer auch einen Namen angezeigt. Das funktioniert natürlich nur, wenn tatsächlich eine Rufnummer übermittelt wird. Der Anrufer darf seine Rufnummer also nicht unterdrücken und der Carrier muss die Nummer in einem E.164-Format an Teams melden. Wenn Sie keine Rufnummern von Microsoft nutzen, sondern mit Direct Routing einen eigenen SIP-Trunk verwenden, dann sollten Sie auf ihrem Session Border Controller (SBC) dies entsprechend einstellen. Ein Invite kann dann z.B. wie folgt aussehen (Rufnummern verkürzt):

---- Outgoing SIP Message to 52.114.75.24:5061 from SIPInterface #3 (Teams) TLS
INVITE sip:+495251304613@sbc.msxfaq.de;user=phone SIP/2.0
Via: SIP/2.0/TLS sbc.msxfaq.de:5061;alias;branch=z9hG4bKac1137091570
Max-Forwards: 69
From: <sip:+495257xxxxxxx@netatwork.de>;tag=1c1087409430
To: <sip:+495251304613@sbc.msxfaq.de;user=phone>
Call-ID: 1772644000762020101033@sbc.msxfaq.de
CSeq: 1 INVITE
Contact: <sip:+495257xxxxxxx@sbc.msxfaq.de:5061;transport=tls>
Supported: em,100rel,timer,replaces,path,resource-priority,sdp-anat
Allow: REGISTER,OPTIONS,INVITE,ACK,CANCEL,BYE,NOTIFY,PRACK,REFER,INFO,SUBSCRIBE,UPDATE
User-Agent: Mediant VE SBC/v.7.20A.256.399
Content-Type: application/sdp
Content-Length: 665
 
v=0
o=AudiocodesGW 123844273 2037922584 IN IP4 217.91.247.140
s=Phone-Call
c=IN IP4 217.91.247.140
t=0 0
m=audio 7410 RTP/SAVP 8 101 13
a=ptime:20
a=sendrecv
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=rtpmap:13 CN/8000
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:GsD97DaZTitdzsA6+psp1ewED+23OlwfuFATGuUq|2^31
a=crypto:2 AES_CM_128_HMAC_SHA1_32 inline:xeMgt8rp55adrqDvmtOpbLZJWlfQ0UAzcsBdCOGm|2^31
a=crypto:3 AES_256_CM_HMAC_SHA1_80 inline:lObFpHe7r8EDLaIQHHlpKKb0jaJZ41tY457hm5NZLR6Gtc7W3mauu4t/FsIavw==|2^31

Interessant ist hier das "FROM" Feld, denn ohne Rufnummer kann überhaupt keine Suche erfolgen.

Tipp:
Mit dem passenden SBC können Sie schon hier eine Suche nach der Rufnummer gegen einen Verzeichnisdienst starten und einen fehlenden "From"-Namen ersetzen. Siehe dazu auch SBC Contact Lookup

Voraussetzungen

Teams nutzt ansonsten die Rufnummer aus dem Invite und prüft verschiedene Dinge ab.

Voraussetzung Geprüft

Rufnummer im INVITE

Wie schon geschrieben muss im INVITE zu Teams eine Rufnummer oder gleiche Rufnummer + Name mitgeliefert werden.

Exchange Online Mailbox

Da das Teams Backend im weiteren Prozess auch die Outlook Kontakte durchsucht, muss das Postfach in Exchange Online sein. Technisch könnte natürlich auch ein On-Premises Postfach gehen, aber ich vermute, dass die Suche dann zulange dauern würde. Wobei ich noch keine Information habe, ob Teams nicht einen Cache im BVD - Business Voice Directory pflegt, damit die Auflösung schneller ist

Anrufer als Exchange Objekt

Wenn Teams das AzureAD nach Benutzern fragt, dann muss das Objekt "Exchange aktiviert" sein. Gültige Objekte sind:

  • Mailbox
  • MailUser
  • MailContact
  • Mail-Enabled Security Groups
  • Mail-Enabled Distribution Groups

Sie können die Benutzer einfach mit einem "Get-Recipient" gegen die Exchange Online PowerShell abfragen. All diese Objekte werden im AzureAD abgefragt. On-Premises Objekte werden per ADSync im Exchange Hybrid Mode verwaltet. Dabei werden folgende Felder gegen die normalisierte E.164-Nummer geprüft.:

Phone
HomePhone
MobilePhone

Wenn alles korrekt konfiguriert ist, dann sehen Sie im Popup neben der Nummer auch den Namen.

Aktuell (Jun 2020) erscheint der Name bei einem verpassten Anruf aber noch nicht in der "Missed Call"-Liste oder Aktivitätsfeed. Bei einer Kopplung mit einer eigenen TK-Anlage können Sie neben der Rufnummer meist auch den Anschlussnamen des TK-Teilnehmers im SIP-INVITE ssenden.

Reihenfolge

Damit stellt sich natürlich die Frage, woher Teams den Namen bezieht. Wenn Sie Teams z.B. per Browser nutzen, kann dieser ja schlecht per MAPI das lokale Outlook fragen. Die Auflösung macht das Teams Backend nach folgender Reihenfolge:

In verschiedenen Beschreibungen ist die Reihenfolge anders angegeben aber am Ende steht dann immer "der letzte Match überstimmt" Ich habe das Flussbild daher umgedreht gezeichnet, was vom Ergebnis aber gleich ist. Allerdings ist nicht öffentlich, ob Teams parallel eine Suche anstößt oder die Auflösung sequentiell durchführt. Ich würde auf eine parallele Auflösung tippen um möglichst wenig Zeit zu verlieren.

Um die Reihenfolge zu ermitteln, habe ich folgende Kontakt-Objekte angelegt, die alle meine Mobilfunknummer hatten und dann geschaut, welche Anzeige mit Teams geliefert hat:

  • Anonym wenn keine Rufnummer vorhanden
    Die eingehende Rufnummer wird nach E.164 normiert, z.B. +<nummer> ohne Klammern oder andere Trennzeichen. Wenn der Anrufer keine Rufnummer mitsendet, dann kann Teams auch keinen Namen finden und nicht mal die Rufnummer anzeigen
  • Teams Kontakte
    Sie können in Teams eigene Kontakte pflegen. Diese sind nicht in Outlook abgelegt, sondern sind eher der Buddy-Liste in Skype for Business vergleichbar. Sie liegen "irgendwo" im Teams Backend, vermutlich einer Azure Datenbank wie auch der Präsenzstatus. Wenn hier ein "Match" erfolgt, wird dessen Name angezeigt.

    Weitere Informationen können hier gar nicht eingegeben werden.
  • Outlook Kontakte
    Dann scheint Teams auch noch meinen Kontaktordner nach Rufnummern abzusuchen. Ich habe daher auch einen eigentlich überflüssigen Kontakt mit meiner Mobilfunknummer in meinen eigenen Outlook Kontakten angelegt und den Name und "Speicher unter" etwas angepasst:
  • AzureAD/Exchange Online
    Hier finden sich dann zumindest alle Mitarbeiter ihrer Firme mit hoffentlich gut gepflegten Telefonnummern in den entsprechenden Feldern. Dort gibt es auch meine Person als "Exchange Mailbox", und ist im Exchange Adressbuch direkt zu finden:

Weitere Links