分析3CX SIP呼叫

说明

本文档介绍了如何在3CX电话系统中建立SIP呼叫,以及将哪些事件写入3CX管理控制台中的“服务器活动日志”页面。使用此呼叫流程说明,并通过分析事件,您将能够更好地了解发生的情况并解决潜在问题。请注意,下面的呼叫流程对于呼入和呼出电话都是相同的。

步骤1:识别呼叫源

呼叫者通过拿起电话并发送SIP Invite来发起呼叫。当3CX电话系统从呼叫者收到SIP Invite时,呼叫历史记录事件“Incoming”将被写入服务器状态日志:

12:03:20.734| Log(2): | Incoming | c1 | “232” <sip:232@192.168.0.2> | <sip:900@192.168.0.2> | Incoming call (before routing)

条目“ 232” <sip:232@192.168.0.2>是呼叫者的SIP地址。地址可以解释如下:

  • “ 232”是呼叫者的“显示名称”;
  • 232(在<sip:…之后)是其“用户名”(分机号码);
  • <number);(extension name’‘user its is)> IP地址或域名是其注册的主机或域。

条目<sip:900 @…>是呼叫目的地的SIP地址。

请注意,该事件称为呼入事件,即使它可以是入站呼叫也可以是出站呼叫。呼入是指PBX服务器正在接收来自呼叫者的请求,该请求可以是呼入或呼出。

步骤2:验证呼叫源

3CX电话系统现在将尝试解析呼叫源:

  • 如果呼叫来自3CX电话系统上配置的线路(即,正在从PSTN或VOIP提供商线路接收到呼叫),则会记录以下事件:12:03:20.734| Log (2): | Call is incoming from line [#1234578 @Dlink],如果源主机/ IP与已知网关之一匹配,但是在为该网关定义的线路中找不到给定的线路号,则该呼叫将被拒绝,并出现以下警告消息:12:03:20.734| Warning( 1): | Incoming call appears to be from gateway DLink, but line number #12345678 is unknown to phone system.
  • 不需要注册的VOIP提供商和VOIP网关线路。为了提供对网关和提供商的广泛支持(有时工作原理有时会有所不同),即使未注册来源,3CX电话系统也会发出或接收呼叫。
  • 现在,3CX电话系统将检查呼叫是否来自在3CX电话系统中注册的分机。如果找到,则会将以下事件写入日志:12:03:20.734| Log (2): | Registrar resolved as <addr> as <addr>,如果未找到分级名或未注册该分机,则会出现以下消息:12:03:20.734| Log (2): | Registrar can not resolve <addr>.
  • 如果无法解析呼叫者的来源,则会生成“呼叫历史记录”事件“拒绝(Rejected)”:12:03:20.781| Log(2): | Rejected | c1 | “232” <sip:232@192.168.0.2> | <sip:900@192.168.0.2> |  尝试从电话系统未注册/未知的分机/线路呼叫,在这种情况下,呼叫发起者会收到SIP响应“ 403 orbidden”。 这将显示在他/她的SIP电话上。 此时,呼叫终止,并生成相应的“呼叫历史记录”事件:12:03:20.781| Log (2): | Terminated | c1 | “232” <sip:232@192.168.0.2> | <sip:900@192.168.0.2> | Call ended

步骤3:查找呼叫的目的地

如果已确定呼叫源,则下一步是找到该呼叫的目的地。

  • 如果呼叫者来自PSTN或VOIP提供者线路,则使用关联的入站规则来查找将呼叫转接到的分机号。系统检查分机是否已在系统中注册。如果已知该分机并已注册,则会记录以下事件::……… Found destination <dest> for caller <caller>,现在,电话系统会检查呼叫是否来自该分机的外呼电话。它通过将呼出规则应用于所拨打的号码来实现此目的。如果规则与号码匹配,则它是一个出站呼叫(例如,找到前缀0)。如果没有出站规则可以匹配,则假定目的地是内部号码(分机,振铃组,IVR等),并且系统将尝试在系统数据库中找到它。如果它是分机,但未注册此分机,则会在日志中写入以下警告:Destination <dest> has been found for <caller>, but it hasn’t been registered! Unable to complete call.
  • 如果在系统数据库中找不到该号码,则该号码可能是振铃组,队列*或会议*呼叫。 如果是这样,我们继续进行下一步。
  • 如果电话系统完全不知道所拨打的号码,则呼叫将被拒绝,并且以下事件将写入服务器状态日志中。14:21:58.840| Warn (1): | Dialed number 79306288 is not known to the phone system.

解决了源和目标之后,将发出以下“呼叫历史记录”事件:

14:20:42.762| Log (2): | Routed | c2 | “103” <sip:103@192.168.0.2> | <sip:079306288@192.168.0.2> | From: Ext:103; To: [#25405292 @phoneline.com.mt]

步骤4:3CX电话系统返回invite

现在知道源和目的地,3CX电话系统将返回invite:

  • 3CX电话系统将INVITE发送到解析的目标地址,并将以下“呼叫历史记录”事件写入服务器状态日志:14:20:49.575| Log(2): | Calling | c2 | “103” <sip:103@192.168.0.2> | <sip:079306288@192.168.0.2>| Send INVITE to [#25405292 @phoneline.com.mt]
  • 如果30秒内未收到响应,则呼叫失败,并且以下“呼叫历史记录”事件将写入日志:14:21:29.903| Log (2): | Failed | c2 | “103” <sip:103@192.168.0.2> | <sip:079306288@192.168.0.2>| Call failed, reason: Request Timeout
  • 如果收到响应,则会记录以下“呼叫历史记录”事件:14:19:46.403| Log(2): | Got response from | <sip:101@192.168.0.101:5060;cid=0>;tag=b6edc8bfc47cda77 on invite from <sip:103@192.168.0.103:5060;cid=0>;tag=766caf3f. Response line: SIP/2.0 180 Ringing
  • 现在将建立呼叫-被叫接听电话-或终止-呼叫者在应答前挂断电话。如果呼叫终止,则呼叫历史记录中的终止事件如下:14:19:52.059| Log (2): | Terminated | c1 | “103”<sip:103@192.168.0.2> | <sip:101@192.168.0.2> | Call ended
  • 如果建立了呼叫,则会将以下“呼叫历史记录”事件写入日志:15:55:39.371| Log(2): | Established | c6 | “103”<sip:103@192.168.0.2> | <sip:101@192.168.0.2> | Call is established
  • 当呼叫终止时(即呼叫者或被叫者挂断电话),将发出另一个“呼叫历史记录”事件。