一般情况下,我们都会先通过日志进行故障排查。
如果是本地部署的SFB环境,由于IT暂时拿不到客户端信息,就需要先从服务器端查看。可以利用集中日志记录服务(CLS)从Always On方案中查看呼叫的详细信息。
Always On是始终运行的,以便故障出现后管理员可以直接查看日志,而不需要等问题重现。
但在当前场景中,用户A是基于Skype for Business Online的环境,并通过Cloud Connection Edition进行PSTN连接。这时CLS功能不再可用,因此我们只能通过Get-CsUserSession命令从后端检索日志。
在分析问题前,我们还需明确以下两个条件:

  1. 获得用户A的账号地址以及问题发生的时间。
  2. 具有该租户的Skype for Business管理员权限。
    接下来,我们将通过Powershell命令行从SFB管理员角度来收集并分析会话,进行故障排查。
    收集会话
    1、在PowerShell中,运行以下命令连接到Online环境:
    $creds = Get-Credential
    $s = New-CsOnlineSession -Credential $creds
    Import-PSSession $s -AllowClobber
    2、运行Get-CsUserSession来检索用户A从今天早上开始的日志记录:
    Get-CsUserSession -User [email protected] -StartTime (Get-Date).AddHours(-4)
    注意:该案例中已获知距离用户呼叫失败的时间不到4小时的时间信息,所以命令中未指定特定日期,而是使用了Get-Date命令并向前推迟4小时(不得晚于实际发生时间)。
    以下是运行该命令后返回的用户A发起的SIP信令:

分析会话
1、由于上述获取到的信息过长,我们首先运行如下命令将其存储到变量中以便于后续处理:
$sessions = Get-CsUserSession -User [email protected] -StartTime (Get-Date).AddHours(-4)
Skype for Business Online 中给个别用户拨号通话时出现故障_第1张图片

2、运行以下命令检索该日志中可以使用的MediaType:
$sessions.MediaTypesDescription
Skype for Business Online 中给个别用户拨号通话时出现故障_第2张图片

3、运行以下命令定位用户A拨打的电话并获取ErrorReports信息:
$sessions | Where{$_.MediaTypesDescription -eq "[Audio]"}
Skype for Business Online 中给个别用户拨号通话时出现故障_第3张图片

当前场景中,用户A拨打的是音频(Audio)电话。
使用MediaTypesDescription参数,是为了通过具体的MediaType属性(当前为Audio)来定位并获得用户A所拨出的同事B的电话号码。
4、运行以下命令展开ErrorReports以便查看详细的错误信息:
$sessions | Where{$_.MediaTypesDescription -eq "[Audio]"} | Select -ExpandProperty ErrorReports
Skype for Business Online 中给个别用户拨号通话时出现故障_第4张图片

(诊断报错:Gateway responded with 403 Forbidden)

结尾
分析上述返回的信息,报出该问题是由于用户A呼叫时网关返回403禁止响应导致的。
追根溯源,通过检查Cloud Connector Edition所关联的网关上的配置,最终发现没有正确配置出站呼叫路由来使用户A能够关联上所拨打的同事B的号码。
当检查并正确配置网关后,用户A就可以正常拨打该号码了。
捷径
如果IT在可以访问用户电脑的情况下,且用户在Skype for Business客户端的常规设置中已勾选了“同时使用Windows事件日志记录收集故障排除信息”,那么IT可以直接通过打开事件查看器快速定位Source=Lync并且EventID=11的事件日志来查看并分析该问题发生的具体原因,如下图所示。