呼叫中心中间件(mod_cti基于FreeSWITCH)-通话记录(CDR)接口

195 篇文章 2 订阅
184 篇文章 1 订阅

支持把FreeSWITCH的通话记录写入mysql,sqlserver,oracle等数据库,也可以写入redis的list,或者PUBLISH到redis的channel,方便业务程序实时获取通话记录。

使用说明

如果一个通话是A呼叫B,那么就有2个通话记录,一个叫aleg,一个叫bleg。
如果自动外呼或者呼入IVR这样没转接给其他电话或者分机的,就只有一个通话记录。

  • uuid 这个通话的callid,整个系统唯一的。
  • destination_number 一般是拨打的号码(自动外呼的如果接通了,就变成了自动外呼配置的目的地(路由条件))
  • caller_id_number 主叫号码 (来电显示的号码)
  • callee_id_number 被叫号码(DID号),业务系统建议使用dial_number这个cti定义的变量

    分机互打

    主叫方

  • account 分机号
  • direction inbound (分机呼叫fs,所以是呼入)
  • originator 空
  • bridge_uuid 最后通话的对方的UUID
  • call_source dialplan(拨号方案里面设置的)
  • source_name 主叫分机号(拨号方案里面设置的)
  • dial_number 被叫分机号(拨号方案里面设置的)

    被叫方

  • account 分机号
  • direction outbound (fs呼叫分机,所以是呼出)
  • originator 主叫方uuid
  • bridge_uuid 最后通话的对方的UUID,因为一个通话可能给转移和多个人对话,所以和originator可能不是一个UUID
  • call_source dialplan(拨号方案里面设置的)
  • source_name 主叫分机号(拨号方案里面设置的)
  • dial_number 被叫分机号(拨号方案里面设置的)

    分机呼出

    被叫方

  • account 如果外呼使用的实际线路是网关,就是网关名,如果不是网关对接的是通线路组外呼的,就是线路名。
  • 其他参数和分机互打的被叫方一样。

    自动外呼

    注意:自动外呼的通话记录主叫被叫记录接通和未接通是不一样的。下面描述这些差异。
  • destination_number 未接通的通话是被叫号码,接通的通话是外呼任务配置的路由条件。
  • caller_id_number 未接通的通话是主叫号码,接通的通话是被叫号码(就是自动外呼拨打的号码)
  • callee_id_number 未接通的通话是被叫号码,接通的通话是主叫号码(就是自动外呼设置的主叫号码),如果转接给了分机或者其他手机,这个值就变成了转接的被叫号码。
  • call_source queuedialer
  • source_name 外呼队列名字
  • dial_number 被叫号码
  • cti_line_group_name 外呼使用的线路组

排队呼叫分机

  • call_source acd
  • source_name 排队名字
  • source_number 原始主叫号码
  • dial_number 分机线路名字
  • cti_line_group_name 分机所属线路组

配置说明,在cti.json中添加cdr配置,cdr.json文件路径在cdr.conf.xml中配置,默认时fs的conf目录。

 
"cdr": {
  "details": true,
  "fields": [ "rtp_last_audio_codec_string","number:billsec", "number:duration","record_filename","jsipid:sip_h_X-jssipid" ],
  "redis": {
    "channel": "cdr",
    "list": "cdr"
  },
  "database": {
    "dbtype": "mysql",
    "connectionstring": "",
    "username": "",
    "password": "",
    "table": "cdr",
    "real": false
  },
  "log":false
}
  • details 是否记录所有的CDR信息。JSON格式。
  • fields 要记录那些通道变量,number:开始的表示使用数字格式。可以自定义需要记录的通道变量,数据库中也要添加同名字段,如果变量名和数据库字段名字不一样,可以”字段名:变量名”这样,也可以组合2个通道变量记录到一个字段”字段名:${通道变量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。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值