3CX 呼出参数详解

本章节将介绍 3CX 如何处理经由 SIP 中继的外呼,尤其是 INVITE 消息的结构以及如何填充 SIP 字段的值。

INVTE 消息的结构

3CX 向外部送出的 INVITE 消息字段可以在 SIP 中继的 “呼出参数” 中设置。在这里,你可以替换每个 SIP 字段的值,这部分会在后面再详细介绍。

当进行呼出时 3CX 发送的基础 INVITE 消息看起来应该是这样的:

设置 SIP 字段

3CX 不允许用户完全修改 INVITE 消息,所以 INVITE 的基础结构中总是会包含上面演示的所有字段。3CX 允许修改下列 SIP 字段:

  • Request Line URI : User Part
  • Request Line URI : Host Part
  • Contact : User Part
  • Contact : Host Part
  • To : Display Name
  • To : User Part
  • To : Host Part
  • From : Display Name
  • From : User Part
  • From : Host Part
  • User Agent : Text String
  • Remote Party ID – Called Party : Display Name
  • Remote Party ID – Called Party : User Part
  • Remote Party ID – Called Party : Host Part
  • Remote Party ID – Calling Party : Display Name
  • Remote Party ID – Calling Party : User Part
  • Remote Party ID – Calling Party : Host Part
  • P-Asserted Identity : Display Name
  • P-Asserted Identity : User Part
  • P-Asserted Identity : Host Part
  • P-Preferred Identity : Display Name
  • P-Preferred Identity : User Part
  • P-Preferred Identity : Host Part
  • P-Called-Party-ID : Display Name
  • P-Called-Party-ID : User Part
  • P-Called-Party-ID : Host Part

3CX 变量

下面我们介绍的变量都可以放到 SIP 字段的设置中。

AuthID

AuthID 这个变量是由 SIP 中继 > 编辑 SIP 中继 > 常规 > 验证 区域 > 验证 ID 派生出来的。

CalledName

在 v15 中这个变量已经被遗弃,不应再使用了。

CalledNum

CalledNum” 参数是发起呼叫的 INVITE 消息中的被叫/目的地号码

CallerName

被叫号码由分机的分机的姓和名组成,一般放在 “Display name” 字段。

CallerDispName

与 “CallerName” 相反,使用这个变量后 3CX 会尝试使用呼叫发起者的 “Caller Name”。这意味着一个终端注册到 3CX 上并拨打外线的时候发送的 “From: Display Name“,3CX 会尝试在 INVITE 消息中保留这个值,将它送往 SIP 中继提供商的 SIP 服务器。

CallerNum

这个变量的值和 “LineNumber” 一样,请查看下面关于 “LineNumber” 的解释。

尽量避免使用这个变量,用 “LineNumber” 来取代他。

ContactUri

ContactUri 变量包含 SIP 中继与 3CX 通信的 IP 地址和端口,一般用在 “Contact: Host Part“。这里的端口是 3CX 在安装过程中选择的 SIP 端口。这个 IP 地址呢,3CX 会先检查在 SIP 中继的选项 > “Select which IP to use in ‘Contact’ (SIP) and ‘Connection’ (SDP) fields” 是不是有填有效的 IP地址。如果这个选项是默认设置的话,3CX 会使用设置 > 网络 > 里的公网 IP 地址。

DevHostPort

这个变量只在对接一些 PSTN 网关的时候使用,它可以共享一些 3CX 中相同的功能。

GWHostPort

这个变量由上图中两个字段组合而成。

LineId

LineId 是 SIP 中继或网关的虚拟分机号。虚拟号都是在 10000 范围。这个号码在 3CX 管理控制台是不可见的,但是在正在通话页可以看到。

LineNumber

LineNumber 是使用 SIP 中继中的 “中继线号码” 字段的值。

OutboundCallerId

Outbound Caller ID 是分机中的一个字段。

如果这个字段是空的,3CX 会检查 SIP 中继设置 -> 号码显示 -> 呼出显示号码 字段。

如果这个字段也是空的,3CX 会使用常规选项卡的中继线号码的值。

如果注册到 3CX 的终端使用匿名呼叫代码拨打外线,这个值会使用 “anonymous” 代替。

OriginatorCallerID

OriginatorCaller

“OriginatorCallerID” 这个变量会尝试使用主叫的原始号码,即使这个号码不是 3CX 系统原生的。

如果填充了 “CallerNum” 呼入参数,则 3CX 首先将检查它是否正在尝试创建 INVITE 的特定呼叫会话。 可能发生这种情况的一个示例是,来自 SIP 中继提供商的来电通过 SIP 中继提供商重定向到另一个外部号码。 在呼入信息收集期间,将填充 “CallerNum” 入站参数,如第5节中所述。

如果 “CallerNum” 的呼入参数是空的,3CX 会检测 “OutboundCallerId” 的值,就像 6.1.2.12 节所述。

如果注册到 3CX 的终端使用匿名呼叫代码拨打外线,这个值会使用 “anonymous” 代替。

EnforcedOriginatorCallerID

EnforcedOriginatorCallerID” 变量和 “OutboundCallerId” 变量基本上是一样的,他们之间唯一的区别是进行呼叫时,这个参数不会去检查用户是否使用了匿名呼叫代码。

EnforcedOutboundCallerId

EnforcedOutboundCallerId” 变量和 “OutboundCallerId” 变量基本上是一样的,他们之间唯一的区别是进行呼叫时,这个参数不会去检查用户是否使用了匿名呼叫代码。

OutboundLineId

OutboundLineId 是 SIP 中继 > 号码显示 > 呼叫号码显示 > 配置呼出号码 的值。

如果这个值是空的,会使用 SIP 中继中常规的中继线号码。

OutHostPort

这里使用的 IP/域名 的变量是用在 Outbound Proxy 字段中。

位置如图所示:

Leave default value

选择这个选项的话,3CX 会使用默认的 SIP 字段。3CX 对于这些字段的默认值可以参照第一节最上方的 INVITE 消息。

如果 SIP 字段 3CX 没有对应的默认值,当选择 “Leave default value” 后,这个字段会留空。

Custom Field

让用户手动输入一个变量。

Custome IP Range

让用户手动输入一个 IP 地址作为变量。

其他设置

SIP 中继中的 “呼出参数” 中的部分变量,可以让你对于 3CX 的 INVITE 消息做出更多设置。

“Via” 头域

INVITE 消息中的 “Via” 头域遵循 3.3.2 节中解释的 REGISTER 消息相同的逻辑,并以相同方式配置。

简而言之,”Via” 头域是服务器网卡的 IP 地址。这个地址可以是内网或者公网的,取决于 3CX 服务器是在 NAT 内还是在公网上。

这里的设置会覆盖原先在 Via 中的 IP,所以你可以在这里填入任意的 IP 地址。要覆盖的话,在 SIP 中继的选项中一定要开启”将公网IP放入SIP VIA Header“选项,并填入 IP 地址。