CDR分析挂断情况
常见的一个通话通常会产生两条通话记录,比如:A呼叫B,就会产生两条通话记录,分别是一个叫a路(aleg),一个叫b路(bleg)。
# 部分CDR字段含义
# account(账户)
account
字段的记录规则:
- 分机通过网关呼叫手机:a路通话记录中
account
字段的值为分机号,b路通话记录中account
字段的值为网关名称。 - 分机通过线路组呼叫手机:a路通话记录中
account
字段的值为分机号,b路通话记录中account
字段的值为线路名称。 - 分机A呼叫分机B:a路通话记录中
account
字段的值为分机号A,b路通话记录中account
字段的值为分机号B。 - 分机呼叫手机,既没有通过线路组呼叫,也没有通过网关呼叫:a路通话记录中
account
字段的值为分机号,b路通话记录中account
字段的值为手机号。
# direction(方向)
呼叫流程:A输入B的号码发起呼叫,呼叫会先进入中间件,这个过程是direction:inbound
;通话再由中间件呼叫B,这个过程是direction:outbound
。
可以这里理解:A与B实现通话,双方之间需要中间件支持。呼叫进入中间件就是inbound
,呼叫从中间件出去就是outbound
。
反之如果知道了两条通话记录的direction
值,就可以推断出谁呼叫的谁。
# answered_time(接通时间)
answered_time
这个字段可以判断电话是否被接通:
- 该字段为空时,说明这通电话没有接通;
- 该字段有值时,说明这通电话已经接通了,而且该字段的值就是这通电话被接通的时间。
# sip_hangup_disposition(挂断说明)
这个字段值的视角是中间件:字段值为recv_xxx
,说明中间件在接收指令;字段值为send_xxx
,说明中间件在发送指令。
例如:
recv_refuse
:说明中间件接收到同一条通话记录account
字段值发起的拒接。- 如果同一条通话记录的
account
字段值是分机,那就是分机拒接的; - 如果同一条通话记录的
account
字段值是网关名称、线路名称、手机号等,那就是网关、线路方或者手机拒接的。
- 如果同一条通话记录的
send_bye
:说明是中间件给同一条通话记录的account
字段值发送挂断,此时还需要看另一条通话记录。如果另一条通话记录的字段sip_hangup_disposition
值为recv_bye
,这就说明是另一条通话记录的字段account
值发起的挂断。
# 挂断异常解决方案
- 如果是线路拒接,可能是线路问题,找提供线路的人询问原因。
- 如果是分机拒接,并且
hangup_cause
字段值为ORIGINATOR_CANCEL
(取消呼叫)。- 如果是sipPhone软件发起的呼叫,去找sip软件的问题。
- 如果是自动外呼发起的呼叫,看一下呼叫的时间是多少。多半是呼叫超时时间到了,取消的呼叫。
上次更新: 2024/12/21, 17:12:40