Im vorherigen Blog-Beitrag wurde die Integration der Anruf-Funktionen in Teams beschrieben. An dieser Stelle geht es nun um die technischen Grundlagen.
Direct Routing bezeichnet die Nutzung eines eigenen (oder gemieteten) SIP-Trunks, oder sogar ISDN-Anschlusses mit Microsoft Teams. Dafür gibt es einige Voraussetzungen.
Kurzfassung: Installieren Sie den Session Border Controller Ihrer Wahl, am Ort Ihrer Wahl, und binden Sie den Trunk Ihrer Wahl an. Dieser Vorgang ist von Produkt zu Produkt zu unterschiedlich, und liegt tatsächlich an Ihren individuellen Gegebenheiten.
Anschließend veröffentlichen Sie Ihren Session Border Controller unter einer Domäne, die in Office365 konfiguriert ist; in unserem Fall wäre dies die skysystems.it, der Session Border Controller liegt unter controller.skysystems.it. Wichtig ist, dass der Hostname direkt unter der Domäne platziert ist; controller.telefonie.skysystems.it wäre beispielsweise nicht zulässig, da telefonie.skysystems.it keine in Office365 konfigurierte Domäne ist. Auch die Nutzung von *.onmicrosoft.com ist nicht möglich.
Damit nicht jeder, der nun den Hostnamen unseres SBC gelesen hat, diesen nutzen darf, haben wir unsere Firewall entsprechend konfiguiert, dass der SBC nur von Microsoft erreichbar ist. Hierzu werden folgende Freigaben erstellt:
Quell-Hosts:
sip.pstnhub.microsoft.com
sip2.pstnhub.microsoft.com
sip3.pstnhub.microsoft.com
Alternativ, Quell-IPs:
52.114.148.0
52.114.132.46
52.114.75.24
52.114.76.76
52.114.7.24
52.114.14.70
Ziel-Ports:
TCP 5061 (SIP/TLS)
UDP 49152-53247 (UDP/SRTP)
Selbstverständlich muss der SBC auch ausgehend die Möglichkeit haben, den Microsoft SBC zu erreichen; Berücksichtigen Sie dies innerhalb Ihrer Firewall-Konfiguration.
Wichtig: Wir verwenden aktuell keinen Media Bypass; dieser benötigt ggf. eine andere Firewall-Konfiguration.
Stellen Sie zunächst eine Verbindung mit dem Skype Online Connector her. (Skype for Business Online ist quasi der „Vorläufer“ und damit die technische Grundlage der Teams-Telefonie, daher gibt es fachliche und begriffliche Überschneidungen.)
Öffnen Sie hierzu eine Powershell-Sitzung und geben Sie die folgenden Befehle ein:
Import-Module SkypeOnlineConnector $credentials= Get-Credential $session = New-CsOnlineSession -Credential $credentials Import-PSSession $session
Sollte die nachfolgende Meldung erscheinen, so ist das entsprechende Modul nicht installiert:
In diesem Falle gilt, installieren Sie das entsprechende Modul, siehe Voraussetzungen.
Nachdem die Sitzung hergestellt wurde, konfigurieren Sie den SBC:
New-CsOnlinePSTNGateway -Fqdn controller.skysystems.it -SipSignalingPort 5061 -MaxConcurrentSessions 10 -Enabled $true
Ersetzen Sie hierbei den Hostname sbc.skysystems.it durch den Hostnamen Ihres SBC, und die 10 durch die Anzahl der zeitgleichen Sitzungen, die Ihr SBC zulässt. Auch den SIP-Signalisierungsport 5061 müssen Sie ggf. an Ihren SBC anpassen. Bitte hierbei die Firewall nicht vergessen, siehe oben.
Als Erfolgskontrolle können Sie mittels
Get-CsOnlinePSTNGateway
die konfigurierten Gateways (Session Border Controller) abrufen.
Anschließend lässt sich der Controller-Status auch innerhalb des Teams-Admin-Portals https://admin.teams.microsoft.com/ kontrollieren:
Warnungen und Fehlermeldungen sollten nicht vorhanden sein.
Nachdem der SBC vorhanden ist, können die Anwender konfiguriert werden. Hierzu verwenden Sie den Befehl:
Set-CsUser -Identity “Benutzername” -EnterpriseVoiceEnabled $true -HostedVoiceMail $true -OnPremLineURI "tel:+49xxxxyyyyyy"
Ersetzen Sie den Benutzernamen und die Telefonnummer.
Sollte die nachfolgende Fehlermeldung erscheinen:
so bedeutet dies lediglich, dass der Anwender nicht über die notwendige Lizenz verfügt.
Nun folgt der teils verwirrende Teil: Der Benutzer muss zum Gateway. Die Details sind hier dokumentiert: https://docs.microsoft.com/en-us/microsoftteams/direct-routing-configure
Für ein vereinfachtes Szenario, mit einem SBC, welcher alle Anrufe routen soll, reichen folgende Befehle:
Erstellung einer Route:
Set-CsOnlineVoiceRoute -id "SBC" -NumberPattern ".*" -OnlinePstnGatewayList controller.skysystems.it
Dieser Befehl legt die Route an, welche für alle gewählten Nummern unter der Kennung „SBC“ die Anrufe über den SBC sendet. Anschließend benötigen wir eine Routing Policy, quasi die Anweisung, die Route auch zu verwenden:
New-CsOnlineVoiceRoutingPolicy "SBC" -OnlinePstnUsages "SBC"
Zuletzt benötigen die konfigurierten Anwender die Erlaubnis, diese Route auch zu verwenden:
Grant-CsOnlineVoiceRoutingPolicy -Identity "Benutzername" -PolicyName "SBC"
Insbesondere beim letzten Schritt kommt es oftmals zu Fehlermeldungen, welche wie folgt lauten:
Policy “Policy Name” is not a user policy. You can assign only a user policy to a specific user.
+ CategoryInfo : NotSpecified: (:) [Grant-CsOnlineVoiceRoutingPolicy], ManagementException
Sollte diese Fehlermeldung erscheinen (oder die deutsche Übersetzung), so hilft nur eins: Geduld. In unserem Fall waren es rund 36 Stunden (!), bis die Richtlinie zuzuweisen war. Mehrfache Anmeldungen in Teams werden als Hilfsmittel empfohlen, wir konnten allerdings keine Beschleunigung messen.
Nachdem die Policy dann zugewiesen ist, dauert es nochmals bis zu 24 Stunden, bis der Ziffernblock in Teams erscheint und ausgehende Anrufe möglich sind. Eingehende Anrufe hingegen funktionieren bereits vor der Einrichtung der Routen und Policies, sobald der SBC eingerichtet und der Anwender „enabled“ ist und eine Rufnummer hat.
Natürlich ist dieser Beitrag nur ein kurzer Exkurs in die Möglichkeiten. Tatsächlich bieten beispielsweise die Routing-Funktionen zahlreiche Möglichkeiten, welche hier nicht im Einzelnen erwähnt sind. Eine besondere Aufmerksamkeit sollte der Session Border Controller bekommen: Mittels des richtigen Produktes lässt sich hier ein Hybridbetrieb mit einer bestehenden Telefonanlage implementieren.
Gerne hilft unser Team auch bei Ihrem Projekt!