支持把FreeSWITCH的通话记录写入mysql,sqlserver,oracle等数据库,也可以写入redis的list,或者PUBLISH到redis的channel,方便业务程序实时获取通话记录。
配置说明,在cti.json中添加cdr配置,cdr.json文件路径在cdr.conf.xml中配置,默认时fs的conf目录。
网络异常,图片无法展示
|
- details 是否记录所有的CDR信息。JSON格式。
- fields 要记录那些通道变量,number:开始的表示使用数字格式。可以自定义需要记录的通道变量,数据库中也要添加同名字段,如果变量名和数据库字段名字不一样,可以”字段名:变量名”这样,也可以组合2个通道变量记录到一个字段”字段名:通道变量1{通道变量1}通道变量1{通道变量2}”。
- redis 配置CDR记录到redis的信息,如果不需要记录到redis,就不要配置这个。
- database.dbtype 数据库类型 比如mysql ,sqlserver
- connectionstring 连接串。mysql例子:127..0.0.1,3306@dbname sqlserevr例子:tcp:127.0.0.1,1433@dbname
- username 用户名
- password
- table 表名
- real 是否启用CDR实时模式,实时模式创建通道的时候插入记录,通话状态变化更新记录,非实时模式通话挂断才记录到CDR
自定义字段
例子记录外呼队列的自定义变量到CDR
- 外呼队列添加自定义变量
网络异常,图片无法展示
|
网络异常,图片无法展示
|
- mysql添加一个 queue_name的字段
- cdr.json的 “fields”: [ “rtp_last_audio_codec_string”,”number:billsec”, “number:duration”,”record_filename” ,”queue_name”] 添加queue_name这个自定义变量名。
- 线路也可以同样的方式添加自定义变量到CDR。
sip.js传递参数到CDR
- sip.js UA的invite方法的附加参数 extraHeaders参数,接收一个Array(String),我们需要传递到后台的参数需要放到此参数中.
格式是固定的,必须以X-为前缀,示例:X-MY-ID: id
sip.js部分代码
网络异常,图片无法展示
|
- 数据库CDR表添加一个varchar的myid字段
- cti.json里面cdr的配置”fields”: [ “rtp_last_audio_codec_string”,”number:billsec”, “number:duration”,”record_filename” ,”myid:sip_h_X-MY-ID”]
CTI模块自带的变量,可以根据需求配置到json的 cdr.fields,写入数据库。
- cti_line_group_name 外呼使用的线路组名
- cti_line_name 外呼使用的线路名
- call_source 呼叫来源类型 比如 acd,queuedialer,scheduledialer
- source_name 呼叫来源的名字 队列外呼就是队列名字,排队转接的就是排队名字
- cti_dial_number cti模块拨打的号码
- record_filename 通话录音地址
freeswitch常用变量
- originator 发起方的UUID
- bridge_uuid 最后桥接的UUID
- billsec 接通时间单位秒
- duration 呼叫总时间单位秒
- rtp_last_audio_codec_string 声音编码
- billmsec 接通时间单位毫秒
- mduration 呼叫总时间单位毫秒
默认字段
- uuid 通话的UUID
- channel 通道
- account 记录规则为如果是分机通话account为分机号,如果是通过网关呼叫account为网关名字,如果是通过线路组呼叫account为线路名字,以上都不是直接获取通道号中的号码。
- direction 方向 inbound outbound
- destination_number 拨打的号码(自动外呼接接通后是接通后执行的目的地)
- caller_id_number 主叫 (自动外呼接通后是自动外呼的被叫号码)
- callee_id_number 被叫(呼入未转接的呼叫为空,自动外呼接通后为自动外呼的主叫号码)
- sip_term_status 终止sip代码(主动挂断为空)
- sip_hangup_disposition 挂断说明 recv_bye:对方发起挂断 send_bye:本地发起挂断 recv_refuse:对方拒接 send_refuse:本地取消呼叫
- network_addr 对方网络地址
- created_time 发起呼叫时间
- answered_time 接通时间
- hungup_time 挂断时间
- hangup_cause 挂断原因