什么是IVR? Interactive Voice Response,就是互动式语音应答,你只须用电话即可进入服务中心或企业前台,可以输入员工分机号码后找到相应的用户。例如当你一个前台总机的时候,就会听到这样一段提示音乐:”欢迎致电xxx信息技术有限公司,请直播分机号,查号请播 0 “ ,有了IVR之后,企业的员工就无须单独分配一个直线电话号码,而通过企业总机就可以让外部的人联系到你了。


那本文介绍的Teams AA (auto attendants) 正是用来实现这样一个简单但重要的功能。Teams的前身是Skype for Business / Lync ,在SFB/Lync时代要实现AA的话,必须要在SBC上面对接 3rd IVR(包括前期的Teams版本也是一样),因为它们没有所谓的“二次拨号” 的功能,也就是“请直播分机号” 这样一个功能。在SFB中虽然有响应组(RGS)的功能,但RGS只能做到 按1转到销售组,按2转到技术组,按3转到市场组….这样的功能。对接一套3rd IVR 费用不便宜,而且增加了整个系统的复杂性,如以下拓扑:


Microsoft Teams Voice语音落地系列-6 实战: 自动助理实现免费的 IVR_第1张图片


直到Teams AA 的出现 (Cloud auto attendant),终于可以原生地实现“二次播号”,结合之前详细讲述的Teams Direct Routing 就可以实现这样一个非常重要的场景:


  1. 客户A拨打Contoso.com 的总机 +86 21 12345678,这个呼叫通过PSTN来到企业的SBC。

  2. SBC通过Direct Routing 把这个总机号码路由给Teams。

  3. 因为总机号码已经事先分配给Teams AA ,  所以欢迎语音播放出来:“欢迎致电Contoso 信息技术有限公司, 请直播分机号,查号请播0。

  4. 客户输入 4321分机号,4321的Teams用户振铃,双方接通。


如下图:

Microsoft Teams Voice语音落地系列-6 实战: 自动助理实现免费的 IVR_第2张图片


没有 IVR 场景的话,企业是很难把电话系统整体搬到Teams 上面来的,所以说这项功能的实现是Teams 项目完美与否的重要条件之一哦,那Teams AA 可以为用户提供这样一些功能:

1)提供企业的欢迎语音,如 欢迎致电xxx信息技术有限公司。

2)可以自定义用户的按键菜单,如按1转到销售组,按2转到技术组,按3转到市场组。

3)提供企业的目录搜索,可以通过语音识别 或 员工的分机号码 (这是重点功能)。

4)Voice Mail 留言。

5)支持语音提示方式:音频文件,Text-to-speech 问候语。

6)自定义工作时间与节假日时间的提示与操作(呼叫转移,挂断,Voice Mail…)。

7)支持转移呼叫到 定义好的接线生,其它员工,呼叫列队Call Queue,自动助理AA。

8)请参考 *1


前置条件

接下来就是如何来部署这个Teams AA了,帮忙大家就把中间的坑过一过,我们需要一些前置条件(磨刀不误砍柴工),如下:


1)需要为资源帐号分配 Phone System Virtual User license, 免费,有了它之后资源帐号才能分配企业语音与总机电话号码。

2)需要有一个Azure 资源帐号,用于关联到AA 或 Call queue当中。

3)AA中的前台总机或呼叫转移的用户,需要有Phone System 许可(理论上面应该是有的,因为需要使用本文的读者都是需要Phone System Lic.)。

4)需要同时登陆到O365 Powershell 与 Teams Powershell, 以进行Powershell 的快速部署(参考*2 与 * 3)。

5)(可选)假设前提是你已经部署并测试好Teams Direct Routing, .可以打电话到Teams用户当中。如果你只想做Teams AA的功能验证,则不需要部署DR, 直接拿一个O365环境即可测试。


申请免费的Phone System虚拟用户许可

首先我们需要先申请Phone System Virtual User license,如下图(中间省略了很多关于支付方式的创建步骤)

Microsoft Teams Voice语音落地系列-6 实战: 自动助理实现免费的 IVR_第3张图片


申请下来之后,可以登陆O365 Powershell (参考 *2)查看许可信息:


PS C:\WINDOWS\system32> Get-MsolAccountSku

AccountSkuId                           ActiveUnits WarningUnits ConsumedUnits
------------                           ----------- ------------ -------------
mvp:FLOW_FREE                    10000       0            1           
mvp:PHONESYSTEM_VIRTUALUSER      10          0            0           
mvp:ENTERPRISEPREMIUM_NOPSTNCONF 5           0            4           


创建资源帐号

接着我们需要创建资源帐号,通过它可以关联多个电话号码到同一个AA 或 Call Queue当中,应用场景就是企业中的AA 或 Call Queue 提供了全球/多地的电话接入,用户可以在不同的地方拨打不同的电话号码接入AA 或 Call Queue当中。


第一,先记住这两个在Teams中hardcode好的应用程序ID:

  • Auto Attendant: ce933385-9390-45d1-9512-c8d228074e07

  • Call Queue: 11cd3e2e-fccb-42ad-ad00-878b93575e07




PS C:\WINDOWS\system32> New-CsOnlineApplicationInstance -UserPrincipalName [email protected] -ApplicationId “” -DisplayName "Resource account 1"


RunspaceId        : 4a20f627-c869-4a50-8732-9759fa18177e
ObjectId          : d535722c-96c4-41ac-ac98-e70f565c5c11
TenantId          : b8304c7f-0006-40b3-8c1e-8bd82e8de0ed
UserPrincipalName : [email protected]
ApplicationId     : ce933385-9390-45d1-9512-c8d228074e07
DisplayName       : Resource account 1
PhoneNumber       :


创建一个Call queue的资源帐号

PS C:\WINDOWS\system32> New-CsOnlineApplicationInstance -UserPrincipalName [email protected] -ApplicationId “11cd3e2e-fccb-42ad-ad00-878b93575e07 ” -DisplayName "Resource account 2 - call queue"


RunspaceId        : 4a20f627-c869-4a50-8732-9759fa18177e
ObjectId          : 900c4e0f-3a84-42d9-9ae7-690962f4075e
TenantId          : b8304c7f-0006-40b3-8c1e-8bd82e8de0ed
UserPrincipalName : [email protected]
ApplicationId     : 11cd3e2e-fccb-42ad-ad00-878b93575e07
DisplayName       : Resource account 2 - call queue
PhoneNumber       :


第三,记得为创建的资源帐号分配刚刚申请下来的免费Phone System许可,不然就会出错以下错误:

image


Get-MsolAccountSku

Get-msoluser -UserPrincipalName AA_RA@scnbwy.com | Set-MsolUser -UsageLocation hk

Set-MSOLUserLicense -UserPrincipalName [email protected] -AddLicenses scnbwymvp:PHONESYSTEM_VIRTUALUSER

Microsoft Teams Voice语音落地系列-6 实战: 自动助理实现免费的 IVR_第4张图片


第四,为资源帐号分配电话号码(例如分配一个企业的总机电话号码)


#使用Direct Routing的号码时,必须使用以下命令来设置AA的电话号码

PS C:\WINDOWS\system32> Set-CsOnlineApplicationInstance -Identity [email protected] -OnpremPhoneNumber +8675712345678


RunspaceId        : 391a2a8d-ea7b-4976-ba17-a60f6c9044c4
ObjectId          : d535722c-96c4-41ac-ac98-e70f565c5c11
TenantId          : b8304c7f-0006-40b3-8c1e-8bd82e8de0ed
UserPrincipalName : [email protected]
ApplicationId     : ce933385-9390-45d1-9512-c8d228074e07
DisplayName       : Resource account 1
PhoneNumber       :


#检查设置

PS C:\WINDOWS\system32> get-CsOnlineApplicationInstance -Identity [email protected]


RunspaceId        : 391a2a8d-ea7b-4976-ba17-a60f6c9044c4
ObjectId          : d535722c-96c4-41ac-ac98-e70f565c5c11
TenantId          : b8304c7f-0006-40b3-8c1e-8bd82e8de0ed
UserPrincipalName : [email protected]
ApplicationId     : ce933385-9390-45d1-9512-c8d228074e07
DisplayName       : Resource account 1
PhoneNumber       : tel:+8675712345678


为普通用户分配phone system许可并打开EV (这一步应该在配置Direct Routing的时候就已经做完的了 *4)

Get-CsOnlineUser | ?{$_.SipProxyAddress -like '*tangx*'} | Set-CsUser -EnterpriseVoiceEnabled $true

Get-CsOnlineUser | ?{$_.SipProxyAddress -like '*tangx*'} | fl *enter*,*name*

Microsoft Teams Voice语音落地系列-6 实战: 自动助理实现免费的 IVR_第5张图片




最后,我们可以使用管理中心对这些资源帐号进行管理,如下:

Microsoft Teams Voice语音落地系列-6 实战: 自动助理实现免费的 IVR_第6张图片


Microsoft Teams Voice语音落地系列-6 实战: 自动助理实现免费的 IVR_第7张图片


配置一个简单的Teams AA


刚刚这么折腾地申请许可,创建资源帐号,分配许可 一系列的工作,就是为了下面顺利地配置一个TeamsAA, 不文字了,直接上图就能说明白一切:

(主要是业务需求问题,已经没有什么技术问题,配置好之后外线就可以拨打总机号码通过的Direct Routing链路接通这个AA实现IVR的功能了)

Microsoft Teams Voice语音落地系列-6 实战: 自动助理实现免费的 IVR_第8张图片


Microsoft Teams Voice语音落地系列-6 实战: 自动助理实现免费的 IVR_第9张图片


Microsoft Teams Voice语音落地系列-6 实战: 自动助理实现免费的 IVR_第10张图片


Microsoft Teams Voice语音落地系列-6 实战: 自动助理实现免费的 IVR_第11张图片


Microsoft Teams Voice语音落地系列-6 实战: 自动助理实现免费的 IVR_第12张图片


Microsoft Teams Voice语音落地系列-6 实战: 自动助理实现免费的 IVR_第13张图片


可以绑定两个帐号,实现同一个AA可以设置多个电话接入号码,可以应用于全球多地接入,多个热线号码 等一些场景当中。

Microsoft Teams Voice语音落地系列-6 实战: 自动助理实现免费的 IVR_第14张图片


参考:

*1 What are Cloud auto attendants? https://docs.microsoft.com/en-us/microsoftteams/what-are-phone-system-auto-attendants

*2 使用Powershell 登陆O365 方法:Set-ExecutionPolicy RemoteSigned; Install-Module MSOnline; Import-Module MSOnline ; Connect-MsolService

*3 使用Powershell 登陆MS Teams admin Powershell https://blog.51cto.com/nemotan/2481040

*4 Microsoft Teams Voice语音落地系列 -汇总帖 https://blog.51cto.com/nemotan/2420875