3CX Teams 集成配置问答:FAQ

我需要哪种 3CX 许可?

3CX 企业版许可

我们在使用另外一款产品将 3CX 连接到 Teams,该如何清除配置?

如果您正在使用其他的服务连接 3CX 和 Teams,需要清除配置并将 Direct Routing 恢复默认配置。这样做将极大避免配置中会出现的错误,分配用户也将更干净。

  1. 将团队用户的策略恢复到默认的 “Global (Org-wide default)”。这通常是针对以下情况设置的。呼叫策略、拨号计划和语音路由策略(Calling policy, Dial plan and Voice routing policy)。
  2. 通过调用 Get-CSTenantDialPlan 清理现有的拨号计划,然后用 Remove-CSTenantDialPlan 删除所有 “Identity” 不是 “Global” 的拨号计划。
  3. 使用命令 “get-CsOnlineVoiceRoutingPolicy“, “Get-CsOnlineVoiceRoute” , “Get-CsOnlinePstnUsage” 和 “get-CsOnlinePSTNGateway” 并重复上面操作,删除所有非必须的配置。

运行 3CX 脚本后,发生 ‘The term ‘set-XYZ is not recognized’ 报错

这可能是两个原因导致的

  • 如果你不通过管理员权限的 PowerShell 来运行脚本,那么就无法安装必要的 PowerShell Teams 模块。
  • 如果你已经为 Skype for Business 或 Teams 安装了 PowerShell 模块,但它们已经过期了。

在 PowerShell 中运行 Get-InstalledModule 查看版本。需要 2.3.1 及以上版本。

如果运行后没有看到安装的版本,则运行下面命令

Install-Module -Name MicrosoftTeams -Force

从管理员权限的 PowerShell,安装/更新到最新版本。

执行第二个 3CX 脚本(用户脚本),提示 ‘Cannot modify the parameter: “OnPremLineURI” because it is restricted for the user service plan’ 报错

这是一个强有力的指标,表明用户没有得到许可,还没有被微软配置,或者你在用户身上启用了一个呼叫计划。

情况一:Microsoft 365 Phone System

首先登录 https://admin.microsoft.com/#/users 并检查 “Microsoft 365 Phone System” 插件被分配到了用户身上。不执行这步就无法执行后续操作。

如果上面显示的许可证是刚刚分配的,可能需要长达24小时的间隔,直到 Teams 的核心成员看到相同的许可证。你不能做什么来加快这个过程。然而,你可以检查它是否已经准备好。登录到https://admin.teams.microsoft.com/users,检查 “PhoneSystem” 一栏。

对于用户来说,它需要 “On” 才能连接到3CX。如果不是这种情况,就不需要进行任何呼叫测试或其他操作。

情况二:Microsoft 365 Business Voice

如果你选择了 “Business Voice” 插件,而不是便宜的 “Phone System” 插件,请确保你在微软的管理门户中为有关用户取消勾选 “Microsoft 365 Domestic Calling Plan”。

执行 3CX 第二个脚本后(用户脚本),我的用户列表是空的

你可能收到如下报错

$users_ids = @()

或缺少用户

$users_ids = @("gb@marketing-3cx.com","al@marketing-3cx.com")

这通常有三个原因:

  • 该用户没有得到微软的许可
  • 该用户还没有被微软配置
  • 你没有在管理门户中为用户分配一个 e164 格式的办公室电话号码。办公室电话号码一般应是用户的外呼号码,然后也可以同步到 3CX,以减少管理开销。登录 https://admin.microsoft.com/#/users,打开相关用户,验证 “Office phone” 号码。

我需要更新哪些 DNS 记录?

你选择的 FQDN 将被微软用来将流量路由到你的 3CX,以进行外呼。因此,它必须指向你的 3CX 安装的静态公网 IPv4 地址。

例如,假设你的电子邮件地址域名是 xyz@marketing-3cx.com。然后在你的 DNS 服务器中为 team.marketing-3cx.com> 创建一个 A 记录 DNS 条目。将此 A 记录指向你的 3CX 公网 IP 地址。你不能对你不拥有的域名这样做,如 onmicrosoft.com 或任何 3CX 提供的域名,因为你不控制这个域名的 DNS 服务器。AAAA 记录是不需要的,因为 Teams 不支持 IPv6。

⚠️注意:在本例中,使用的域名是 teams.marketing-3cx.com,但它可以是域 marketing-3cx.com 里的任何域名。

我可以用哪些 SSL 供应商的证书?

微软规定,证书的签发者必须是这里列出的其中一个。

我们已经测试并记录了使用 SSL.com 的情况,所以除非你有非常好的理由选择其他供应商,并准备自己进行故障排除,否则请使用 SSL.COM。

我的SSL证书需要涵盖哪些内容?

该证书必须准确覆盖你所指定的域名。例如,如果你的域名是 xyz.com,你必须使用 teams.xyz.com。

我的证书没有被提供,包括中间证书,我应该怎么做?

如果你的发行人没有给你一个包含证书和中间证书的单一准备文件,而你需要自己制作,请这样做:

  1. 创建一个新文件,并将其称为 “team_cert.pem”,然后用记事本打开它
  2. 在文件的顶部,粘贴来自你的供应商的证书文件的内容(必须是第一行)。
  3. 在它下面,粘贴你的供应商给你的中级证书。
  4. 保存该文件并使用这个文件作为你的证书文件。

根据微软的说法,证书的签发者必须是这里列出的其中一个。

我的3CX使用的是自定义域名,还需要哪些步骤?

在这种情况下,你必须在你的 3CX 系统中配置安全 SIP 部分。如果你不使用相同的自定义域名 FQDN 来配置你的 Teams,你也必须这样做。3CX 必须填写该部分以启动其 TLS 监听接口。因此,有效的证书和密钥对必须在这部分中输入!

确保在证书本身中,你包括了由签发根权威机构作为证书包提供的所有中级证书。

为什么我的 Teams SBC 显示 “Trunk Down”

在你运行第一个脚本(Dial Plan Script)后,Teams 和 3CX 之间就建立了连接。当你第一次运行脚本时,在短时间内,连接和 SIP 选项可能会显示为不活跃,并有一个警告。这是意料之中的事。然而, 15 分钟后,这应该会改变。

如果没有,请确保你已经打开了正确的 SIP 端口,并查看上面关于 DNS 记录和 SSL 证书的部分,因为这些通常会导致这种情况发生。登录 Teams 不太能判断问题,你能做的最好的检查是导航到 https://admin.teams.microsoft.com/direct-routing/v2,点击连接到 3CX 的 SBC,向下滚动并检查这里是否显示任何感兴趣的东西。

⚠️注意:SBC部分的 “网络有效性Network effectiveness” 计数器可能显示为红色,但这不是问题。这是对流经系统的呼叫的计算。在开始时,你很可能会运行小的测试呼叫,这被团队视为一个问题(太短,太频繁,等等)。在生产使用中,这将稳定下来,没有什么可担心的。

为什么外呼失败了

从 Teams 到 3CX 的呼叫可能失败。在通过BinLog Viewer分析日志时,日志条目为:

Mapping for Teams number +XXXXXXXX;ext=YYY is not found!

可以看到。这表明 Teams 中的用户最近改变了 “Office phone” 号码,并且还没有同步到 3CX,或者分机在 3CX 中被删除。

为什么我的 Teams 客户端不能立即工作?

虽然听起来很奇怪,但在你运行脚本后,你的 Team 客户端并没有立即更新到最新的设置。正如你在下面看到的,在拨号盘下,用户应该看到有关他们办公室号码的信息,这是微软管理门户中设置的 “Office phone”号码和 3CX 中用户的分机号码的组合。

除非向用户显示这一点,否则呼叫会失败。因此,定期重新启动 Teams 客户端。重启后,客户端将重新提供其配置。

我如何禁用 Teams 语音信箱?

Teams 对未接来电的默认处理方式是将它们发送到用户在 Teams 的语音信箱。然而,这也适用于 Team 客户端被关闭的情况。在这种情况下,所有的电话都会立即连接到用户的语音信箱,此刻中断了正在进行的呼叫流。因此,建议让 3CX 处理语音邮件和呼叫流。

每个用户的 Teams 客户端中,将 “If unanswered” 设置为 “Do nothing”

我的 iOS 设备上只有一个 App 响

如果你在 iOS 设备上安装了 3CX 和 Teams APP,你会注意到两个 APP 中只有一个会在来电时响起。这是因为 iOS 系统中的一个限制,即通过苹果的 CallKit 来呈现来自同一来电号码的两个电话。CallKit是在锁屏状态下接听普通 GSM 电话时使用的界面。我们建议使用 3CX 应用程序进行通话,因为它在这部分提供了更多的功能。

我的 SIP 运营商需要改变 FROM 和 TO 号码的格式

在向 PSTN 网络拨打电话时,SIP FROM 头域从 3CX 的分机设置中获取。当外呼从 Teams 到 3CX 时,TO 头的数字格式为 e164。你可能需要调整你的呼出规则以满足以 + 开头的号码,或者在你的 SIP 供应商不支持以 e164 格式拨号的情况下,将号码修剪成你的供应商已知的格式。

建议在 3CX 中禁用 e164 号码处理,以便在与 Microsoft Teams 结合时在呼出规则中对 TO 号码进行透明管理。

我需要在防火墙上设置哪些规则?

如果你的网络通过公司防火墙定义了严格的内/外连接,你必须允许从 3CX 主机进行以下连接:

Inbound (从 Teams 到 3CX)

 Source IP/PortsTarget Source/Ports
IPv4 Addresses:52.112.0.0/14 and 52.120.0.0/14Public IPv4 Address of 3CX
Port SIP (TCP):1024 – 65535通常是 5061* 或 5062*
Port Media (UDP):3478-3481 and 49152 – 53247Default 9000-10999*

Outbound (从 3CX 到 Teams)

 Source IP/PortsTarget Source/Ports
IPv4 Addresses:IPv4 Address of 3CX52.112.0.0/14 and 52.120.0.0/14
Port SIP (TCP):1024 – 655355061
Port Media (UDP):Default 9000-10999*3478-3481 and 49152 – 53247

*取决于3CX的配置。

是否支持微软 DoD 和 GCC 高环境?

3CX的 Direct Routing 目前不支持这两项附加服务。

我的呼出电话被禁止了,如何解决?

在 Microsoft 365 Teams 中有一个额外的设置,可以设置为阻止用户向外打电话。

选项 1

导航到 https://admin.teams.microsoft.com/users,检查为用户分配的策略。寻找 “呼叫策略”,确保它被设置为 “3CX呼叫策略“(默认设置)。

选项 2

导航至 https://admin.teams.microsoft.com/users 并检查 “语音” 外呼许可。将其设置为 “任何目的地”