了解Teams Direct Routing原理及规划

来源:睿畅资讯      时间:2021-10-20 21:01


在使用Teams的用户或许还未使用Calling Service这个功能,白话就是可以在Teams上拨打和接听电话,场景例如:所有员工均可使用Teams拨打手机和座机以及各种服务号码,而打出去的号码显示都是企业座机,同样手机拨打企业总机号通过分机号或者DID号码直接呼通Teams用户;或在Teams会议中通过PSTN电话呼入,或呼叫外部座机/手机通过语音的方式加入Teams会议 。

图片

在Teams中实现PSTN呼叫是依靠Phone System来完成的,就如同传统企业内部电话系统使用PBX系统一样。通过Phone System,用户可以使用 Teams来拨打和接听呼叫、转接呼叫以及将呼叫设为静音或取消静音。Phone System用户可以单击其通讯簿中的姓名,然后Teams呼叫此人。要拨打和接听呼叫,Phone System用户可以使用其移动设备、带笔记本电脑或电脑的耳机,或者使用Teams电话。Phone System管理员可以从用于消息传递、协作等的同一主机管理呼叫选项和设置。

在Teams中实现PSTN呼叫的方式有两种,分别是:

  • 基于云服务:Phone System with Calling Plan

  • 基于现有PSTN:Phone System with Direct Routing

 

 

Phone System with Calling Plan

这是最为简单的一种方式,把Microsoft当作运营商,直接购买通话套餐就行,就好比咱们买了一部手机,然后就是选择SIM卡的运营商是电信/联通/移动,选择好了运营商之后就选择是199还是299或399的套餐了,购买了套餐后就可以用手机拨打和接听电话了。所以Calling Plan也是SaaS服务的一种,架构如下:

图片

 

 

 

Phone System with Direct Routing

Direct Routing对比较复杂的一种方式,但相对更加灵活多变,Calling Plan是微软给你号码用于拨打和接听电话,那么Direct Routing可以使用企业自己的电话号码在Teams上拨打和接听外线电话,同时还支持自动呼叫助理,呼叫队列,用户分机号等等功能,通过SBC语音网关可以实现更多的号码规则以及路由规则,基于这种方式实现在Teams中拨打和接听电话需要购置一台SBC语音网关设备用于对接本地电话线路运营商和Microsoft Teams,架构如下:

 

 

要使用Teams拨打接听PSTN电话,不单单是购置一台SBC语音网关,还需要配置拨号计划,让用户在Teams拨号盘输入的号码能按照预期转换成E.164格式并根据用户所在位置及策略将PSTN呼叫路由到不同目的地语音网关并最终通过E1线路送达至运营商。

 

 

首先,Teams Phone System遵循的规则E.164

E.164 是国际电信联盟电信(ITU-T) 的建议,它定义了用于公共交换电话网络和其他数据网络的国际公共电信编号计划,还定义了电话号码格式E.164号码最多有 15 位数字,并以[+]前缀书写。可确保 PSTN 上的每个设备都有全球唯一的号码。此号码允许电话和短信可以正确路由到不同国家/地区的各个手机/座机。标准的E.164 号码的格式为:

[+][国家号码][区域号码][目的号码]

例如:我们在国外旅游的时候希望拨打国内号码应急的时候正确的拨号应该是如下(以成都某座机为例说明):

图片

(E.164格式号码解读)

上面的电话号码可以从全球任意一个角落精准的呼叫到成都的一个叫88888888的座机号码上,同样拨打手机规则也是需要在前面添加+86

而Phone System也是遵循这种号码格式,所以在Teams上要拨打电话一定会在电话号码前添加一个[+]号。

图片

(Teams严格遵循E.164格式)

 

但是呢在Teams上为用户分配号码可以不那么严格的按照E.164的标准格式,因为在Teams中我们是无法针对某个用户的分机号去定义国家和对应地区的,所以在Teams里面用户号码只要满足是以+开头的号码就行,例如设置某用户分机号为tel:+1234,一般我们就说这个用户的Teams分机号是1234。

 

 

其次,国内座机拨打电话规则

根据通信管理局和工信部要求手机号是1:1且实名认证的,所以我们只能采用座机号码的方式与Phone System对接。而座机号码的PSTN线路又包括SIP中继和E1线路(也就是我们所说的30B+D线路),国外不同的标准下也有叫T1线路(23B+D)。

那么针对座机号码的拨打和接听我们需要了解如下规则:

  • 拨打本地座机:直接输入当地座机号码即可开始呼叫;

  • 拨打本地手机:直接输入当地手机号码即可开始呼叫;

  • 拨打外地座机:输入目的地区号+目的地座机号码才能开始呼叫;

  • 拨打外地手机:在外地手机号码前加0才能开始呼叫;

  • 拨打本地服务号码:直接输入3位或5位服务号码即可开始呼叫;

  • 拨打外地服务号码:输入目的地区号+3位或5位服务号码才能开始呼叫;

  • 拨打800热线号码:直接输入800开头的热线号码即可开始呼叫即可开始呼叫;

  • 拨打海外电话:在开通国际长途功能后输入00[国家代码][目的地区号][目的地号码]即可开始呼叫,其中打头的00是咱们国家的国际冠字号,主要作用是用来启动国际长途的号码;

特别提醒在座机拨打国内长途号码的时候区号都是010、021、028这类号码。

细心的同学已经发现了E.164格式和我们国内座机的拨号方式完全不一样。对的,国内座机都是直接输入数字开始呼叫。并且国内的区号都是010、021、028这类号码,以0开头的,准确的说在标准的E.164格式中地区号是没有0的,例如010变成标准格式后变成+8610对应北京地区区号,021变成标准格式后变成+8621对应上海地区区号、028变成标准格式后变成+8628对应成都地区区号。

 

 

最后,Teams Direct Routing

基于E.164和咱们国内的座机拨打规则的回顾,我们接下来需要了解如何将一个预期想打出去的号码在Teams上去做号码转换,以及拨打该号码的用户是否有权限拨打长途号码,以及这个呼叫要从哪台语音网关出局,了解清楚这些问题才好去做SBC和Teams语音路由策略规划。

 

 拨号计划:

 

 

 

 

Teams上的拨号规则的建立,可以使用户在拨号的时候不用过多考虑E.164规则,用户只管按照常规拨打电话习惯直接输入需要拨打的号码,剩下的交给Teams来帮用户自动完善成各种E.164格式送到SBC设备。

例如我在Teams拨号盘上输入一个手机号码(手机号前未加0表示是本地手机号)进行号码规则检测,结果会在号码前面自动补上+86,而匹配的规则是本地手机号。

图片

(在Teams管理中心测试手机号转换)

 

图片

(在Teams客户端输入手机号呼叫)

 

图片

(Teams拨号界面自动为手机号添加+86并开始呼叫)

又例如给一个北京用户分配了成都的拨号策略,那么北京的用户要拨打北京本地一家单位的一个号码就会变成+8628成都的区号送到SBC语音网关,最终到成都电信运营商。这时候要么这个是空号,要么这个号码归属于成都某个单位或个人,总之肯定打不到预期的北京当地单位的电话。 

图片 (管理用户拨号计划)

为了方便大家理解,请看下面这张拨号图,红色标记部分拨号记录我用的全局默认的拨号计划,绿色标记部分拨号记录是给当前账号分配了CN-Chengdu这个拨号计划的。 

由于当前我的Microsoft365租户注册地为香港,即使我的全局拨号策略里面没有创建任何的拨号规则,默认会在所拨号码前面加上香港的地区号+85,大赞微软!

当分配了CN-Chengdu拨号计划策略后,在Teams拨号盘里面输入66668888这个号码会自动填充上中国的国家代码+86和成都的地区代码28。有了拨号计划Teams才知道用户拨号的最终意图是本地电话还是长途电话还是其他电话。 

图片

 

(不同的拨号计划最终号码转换效果不一样)

 

 

 语音路由策略:

 

 

 

 

语音路由更像是Teams Phone System拿到了一个用户最终想要拨打的号码之后要去匹配这个号码应该往哪台语音网关设备路由,所以这里面涉及到了以下这张图上的内容。

例如:

下图有一条策略叫CN-Chengdu-AllCalls,匹配的拨号模式是只要是在Teams上拨打的号码前面带“+”号就直接路由给【cdsbc.and-sc.com】这台语音网关并最终从成都的电信运营商发起呼叫到目的号码,这是最粗暴的模式。

那么,如果我只希望成都某某同事使用Teams拨打电话的权限为只能拨打本地的座机,不允许拨打长途和国际电话呢?很简单,我们只需要创建一条语音路由(下图中已经有CN-Chengdu-Local),在这条路由里面我们写好匹配的拨号模式为^\+8628\d+,这个拨号模式意思是只要在Teams拨号盘里面最终的号码是以+8628开头的任意号码,我们都把这个号码路由到【cdsbc.and-sc.com】这台语音网关并最终从成都的电信运营商发起呼叫到目的号码,反之是以+86XX其他号码开头的呼叫一律不进行路由。同样我们也需要在语音路由策略里面创建对应的策略使用PSTN用法关联到语音路由上,并最终把这条策略分配给限制拨打长途的用户即可。

图片

 (语音路由)

 

图片

(语音路由策略)

上面的一个需求是成都当地某用户只能拨打当地电话,而实际上当地电话除了本地座机还有本地手机,我们给出的策略是+8628开头的号码才进行路由,而本地的手机变成E.164格式后是【+86189XXXX1042】这样的号码,根据策略这样的号码是不能被路由到语音网关的。所以,如果只是匹配一个拨号模式这个做法是不合理的,禁止拨打长途的场景中还应该包括能拨打本地手机号,那么这时候我们就需要完成两个动作:

①在语音路由中增加CN-Chengdu-Mobile,写好匹配的已拨号模式为^\+86(1[345789]\d{9})$,这个拨号模式意思是以+86开头,第二位数是1,第三位数是3/4/5/7/8/9并且后面还有9位任意数字的号码,这个其实就是咱们的手机号码标准的E.164格式,例如+86147xxxx9999,这个手机号里面的1对应的规则中的第二位数,4对应的第三位数,7xxxx9999对应规则中的d{9},也就是9位任意数字,并在PSTN用法中新建一个CN-Chengdu-Mobile进行关联到这条语音路由。

图片

(新增CN-Chengdu-Mobile语音路由并创建PSTN用法)

②在已有的CN-Chengdu-Local语音路由策略中编辑PSTN用法新增加上CN-Chengdu-Mobile去关联拨打成都本地手机的路由。

图片

(现有CN-Chengdu-Local策略中添加CN-Chengdu-Mobile PSTN用法)

完成以上两步操作后应用CN-Chengdu-Local这条语音路由策略的用户不论是拨打本地座机还是手机都能把拨打的号码路由到【cdsbc.and-sc.com】这台语音网关,并最终到电信运营商。

所以语音路由及策略包括: 

  • 匹配的已号码模式 

  • PSTN用法 

  • 关联的SBC语音网关

其中PSTN用法只是一个标识,同时关联语音路由策略和语音路由,当Teams上拨号盘输入的号码转换成E.164格式的号码并匹配上了我们在语音路由中定义好的号码模式后就把这个E.164格式电话号码路由到SBC语音网关进行下一步的处理。 从以上的配置中初看可能会有点绕,但是我认为只要把各种路由,策略,PSTN用法的命名进行规范化还是比较容易理解的。

 

 

 
 

  规划 Direct Routng  

 

整个Phone System with Direct Routing技术中涉及到3大部分,分别是:

  • Microsoft365租户:提供Phone System及Direct Routing技术和语音路由配置

  • SBC语音网关:提供会话边界控制器用于将本地PSTN网络连接至Microsoft Phone System

  • PSTN运营商:俗称电话线路运营商,如电信、移动、联通,提供中继或E1线路用于PSTN接入和拨出。

图片

 

 

 

Microsoft 365租户

首先要保证当前你拥有一个Microsoft 365全球版独立租户(Phone System目前已经支持GCC DoD环境)

在当前的Microsoft365中绑定企业域名,Microsoft 365默认域名为*.onmicrosoft.com,SBC设备FQDN不支持此类通用域名,仅支持*.contoso.com此类域名。

图片

(Microsoft 365中绑定的域名)
 

拥有对Micrsofot 365环境操控权限,操作账户至少需要Teams管理员权限用于添加SBC设备、配置语音路由策略、分配策略等操作。

在Microsoft 365上还需要单独的Phone System许可分配到用户,如果是E5/A5许可已经自带了Phone System许可,若非此版本的许可,还需要额外购买Phone System许可并分配到需要拨打和接听电话的用户。

Direct Routing可以在Teams Admin Center中配置,也可以在Powershell中配置,如需通过Powershell配置则需要提前安装Teams模块用于远程连接,命令如下:

  •  
  •  
  •  
Install-Module -Name PowerShellGet -Force -AllowClobber
Install-Module -Name MicrosoftTeams -Force -AllowClobber

由于SBC与Phone System之间使用Direct Routing技术直接连接,全部采用https TLS协议所以需要互相信任对方,此时Direct Routing节点为:

  • sip-all.pstnhub.microsoft.com

  • sip.pstnhub.microsoft.com

  • sip2.pstnhub.microsoft.com

  • sip3.pstnhub.microsoft.com

通过查询得知Microsoft Direct Routing使用由Baltimore CyberTrust Root颁发的证书,所以,在配置之前需要获取到这张CA证书,并导入SBC设备用于信任Teams Direct Routing。

 

 

SBC语音网关

在SBC这部分首先是需要一台经过微软认证的设备才能进行配置,已通过认证的SBC设备包括如下品牌:

AudioCodes、Ribbon Communications、Thinktel、Oracle、TE-SYSTEMS、Metaswitch、Cisco、Avaya、Nokia、Italtel、Ericsson、Cataleya、ULTATEL、Atos、Sansay Inc.、Enghouse Networks、Patton Electronics Co.、M5 Technologies(previously known as Media5 Corporation)、Ekinops、46 Labs LLC

具体的型号版本可以通过此链接查询:

  • https://docs.microsoft.com/zh-cn/microsoftteams/direct-routing-border-controllers

其次,SBC设备需要一个FQDN名称,且在公网DNS中能解析,用于Teams Phone System在互联网中发现SBC设备,所以此时还需要企业IT管理员拥有公网DNS管理权限。

此外SBC设备需要一个固定公网IP地址对外映射端口,用于和Phone System建立SIP连接,所以DNS解析的IP也应该是这个公网固定IP地址。

对于SBC设备对外映射的端口如下:

协议 源地址 源端口 目标地址 目标端口
SIP/TLS

sip-all.pstnhub.microsoft.com

sip.pstnhub.microsoft.com

sip2.pstnhub.microsoft.com

sip3.pstnhub.microsoft.com

1024-65535 SBC公网IP 5061
SIP/TLS SBC公网IP 0-65535

sip-all.pstnhub.microsoft.com

sip.pstnhub.microsoft.com

sip2.pstnhub.microsoft.com

sip3.pstnhub.microsoft.com

5061
UDP/SRTP 52.112.0.0 /14 49152-53247 SBC公网IP 16384-16884
UDP/SRTP SBC公网IP 16384-16884 52.112.0.0 /14 49152-53247
TCP/UDP SBC公网IP 0-65535 0.0.0.0/0 53
NTP/UDP SBC公网IP 0-65535 0.0.0.0/0 123
(注意:媒体端口16384-16884根据设备不同端口范围有所不同)
 

最后SBC设备还需要一张SSL证书(可使用通配符证书*.contoso.com),用于与Phone System建立SIP Trunk连接时使用,目前通过Direct Routing技术连接到SBC网关时,SBC上的SSL证书仅支持以下证书颁发机构(GCC环境仅支持DigiCert颁发机构颁发的证书):

图片

(支持的证书颁发机构)

 

 

 

PSTN运营商

最后就是PSTN运营商需要提供的线路了,可以是SIP线路,也可以是E1线路接到SBC设备上即可。

其实,一套Teams Direct Routing实施起来并非简单,除了以上列举到的内容以外还包括:客户的拨号习惯和拨号规则是如何定义的,多站点SBC的规划,根据不同用户的拨号权限配置策略等等并非一篇文章就能细化出来,还需要多方沟通。接下来的文章将会为大家分享配置阶段的操作。


上一篇:Zoom Room支持您打造多功能的高效会议空间
下一篇:微软经典曲别针小助手回归 加入Teams表情
0