CVM mit Ex2016/SfB2015

Mit Exchange Online und Exchange 2019 gibt es einen Anrufbeantworter nur aus der Cloud. Aber Cloud Voice Mail funktioniert auch mit Skype for Business 2015 und sogar mit Exchange 2016 On-Premises. Bis die Seiten bei Microsoft aktualisiert sind, beschreibe ich hier die Funktionsweise:

Support Statement (Feb 2020)

Der Wegfall von Exchange UM in der Cloud wurde schon 2017 angekündigt, 2019 umgesetzt und seit Februar 2020 gibt es in der Cloud offiziell keine ExchangeUM-Server mehr. Stattdessen übernimmt Cloud Voice Mail, früher Azure Voice Mail, diese Funktion für Postfächer und TK-Dienste in der Cloud. Da es aber keine Exchange 2019 UM-Rolle mehr gibt, übernimmt CVM die Funktion auch gleich für die On-Premises-Ausgaben Skype for Business 2019 und Exchange 2019, wenn Sie keine 3rd Party Lösung einsetzen. Auf der Seite Cloud Voice Mail (CVM) und Cloud Voice Mail (CVM) Checkliste habe ich es schon beschrieben und im Januar 2020 hat Microsoft Auch noch folgende Tabelle veröffentlicht:


Quelle: https://docs.microsoft.com/en-us/skypeforbusiness/hybrid/plan-cloud-voicemail

Wenn diese Tabelle korrekt wäre, dann sollte es nicht möglich sein mit Exchange 2016/2013 On-Premises einen Dienst aus der Cloud zu nutzen. Im Abschnitt "Overview" steht dazu auch klar:

Cloud Voicemail takes the place of Exchange Unified Messaging (UM) in providing voice messaging functionality for Skype for Business 2019 voice users who have mailboxes on Exchange Server 2019 or Exchange Online.
Quelle: https://docs.microsoft.com/en-us/skypeforbusiness/hybrid/plan-cloud-voicemail

Die Seite "Plan Cloud Voicemail service for On-Premises users" auf https://docs.microsoft.com/en-us/skypeforbusiness/hybrid/configure-cloud-voicemail bezieht sich nur auf Exchange 2019. Zur Begleitung der Abschaltung von ExchangeUM in der Cloud hat Microsoft mehrere "Technical Deep Dive" veranstaltet. Die Aufzeichnungen finden Sie auf https://aka.ms/DeepDiveCloudVoicemail) Hier gibt es auch eine interessante Folie vom Nov 2019, die zumindest den Support bei SfB 2015 und Lync 2013 für CVM ankündigt.


Quelle Technical Deep Dive on Microsoft Cloud Voicemail Min 21:44  Nov 2019 auf https://aka.ms/DeepDiveCloudVoicemail

Allerdings habe ich hier keine Aussagen zum Postfach gefunden. Sollte CVM wirklich nur funktionieren, wenn auch das Postfach in Exchange Online oder auf Exchange 2019 liegt?

Call Routing

Rein technisch sollte es für Microsoft überhaupt kein Problem sein, für Benutzer die Cloud Voice Mail-Funktion bereitzustellen, selbst wenn sie weiterhin SfB2015 On-Premises und Exchange 2016 On-Premises nutzen. Folgender Ablauf könnte ich mir vorstellen.

Das Bild ist nicht zwingend korrekt, sondern aus Logs und Tests entstanden.

  1. Eingehender Anruf und Entscheidung VM ja/nein
    Wenn der gerufene Teilnehmer verfügbar ist und abnimmt, dann ist der Lauf hier schon zu Ende. Ansonsten muss Skype for Business irgendwann entscheiden, den Ruf weiter zu leiten, z.B. Teamanrufer etc. Wenn all das nicht geht, dann schaut der Skype for Business Server, ob der Benutzer eine Voicemail hat.
  2. VoiceMail Entscheidung
    Nach meiner Beobachtung prüft SfB zuerst, ob die Option "HostedVoiceMail" gesetzt ist. Wenn diese "$true" ist, geht die Mail zum Cloud-Anbieter, selbst wenn der Benutzer auch in Exchange On-Premises UM-aktiviert ist. Wenn aber keine HostedVoiceMail vorhanden ist, dann prüft SfB die ExchangeUM-Einstellungen. Entsprechend wird der Anruf dann zur Exchange UM-Rolle geleitet oder ist "nicht erreichbar".
  3. On-Premises Voice Mail
    Sollte der Benutzer den lokalen UM-Service nutzen, dann nimmt dieser den Ruf an und zeichnet ihn auf. ExchangeUM kann die Mail dann per SMTP ins Postfach ablegen. Exchange UM könnte aber auch per EWS auf das Postfach zugreifen, z.B. für "Outlook Voice Access"
  4. Cloud Voice Mail
    Seit Feb2020 gibt es ja kein Exchange Online UM mehr, sondern nur noch CVM. Die Cloud Voice Mail kann den Ruf annehmen und aufzeichnen. Mit der passenden CloudVoicemailPolicy könnte man auch Transkription steuern.
  5. Zustellung per SMTP
    CVM liefert die Sprachmail per SMTP an die Mailadresse des angerufenen Anschlusses an Exchange Online an. Über die entsprechende Konfiguration der Connectoren müssen Sie natürlich sicherstellen, dass die Mails auch das interne Postfach möglichst sicher (TLS) und ohne Spamfilterung erreichen.

Systemkonfiguration

Damit das alles funktioniert, sind natürlich einige Voraussetzungen erforderlich. Die Konfiguration dazu haben Microsoft und  ich auf anderen Seiten schon beschrieben:

  • Verzeichnisabgleich mit ADSync und Hybrid (ADSync und ADSync mit Exchange)
    Im Office 365 Tenant müssen natürlich die entsprechende Informationen über die Anwender vorhanden sind. ADSync muss also mit Exchange Hybrid installiert sein.
  • Exchange Classic Hybrid und OAUTH (Exchange Hybrid Starter)
    Auch Exchange sollten sie "Hybrid" betreiben, weil so sichergestellt ist, dass nicht nur das Mailrouting über Connectoren zwischen Tenant und On-Premises konfiguriert ist sondern auch der Zugriff von CVM per EWS auf die Mailbox-Einstellungen möglich ist.
  • SfB-Hybrid / HostedVoicMailRoute (Skype for Business Hybrid Mode)
    Die eigene Route zu exum.ap.outlook.com ist auf jeden Fall erforderlich. Ich bin aber nicht sicher, ob man auch ohne SfB Hybrid Mode und Shared SIP-Domain die Funktion nutzen kann. Bislang stellte sich die Frage nie.
  • HostedVoicemailPolicy
    Diese Einstellung gibt es wohl On-Premises als auch in SfB Online und hilft verknüpft den Inhalt von HostedVoiceMailPolicy beim Benutzer mit einem Routing zu exum.ap.outlook.com bzw. einem UM-Service in der Cloud

Ich gehe hier absichtlich nicht abschließend auf die Lizenzierung ein. Ich bin ziemlich sicher, das der Anwender einen Exchange Plan für CVM braucht, auch wenn das Postfach On-Premises liegt. Als Firma ist das aber meist kostenneutral, weil Sie ja die lokale Exchange CAL damit nicht kaufen müssen. Eine PhoneSystem-Lizenz sollte der User nicht brauchen aber ein User im Tenant muss eine PhoneSystem-Lizenz zugewiesen bekommen, damit CVM für den Tenant überhaupt aktiviert wird.

Userkonfiguration

Interessant wird es jetzt bei den Benutzern und deren Einstellung. Es kann hier mehrere Szenarien geben, bei denen Benutzer mit Cloud Voice Mail abreiten können. Ich verzichte der Übersichtlichkeit auf die Fälle, die von Microsoft offiziell supportet sind, d.h. Nutzer mit SfB2019, Exchange 2019, Exchange Online. Interessanter finde ich die Benutzer, die noch Exchange 2016 und/oder SfB2015 On-Premises nutzen. Ich beschränke mich auf die Fälle, die noch nicht von Microsoft beschrieben sind, d.h. alle Konstellationen mit Exchange in der Cloud oder Exchange 2019 als auch SfB Online/Teams sind nicht interessant. Alle Testbenutzer sind auf Skype for Business 2015 On-Premises und das Exchange Postfach ist bis auf einen Fall auch On-Premises

Einstellungen

User1
Inkonsistent da ExchangeUM und HostedVoiceMail aktiv

User2
OnPrem mit CVM aber ohne Phone System

User3
OnPrem mit CVM und PhoneSystem

Mailbox Server

Exchange 2016

Exchange 2016

365

Skype for Business Plattform

SfB 2015

SfB 2015

SfB 2015

       

ExOnPrem: Get-Recipient: | fl
RecipientType
UMEnabled
UMMailboxPolicy


UserMailbox
$true
"Dialplan1"


UserMailbox
$false
$null


MailUser
$false
$null

SfB:Get-CSUser | fl
HostedVoiceMail
HostedVoiceMailPolicy
HostingProvider


$true
BusinessVoiceMail
SRV:


$true
BusinessVoiceMail
SRV:


$true
BusinessVoiceMail
SRV:

SfBO: get-csonlineuser | fl
HostedVoiceMail
HostedVoicemailPolicy
OnlineVoicemailPolicy
VoicePolicy


$False
$null
$null
$null


$False
$null
$null
$null


$true
BusinessVoice
Default
HybridVoice

Lizenz

  • Exchange Plan2
  • Keine CloudVoiceMAil
  • Exchange Plan2
  • KeinCloudVoiceMaile
  • Exchange Plan2
  • CloudVoiceMail

Information

Hosted Voice Mail überstimmt lokales Exchange UM

Ok, aber keine Grant-CSOnlineVoicemailPolicy

Alles möglich

Interessant ist in dem Fall, dass selbst ein Benutzer, der lokal eine UMMailbox zugewiesen bekommen hat, diese nicht nutzt. Das Flag "HostedVoiceMail:$true" in Skype for Business 2015 veranlasst den Frontend Server gar nicht mehr nach einer ExchangeUM-Mailbox zu suchen.

Exchange UMMailbox migrieren

Wenn Sie Rahmen einer Exchange Hybrid-Installation eine Mailbox von On-Premises in die Cloud migrieren sollen, dann darf der Benutzer keine ExchangeUM-Funktion haben. Die Migration in die Cloud scheitert ansonsten mit einer entsprechenden Fehlermeldung. Hier hilft das Wissen um die CVM-Funktion, weil der Anwender vor der Exchange Postfachmigration entsprechend konfiguriert werden kann:

# Erst wird Cloud Voice Mail für den Benutzer aktiviert, was ExchangeUM umgeht
Set-CSUser `
   -identity user1@msxfaq.de `
   -hostedvoicemail:$true

# Dann wird die ExchangeUM-Funktion entfernt
Disable-UMMailbox `
   -identity user1@msxfaq.de

# Nun ist das Postfach frei zur Migration in die Cloud
New-MoveRequest `
   -Identity user1@msxfaq.de `
   -Remote `
   -RemoteHostName hybrid.msxfaq.de `
   -TargetDeliveryDomain msxfaq.mail.onmicrosoft.com `
   -RemoteCredential $cred`
   -BadItemLimit 100

Danach gibt es dann ja nichts mehr zum "zurückstellen", denn wenn das Postfach in der Cloud ist, dann ist die Nutzung von Cloud Voice Mail eh der Regelbetrieb.

Voicemail Transkription

Cloud Voice Mail hat im Gegensatz zu Exchange UM einige Funktionen weniger, z.B. Outlook Voice Access etc. Aber die "Speech2Text"-Umsetzung finde ich persönlich eine sehr interessante Funktion. Auch wenn der erkannte Text nicht immer perfekt ist, so kann ich meist den Inhalt der Sprachnachricht schon in der Mail lesen und mit das Abhören sparen. Wichtiger ist noch, dass der Text einer Mail auch per Suche in Outlook erschlossen werden kann.

Die Funktion der Sprachübersetzung in Text wird über eine CsVoicemailPolicy bestimmt. Folgende Einstellungen sind in meinem Tenant der Default.

PS C:> Get-CsOnlineVoicemailPolicy

Identity                            : Global
EnableTranscription                 : False
ShareData                           : Defer
EnableTranscriptionProfanityMasking : False
EnableEditingCallAnswerRulesSetting : True
MaximumRecordingLength              : 00:05:00
EnableTranscriptionTranslation      : True

Identity                            : Tag:Default
EnableTranscription                 : True
ShareData                           : Defer
EnableTranscriptionProfanityMasking : False
EnableEditingCallAnswerRulesSetting : True
MaximumRecordingLength              : 00:05:00
EnableTranscriptionTranslation      : True

Identity                            : Tag:TranscriptionDisabled
EnableTranscription                 : False
ShareData                           : Defer
EnableTranscriptionProfanityMasking : False
EnableEditingCallAnswerRulesSetting : True
MaximumRecordingLength              : 00:05:00
EnableTranscriptionTranslation      : True

Identity                            : Tag:TranscriptionProfanityMaskingEnabled
EnableTranscription                 : True
ShareData                           : Defer
EnableTranscriptionProfanityMasking : True
EnableEditingCallAnswerRulesSetting : True
MaximumRecordingLength              : 00:05:00
EnableTranscriptionTranslation      : True

Da per Default alle Benutzer keine abweichende Richtlinie haben, nutzen Sie die "Global"-Policy, bei der Transcription ausgeschaltet ist.

Voicemail transcription is enabled by default and transcription profanity masking is disabled by default for all organizations and users; however, you can control them by using the Set-CsOnlineVoicemailPolicy and Grant-CsOnlineVoicemailPolicy cmdlets.
Quelle: https://docs.microsoft.com/en-us/microsoftteams/set-up-phone-system-voicemail

Angeblich kann ich keine neuen Policies anlegen. Allerdings ist das nicht in all meinen Tenants so. Den genauen Grund habe ich noch nicht herausgefunden.

You can't create a new policy instance for transcription and transcription profanity masking using the New-CsOnlineVoiceMailPolicy cmdlet, and you can't remove an existing policy instance using the Remove-CsOnlineVoiceMailPolicy cmdlet.
Quelle: https://docs.microsoft.com/en-us/microsoftteams/set-up-phone-system-voicemail

Für jeden Benutzer können Sie natürlich eine abweichende Richtlinie manuell zuweisen. Aber auch dazu müssen ein paar Voraussetzungen stimmen, damit Sie nicht mit der folgenden Meldungen konfrontiert werden:

Grant-CsOnlineVoicemailPolicy `
   -Identity user1@msxfaq.de `
   -PolicyName Tag:TranscriptionDisabled
User "user1@msxfaq.de" is not enabled for Online Voicemail service.

Auch wen das Postfach weiterhin "On-Premises" ist und auch Skype for Business weiterhin On-Premises genutzt wird, muss die Cloud dennoch wissen, dass der Anwender auch "Cloud Voice Mail" nutzen darf.

Nach meinen Recherchen ist dazu (Feb 2020) eine "Phone-System"-Lizenz erforderlich, damit dieses Commandlet funktioniert. Ohne Lizenz werden Einstellungen sogar wieder zurück gestellt.

Hinweis:
Das Zuweisen einer CSOnlineVoicemailPolicy wird nicht sofort aktiv.

SfbO: HostedVoiceMailPolicy

Benutzer, die früher schon ihr Postfach in Exchange Online hatten, haben die VoiceMail Funktion natürlich auch über die UM-Rolle in Exchange Online erhalten. Als Skype for Business Administrator mussten Sie dazu On-Premises entsprechende Polices anlegen und den Benutzern zuweisen. Das ist so On-Premises nicht mehr erforderlich, das Sie über die "HostedVoiceMail"-Policy beim Benutzer im lokalen Active Directory schon den Cloud-Server hinterlegen. Technisch kennt ihr Skype for Business 2015 Server aber keinen Unterschied und leitet den Anruf auch weiterhin über den Skype for Business Edge-Server entlang der Route zur Cloud.

Interessant ist da noch ein Blick in die HostedVoiceMailPolicy der Cloud. Ich habe bei mir hier folgende zwei Einträge gefunden, die ich aber nicht angepasst habe

# Skype for Business Online PowerShell
PS C:\> Get-CsHostedVoicemailPolicy

Identity             : Global
Description          :
Destination          : exap.um.outlook.com
Organization         : msxfaq.onmicrosoft.com
BusinessVoiceEnabled : False
NgcEnabled           : False

Identity             : Tag:BusinessVoice
Description          : VoiceMail Policy for Business Voice enabled users
Destination          : sipedgeAM30R.infra.lync.com
Organization         : BVProd
BusinessVoiceEnabled : True
NgcEnabled           : True

Hier findet sich auch nach der Abschaltung von Exchange UM weiterhin eine globale Policy, die Anrufe zu "exap.um.outlook.com" leitet. Weiterhin gibt es eine zweite Policy mit der Identity "Tag:BusinessVoiceMail", welche anscheinend auf einen Edge-Server von Skype for Business verweist.

Der Namen "BusinessVoice" findet sich aber auch in der On-Premises HostedVoiceMail-Konfiguration beim Benutzer. Wenn ich es recht weiß, dann wird der Name im SIP-INVITE auch mit übergeben. In Office 365 dürfte daher der eingehende INVITE der On-Premises-Umgebung so zum richtigen Server geleitet werden, der dann die VoiceMail aufzeichnen kann. Leider ist zum internen Prozess hier auch nicht mehr bekannt.

Mailrouting zum Postfach

Wenn Cloud Voice Mail die Sprachnachricht aufgezeichnet hat, dann muss diese natürlich noch ins Postfach übertragen werden. Dazu bedient sich die Cloud Voice Mail einfach dem Exchange Transport. Das dokumentiert Microsoft auch entsprechend:

Voicemail messages are delivered to users' Exchange mailbox via SMTP routed through Exchange Online Protection. To enable successful delivery of these messages, please be sure that Exchange Connectors are configured correctly between your Exchange servers and Exchange Online Protection; Use Connectors to Configure Mail Flow.
Quelle: https://docs.microsoft.com/en-us/microsoftteams/set-up-phone-system-voicemail

To enable Voicemail features such as customizing greetings, and visual voicemail in Skype for Business clients, connectivity from Office 365 to the Exchange server mailbox via Exchange Web Services is required. To enable this connectivity you must configure the new Exchange Oauth authentication protocol described in Configure OAuth authentication between Exchange and Exchange Online organizations, or run the Exchange Hybrid Wizard from Exchange 2013 CU5 or greater.
Quelle: https://docs.microsoft.com/en-us/microsoftteams/set-up-phone-system-voicemail

Damit stellt sich natürlich die Frage, ob CVM die Mails nun per SMTP direkt an den MX-Record für ihre Domäne überstellt oder die Mails einfach in ihrem Exchange Online Tenant eingeliefert werden, so dass die Mails über einen konfigurierten Hybrid-Connector auch zum On-Premises-Postfach übertragen werden. Ich habe daher einem Exchange On-Premises Benutzer eine Sprachnachricht überlassen und den Header der VoiceMail betrachtet.

Received: from AM0PR04MB4273.eurprd04.prod.outlook.com (2603:10a6:20b:100::32)
 by AM7PR04MB6997.eurprd04.prod.outlook.com with HTTPS via
 AM7PR02CA0022.EURPRD02.PROD.OUTLOOK.COM; Mon, 2 Mar 2020 09:07:40 +0000
Received: from AM5PR04CA0028.eurprd04.prod.outlook.com (2603:10a6:206:1::41)
 by AM0PR04MB4273.eurprd04.prod.outlook.com (2603:10a6:208:67::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2772.18; Mon, 2 Mar
 2020 09:07:39 +0000
Received: from VE1EUR03FT056.eop-EUR03.prod.protection.outlook.com
 (2a01:111:f400:7e09::202) by AM5PR04CA0028.outlook.office365.com
 (2603:10a6:206:1::41) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2772.15 via Frontend
 Transport; Mon, 2 Mar 2020 09:07:39 +0000
Received-SPF: Fail (protection.outlook.com: domain of Netatwork.de does not
 designate 52.114.75.28 as permitted sender) receiver=protection.outlook.com;
 client-ip=52.114.75.28; helo=EUR03B.map.protection.outlook.com;
Received: from EUR03B.map.protection.outlook.com (52.114.75.28) by
 VE1EUR03FT056.mail.protection.outlook.com (10.152.19.28) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.2772.15 via Frontend Transport; Mon, 2 Mar 2020 09:07:39 +0000
Message-ID:<xxxx-xxxx-xxxx-xxxx-xxxx@VE1EUR03FT056.eop-EUR03.prod.protection.outlook.com>

Dies ist eine Voicemail an mein Office 365 Postfach bei Net at Work. Se sehen ganz unten die Zeile mit der MessageID und dann von unten nach oben die Zwischenstationen bis zur Zustellung in mein Postfach.

Hinweis: Cloud Voice Mail und Exchange Online routen die Mail nicht über das NoSpamProxy-Gateway, welches über den MX-Record veröffentlicht wurde. CVM bleibt also in der Exchange Welt.

Es gibt noch ein paar weitere Header, die Rückschlüssel auf die VoiceMail zulassen. Dies war aber einer Teams Federation Anruf und kein Telefonanruf.

X-AttachmentOrder: audio.mp3
X-VoiceMessageDuration: 9
Content-Class: Voice-CA
X-CallingTelephoneNumber: xxxxxxxxxxx
X-VoiceMessageSenderName: xxxxxxxx
X-AzureVoicemail-CallId: xxxx-xxx-xxxx-xxxx-xxxx
X-AzureVoicemail-FirehoseActivityId: xxxx
X-IsPstnCall: False
X-ShareDataEnabled: True
To: Frank.Carius@Netatwork.de
From: "xxxxx" <xxxxx@xxxxxxx>
Reply-To: "xxxxx" <xxxxx@xxxxxxx>
Subject: =?utf-8?b?Vm9pY2VtYWlsICg4IFNla3VuZGVuKQ==?=
X-VoiceMessageLanguage: de
X-AzureVoicemail-TranscriptionRequestId: xxxx-xxxx-xxxx-xxxx-xxxx
X-VoiceMessageTranscription: =?utf-8?b?xxxxxxxxxxxxx=
X-VoiceMessageTranscriptionLanguage: de-DE
X-VoiceMessageConfidenceLevel: high
X-VoiceMessageInitialSilence: False
Priority: normal
MIME-Version: 1.0
Return-Path:
 noreply_skype_voicemail_xxxx-xxxx-xxxx-xxxx-xxxx@Netatwork.de
Date: Mon, 2 Mar 2020 09:07:39 +0000
X-MS-Exchange-Organization-MessageDirectionality: Originating
X-MS-Exchange-Organization-AuthAs: Internal
X-MS-Exchange-Organization-AuthSource: TreatMessagesAsInternal-VE1EUR03FT056.eop-EUR03.prod.protection.outlook.com
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AM0PR04MB4273:Skype
X-MS-Exchange-Organization-SCL: -1

Benutzereinstellungen

Wenn der Anwender nur noch "Cloud Voice Mail" nutzt, dann muss er auch in der Cloud die Einstellungen verwalten. die eventuell lokal vorhandenen Exchange Server betreiben zwar noch seine Mailbox und theoretisch könnte ein lokaler UM-Server auch noch eine Voicemail bereit stellen. Aber die Konfiguration des Benutzers mit "HostedVoiceMail = $true" in der lokalen Skype for Business-Konfiguration verhindert die Nutzung dieser Dienste.

Der Anwender kann die Einstellungen in Cloud Voice Mail z.B. über einen Webbrowser starten

Weitere Links