Microsoft Teams Voice語音落地系列-4 實戰: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理解為一個標記即可,沒有實質性的作用。
(若你只有一個語音網關,一個地方的用戶,這個理解不了也無所謂,但如果你有多個地方的用戶,多條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的鏈路了
Microsoft Teams Voice語音落地系列-4 實戰:Teams語音路由規劃與配置