Microsoft Teams Voice语音落地系列-4 实战:Teams语音路由规划与配置

这一节继续我们的Teams语音路由配置,首先要简单讲一下配置的逻辑,不然就会知其然不知其所以然了。

以下是Teams/Skype 的语音路由逻辑图:
1) 用户拨打了一个美国号码,通过Dial Plan转换成 +1 800 642 7676
2) Teams判断是否有Voice Routing Policy分配到该用户, 以下简称VRP
3) 若有分配特定的VRP,则会被应用到对应的VRP策略里面。
4) 在VRP里面会含有一组PSTN Usage, VRP会根据Callee Number给呼叫打上一个标记,就是PSTN Usage。所以你完全可以把PSTN Usage理解为一个标记即可,没有实质性的作用。
5) 第五步就比较重要了,这里会应用上一组/条语音路由 Voice Routing,它会根据Callee Number来判断是否路由到相应的语音网关上面。同时每一条Voice Routing都关联着一条/组PSTN Usage,也就是说这通呼叫之前被打上了一个标记PSTN Usage_To China, 那么这通呼叫就只能使用对应的Voice Routing进行路由了。
(若你只有一个语音网关,一个地方的用户,这个理解不了也无所谓,但如果你有多个地方的用户,多条PSTN线路,多个语音网关的话,吃透这个逻辑非常有必要)
6) 最后,Voice Routing会直接把呼叫通过Direct Routing链路送达到你的本地语音网关上面。

用以下这张图来实际说明一下,一个VRP下面挂着一个或多个PSTN Usage,在PSTN Usage里面会被关联着多条Voice Route, 它会使用正则表达式来判定这通呼叫会被路由到哪个语音网关上面,所以逻辑路径是这样子的:

Call --> Voice Routing Policy ---> PSTN Usage ---> Voice Route --> PSTN Gateway

但我们配置的顺序却是反过来的:

配置PSTN Gateway ---> 配置PSTN Usage ---> 配置Voice Route, 并关联到PSTN Usage上面 ----> 配置VRP, 并添加PSTN Usage到VRP上面 ----> 把VRP分配给用户

首先新建一个PSTN Gateway, 这里面需要用到之前前置条件准备的材料了:1)SBC公网FQDN 2)相应的信令端口,如5061 3)SIP并发数,看你买了多少路SIP Session Lic了,如果你做测试的话,就无所谓了。
如下命令:

$FQDN = "teams-test.ucssi.com"
$SipSignallingPort = "5061"
$MaxConcurrentSessions = "100"
New-CsOnlinePSTNGateway -Identity $FQDN -Enabled $true -SipSignallingPort $SipSignallingPort -MaxConcurrentSessions $MaxConcurrentSessions -FailoverTimeSeconds 30 -ForwardCallHistory $true

接着创建PSTN Usage, 需要注意它不能新建只能在Global下面不断地增加,同时它只是一个标识,没有实际意义,以下我做了几条不同的PSTN Usage, 后面会分别对应不同的Voice Route。为了简单起见,我们只创建 AllCalls那一条即可。

Set-CsOnlinePstnUsage -Identity Global -Usage @{Add="CN-Shanghai-AllCalls"}

如下命令可以查询PSTN Usage列表:

Get-CsOnlinePstnUsage | select usage -ExpandProperty usage

接下来创建Voice Route, 它关联着不同的PSTN Usage与PSTN Gateway。我认为的最佳做法是VR与PSTN Usage一一对就起来。
在多地区,多SBC,细分权限的场景中,一个Voice Routing可以对应多个PSTN Usage,这样可以复用到不同的VRP上面

$FQDN = “teams-test.ucssi.com”
New-CsOnlineVoiceRoute -Name "CN-Shanghai-All" -Priority 0 -OnlinePstnUsages "CN-Shanghai-AllCalls" -OnlinePstnGatewayList $FQDN -NumberPattern ‘^\+(\d{*})‘

做了这么多工作,就是来最后创建Voice Routing Policy的,只要简单的为新建的VRP指定一个PSTN Usage即可,但其中的逻辑一定要搞清楚哦,如下:

#新建Voice Routing Policy, 并指定PSTN Usage
#首先增加默认Global的,再增加用户级别的
New-CsOnlineVoiceRoutingPolicy -Identity "CN-Shanghai-All" -OnlinePstnUsages @{Add="CN-Shanghai-AllCalls"} 

最后一步工作就是为用户分配VRP策略了

  • 使用Set-CsUser为用户分配URI, 启用EV, 启用Voice Mail (注意这里的命令是Set-CsUser,而不是Set-CsOnlineUser)
  • 若你要查询Teams用户的属性,请使用Get-CsOnlineUser命令。
  • 打开EV,需要事先分配好Phone System Lic,你准备了吗?
  • 最后,你就可以按如下命令分配VRP了,过几分钟就可以查询到成功分配VRP了。
#注意:需要用[email protected]
#查询属性使用:Get-CsOnlineUser才能查到,而不能用Get-CsUser
#修改属性使用:Set-CsUser
#打开EV,需要有Phone System Lic
$user = "[email protected]"
Set-CsUser $user -OnPremLineURI tel:+86116
Set-CsUser $user -EnterpriseVoiceEnabled $true -HostedVoiceMail $true

#分配VRP给用户
#只有分配好VRP后,混合部署的话要等差不多24小时,才会有拨号盘出来
Grant-CsonlineVoiceRoutingPolicy -PolicyName "Tag:CN-Shanghai-All" -Identity $user

最后,我们就可以在Teams上面看到Teams Dial Pad的出现,也就意味着在Teams端的配置完成了,所有这些操作我们都可以申请一个国际版的Office 365进行测试,就算没有Phone System许可也是可以的,因为大不了启用不了EV,不影响我们实战操作,最新的效果如下

接下来章节,我们就开始配置本地的语音网关与Teams Direct Routing的链路了

原文地址:https://blog.51cto.com/nemotan/2384879

时间: 2024-08-30 15:00:03

Microsoft Teams Voice语音落地系列-4 实战:Teams语音路由规划与配置的相关文章

Microsoft Teams Voice语音落地系列-5 实战: Sonus语音网关配置

上一节中我们在Teams上面用命令配置好了Voice Routing Policy并分配给用户,理论上这时他的Teams UI上面的拨号盘就会出现.同时我们也建立好了PSTN Gateway, 这样子 Phone System >>> 本地语音网关的SIP Trunk 就做好了,从Teams 管理员中心上面可以看到这条SIP Trunk的状态,如下: 接下来这一节,我们集中精力讲述在语音网关侧的配置,这次我会选用Direct Routing的认证网关之一:Ribbon SWe Lite

Microsoft Teams Voice语音落地系列-1 架构简述

在阅读本文之前,相信大家已经对Microsoft Teams这个产品有所了解或已经在用了,可以参考@王远:Teams的前世今生的文章,大概的产品迭代如下图,可以看出微软的重心已经慢慢地跟着Satya的战略:mobile-first, cloud-first 转移到云端.直到现在的Microsoft Teams已经是一个纯云产品,同时也将未来几年时间替代Skype for Business. 我在2019年初的时候,就直接把自己的Skype for Business帐号迁移到Teams上面使用,已

Microsoft Azure 微软云平台系列新品发布

在移动为先,云为先的今天,微软为拥抱云文化的企业提供了技术和工具.利用创新且全面的移动解决方案和开发者工具,微软有独到之处,它帮助所有客户在云为先时代中发现潜在价值. 正如希望加快云创新步伐的你们所期待的,自 WPC 2015 之后我们已经为大家提供了跨越微软云平台的产品.以下就是一份最新整合的 Microsoft Azure 微软云平台系列新品发布名单. 这次更新包括以下方面: 企业移动 Azure 应用市场 Azure Pack v2 UR7 Visual Studio 企业移动 微软企业移

[Perl系列二-实战] 1. Perl 读取代码的行数

前言 有的时候有这些需求: 1. 统计一个文件的行数 2. 统计一个源代码的有效行数.排除空行和注释行 3. 统一一个目录下各种文件的数量和行数 要达成这些需求,很多语言多可以做到, 但是使用Perl 应该是一个不错的选择 读取文件行数 读取一个文件的总行数(空行和注释都包含) 使用Perl 很简单 open(FILE ,<>); my $lines_counter = 0; while(<>) { $lines_counter += 1; } print "lines:

Docker系列之实战:3.安装MariaDB

环境 [[email protected] ~]# cat /etc/centos-release CentOS Linux release 7.6.1810 (Core) [[email protected] ~]# docker -v Docker version 18.09.1, build 4c52b90 第一步:搜索和拉取官方MariaDB镜像 https://hub.docker.com/_/mariadb 基于ubuntu:trusty ### 搜索镜像 docker search

解读ASP.NET 5 &amp; MVC6系列(4):核心技术与环境配置

解读ASP.NET 5 & MVC6系列(4):核心技术与环境配置 2015-05-17 19:21 by 汤姆大叔, 11503 阅读, 15 评论, 收藏, 编辑 asp.net 5是下一代的asp.net,该版本进行了全部重写以适用于跨平台,新新版本中,微软引入了如下工具与命令:DNVM.DNX.DNU. DNVM(.NET Version Manager):由于要实现跨平台的目录,微软提供了DNVM功能,DNVM是ASP.NET最底层的内容,他是一组Powershell脚本,用于启动指定

Tokyo Tyrant(TTServer)系列(二)-启动参数和配置

启动参数介绍 ttserver命令可以启动一个数据库实例.因为数据库已经实现了Tokyo Cabinet的抽象API,所以可以在启动的时候指定数据库的配置类型. 支持的数据库类型有: 内存hash数据库 内存tree数据库 hash数据库 B+ tree数据库, 命令通过下面的格式来使用,'dbname'制定数据库名,如果省略,则被视作内存hash数据库. ttserver [-host name] [-port num] [-thnum num] [-tout num] [-dmn] [-pi

shell 脚本实战笔记(6)--集群环境配置检测

1). 背景: 集群部署的时候, 需要一致的配置和环境设置. 对于虚拟机集群, 可以借助镜像拷贝, 复制和还原集群机器. 对与物理机集群而言, 则不一样, 如果机器一多, 多人去操作和配置, 对于成熟精干的团队还好, 对于不熟悉环境的小团队, 由于水平的参差不齐, 往往会导致不一致的环境. 因此无论如何, 写脚本进行自动化的配置和环境校验总是最佳实践. 2). 假设应用场景:*) 系统环境: 安装CDH5, 集群规模为16台机器, 每台机器16CPU, 内存16G, 2块SATA盘共500G,

跟老杨学java系列(五) JDK的安装与配置

跟老杨学java系列(五) JDK的安装与配置 提示:本节内容对于java入门是非常关键的,对于刚接触java的同学一定要认真学习,欢迎大家留言探讨技术问题.其他问题概不回复. (书接上回)上节课程我们简单介绍了java项目的开发过程及常用的开发工具,这节课我们详细讲解一下JDK的安装与配置.根据上一节的学习,我们知道编写完java代码后,需要先对java代码进行编译,然后再执行.而java程序的编译与执行都是通过JDK来完成的.所以做java开发,首先我们需要学会安装和配置JDK.下面我们就来