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

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

我在2019年初的时候,就直接把自己的Skype for Business帐号迁移到Teams上面使用,已经深深感受到Teams的各种功能(包括 消息,会议,呼叫与协作)比 Skype for Business实在太优秀了,而且音视频质量也有明显的提高。

但从SFB迁移到Teams 或 新用户直接使用Teams的时候,作为一款通讯与协作产品,都会有同样的疑问:
1)迁移到Teams之后,我还能像SFB那样打电话吗?
2)能跟公司现有的PBX互通吗?
3)能通过会议接入号加入Teams会议吗?
4)在Teams会议中能把手机用户拉进会议室吗?

我把这类问题归纳为Microsoft Teams语音落地(就是Teams的电话功能),所以本系列文章主要围绕这个话题展开的,同时这项技术也是客户从SFB迁移到Teams之前必须考虑的事情之一,不然迁上去后大家都不能打电话,这问题就大了。

几种语音落地的路径:MS Teams <--> MS Phone System<-->Local SBC

首先要介绍Microsoft Phone System, 它是位于O365中的一套电话系统,使用它可以让Skype for Business online 或者 Teams可以获得与本地SBC建立SIP Trunk的能力,这样的话,Teams上面的呼叫就有机会路由到本地SBC了。

再引申一下:会话边界控制器 (SBC) 也许是 语音网关,因为本文并不是在讲通讯技术,所以简单理解为连接运营商PSTN网络的一个设备即可(通过SIP Trunk & PRI都可以,但一般的企业都会用PRI-E1的方式来对接PSTN),那么最常见的SBC 或 语音网关 就是SFB时代的Sonus/Ribbon 与 AudioCodes 这两家的设备了,Sonus SBC1k/2k, SWe Lite, SWe Core, AudioCodes M1KB, v-SBC, E-SBC…

到此为止,我们在O365上面有Phone System , 企业本地上面有SBC,那用什么方式连接起来呢?就是刚刚上文说到的SIP Trunk了,但微软给它起了个名字,也是本系列的主角:
Microsoft Teams Direct Routing,是能允许您将SBC连接Microsoft Phone System的一项技术。

那么通过Direct Routing, 我们可以直接让你的Teams用户能打电话出去,电话又能打进来,同时Teams也能与你本地的PBX系统互通了,说更简单点就是:我的Teams可以打电话啦。

现在不是流行BYOD吗?那么Direct Routing就是Bring Your Own SIP Trunk (BYOS)

下面,我们来看看几种使用Microsoft Phone System的场景:
1)使用SBC前置:Upstream;如下图,本地的SBC与Phone System建立了Direct Routing的连接(SIP Trunk),同时SBC也连接着本地PBX与本地PSTN网络。这样就可实现Teams Voice中最主要,最基本的功能:电话的打进打出与本地PBX互联。

下图的红色与黑色分别说明了信令与媒体的流向,这种没有媒体旁路的方法让媒体流都从Phone System上面绕一圈再回来,而没有直接流向SBC。
不知道大家有没有发现这样的媒体流向的问题?红色的媒体流经过了两次Internet网络,语音质量可想而知了吧?

但是当启用了媒体旁路后,媒体流就直接在内网流向SBC,大大提升了语音的质量和外网的不稳定性,非常高兴的是最近微软已经把Media Bypass在主流的认证SBC上面都支持了:https://docs.microsoft.com/en-us/MicrosoftTeams/direct-routing-border-controllers

从下图可以看出,主流的两家认证SBC厂家都支持媒体旁路了:

2)使用Phone System + CCE+SBC的方案,可以使Skype for Business Online 用户实现电话的打进打出(即本地语音落地)。
以下的Cloud PBX已改名为Phone System,从下图可以看出要实现SFB云端用户的语音落地要增加一个CCE的角色(边缘服务+媒体中介),相对于Teams的Direct Routing来说就是麻烦了一点点, 增加了本地的运维压力

重要的东西来了:SFB online要语音落地,必须要有CCE (一套云连接器) ,同时不能使用Direct Routing。如果强制要用SFB Online来使用Direct Routing的话,会出现有时无法打电话的问题,所以信令类似于以下:
Teams---> Phone System --> Local SBC
SFB Online ---> Local CCE/Onprem SFB ---> Local SBC
请参考这篇文章: https://msunified.net/2018/05/27/microsoft-teams-direct-routing-explained/

3)SFB 本地环境与SFB Online的混合部署,跟上面的CCE方案类似,只不过把CCE换成本地的SFB, 从而为云端SFB用户提供PSTN的能力。同时,因为本地SFB的存在,可以提供基本上全功能服务。缺点就是本地运维压力是最重的。

最后汇总一下本节

1) 介绍了Teams与SFB online语音落地的几种架构。
2) 对于Teams来说,媒体旁路的重要性。
3) 简单介绍了Microsoft Phone System 与 Direct Routing , 其实就是SIP Trunk

未来的章节中,将会深入介绍Teams Direct Routing规划与配置过程中的前置准备,Teams Voice Routing配置,SBC配置,测试等。

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

时间: 2024-08-30 12:01:46

Microsoft Teams Voice语音落地系列-1 架构简述的相关文章

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语音落地系列-4 实战:Teams语音路由规划与配置

这一节继续我们的Teams语音路由配置,首先要简单讲一下配置的逻辑,不然就会知其然不知其所以然了. 以下是Teams/Skype 的语音路由逻辑图:1) 用户拨打了一个美国号码,通过Dial Plan转换成 +1 800 642 76762) Teams判断是否有Voice Routing Policy分配到该用户, 以下简称VRP3) 若有分配特定的VRP,则会被应用到对应的VRP策略里面.4) 在VRP里面会含有一组PSTN Usage, VRP会根据Callee Number给呼叫打上一个

JUnit 5 系列:架构体系

JUnit 5 分离的关注点 退一步想,我们不难辨识出,这里至少有两个不同的关注点需要分离: 一个支持测试代码撰写的 API 一个识别测试.运行测试的机制 再仔细思考一下第二点,我们可能会问,“哪些测试?”这个当然是指 Junit 测试.“我知道,但具体是哪些版本的测试呢?”呃…“还有,具体是指什么类型的测试?”好吧,你让我给你……“只能跑那些老版本的 @Test 注解的测试么?有没有其他新的方法来运行测试呢?……”行行行,都给我闭嘴!听我讲着. 为了进一步将待识别测试的类型 与 实际运行它们

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

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

[翻译] Microsoft Teams:删除成员账户其历史聊天会发生什么?

介绍:此博客文章的目的是演示从Office 365删除用户的账号后,此用户在Microsoft Teams群聊和私聊中的历史聊天记录会发生什么改变. 背景:以下是Microsoft Teams聊天对话,其中Adele和其他团队成员正在参与对话: 此外, Adele和Mega还在进行私聊: 删除员工账户: 要删除Adele用户账号,我需要删除她的Office 365帐号,此帐户也会从Azure Active Directory中被删除.在Office 365管理员账户下的"Active Users

[Microsoft Teams]使用连接器接收Azure Devops的通知

1. 什么是连接器 连接器(connector)是Teams中频道的一个接受消息的功能,官方的解释如下: 连接器允许用户订阅来自 web 服务的接收通知和消息. 它们公开服务的 HTTPS 终结点,通常以卡片形式发布消息. 简单来说就是Teams提供了一个接口, web服务可以通过这个接口推送消息给Teams的频道. 2. 为什么要用连接器接受来自Azure Devops的消息? 因为微软提供了就试试看,结果用起来感觉不错,统一在Teams中接收消息也很方便美观,还可以直接在通知下面进行交流.

ENode视频分享系列之- 架构简介和QuickStart例子分析

ENode是一个应用开发框架,为开发人员提供了一整套基于DDD+CQRS+ES+EDA架构风格的解决方案.ENode的最大特点是将并发降低到最低,并做到最大程度的并行:ENode的主要目标是解决CQRS架构的C端的高并发写的问题.ENode从发布1.0开始到现在的差不多两年多时间,我几乎每周都在更新设计和代码实现.以至于这两年来从来没有一个稳定的版本可以提供给大家,非常惭愧.但我相信,随着时间的推移和我的努力的积累,ENode一定会越来越稳定和成熟的,目前ENode的版本已经比较稳定了,如果有谁

linux ubuntu18.04安装 microsoft teams

使用microsoft 官网下载的deb包安装teams时报错: 使用以下命令安装: sudo apt-key adv --fetch-keys https://packages.microsoft.com/keys/microsoft.asc sudo echo 'deb [arch=amd64] https://packages.microsoft.com/repos/ms-teams/ stable main' > /etc/apt/sources.list.d/teams.list su

ENode框架Conference案例分析系列之 - 架构设计

Conference架构概述 先贴一下Conference案例的在线地址,UI因为完全拿了微软的实现,所以都是英文的,以后我有空再改为中文的. Conference后台会议管理:http://www.enode.me/conference Conference前台预定座位:http://www.enode.me/registration ENode论坛开源案例:http://www.enode.me/post ENode开源项目地址:https://github.com/tangxuehua/e