freeswitch 话单写入mysql

本文详细介绍了如何在Freeswitch1.2及以上版本中配置mod_odbc_cdr模块,通过编译安装、配置文件修改及表格定义,实现通话记录数据的数据库存储,包括呼叫数据、接听数据及全部通话数据的保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

适用于Freeswitch1.2以上版本

1.编译下 mod_odbc_cdr:在fs源码文件夹的/src/mod/event_handlers/mod_odbc_cdr下,make&&make install

2.\autoload_configs\modules.conf.xml文件中添加<load module="mod_odbc_cdr"/>

3.在autoload_configs文件夹下新建odbc_cdr.conf.xml文件,内容如下:

<configuration name="odbc_cdr.conf" description="ODBC CDR Configuration">
  <settings>
    <!-- <param name="odbc-dsn" value="database:username:password"/> -->
    <!-- ODBC数据源名称:数据库用户名:数据库密码 -->
    <param name="odbc-dsn" value="freeswitch:root:password"/>
    <!-- global value can be "a-leg", "b-leg", "both" (default is "both") -->
    <param name="log-leg" value="both"/>
    <!-- value can be "always", "never", "on-db-fail" -->
    <param name="write-csv" value="on-db-fail"/>
    <!-- location to store csv copy of CDR -->
    <param name="csv-path" value="/usr/local/freeswitch/log/odbc_cdr"/>
    <!-- if "csv-path-on-fail" is set, failed INSERTs will be placed here as CSV files otherwise they will be placed in "csv-path" -->
    <param name="csv-path-on-fail" value="/usr/local/freeswitch/log/odbc_cdr/failed"/>
    <!-- dump SQL statement after leg ends -->
    <param name="debug-sql" value="false"/>
  </settings>
  <tables>
    <!-- 三张表需要先手动创建 -->
    <!-- only a-legs will be inserted into this table -->
    <!-- 保存呼叫数据 -->
    <table name="cdr_table_a" log-leg="a-leg">
      <field name="uuid" chan-var-name="uuid"/>
      <field name="call_uuid" chan-var-name="call_uuid"/>
      <field name="caller_id_name" chan-var-name="caller_id_name"/>
      <field name="caller_id_number" chan-var-name="caller_id_number"/>
      <field name="destination_number" chan-var-name="destination_number"/>
      <field name="start_stamp" chan-var-name="start_stamp"/>
      <field name="answer_stamp" chan-var-name="answer_stamp"/>
      <field name="end_stamp" chan-var-name="end_stamp"/>
      <field name="uduration" chan-var-name="uduration"/>
      <field name="billsec" chan-var-name="billsec"/>
      <field name="hangup_cause" chan-var-name="hangup_cause"/>
      <field name="sip_network_ip" chan-var-name="sip_network_ip"/>
    </table>
    <!-- only b-legs will be inserted into this table -->
    <!-- 保存接听数据 -->
    <table name="cdr_table_b" log-leg="b-leg">
      <field name="uuid" chan-var-name="uuid"/>
      <field name="call_uuid" chan-var-name="call_uuid"/>
      <field name="caller_id_name" chan-var-name="caller_id_name"/>
      <field name="caller_id_number" chan-var-name="caller_id_number"/>
      <field name="destination_number" chan-var-name="destination_number"/>
      <field name="start_stamp" chan-var-name="start_stamp"/>
      <field name="answer_stamp" chan-var-name="answer_stamp"/>
      <field name="end_stamp" chan-var-name="end_stamp"/>
      <field name="uduration" chan-var-name="uduration"/>
      <field name="billsec" chan-var-name="billsec"/>
      <field name="hangup_cause" chan-var-name="hangup_cause"/>
      <field name="sip_network_ip" chan-var-name="sip_network_ip"/>
    </table>
    <!-- both legs will be inserted into this table -->
    <!-- 保存所有通话数据 -->
    <table name="cdr_table_ab">
      <field name="uuid" chan-var-name="uuid"/>
      <field name="call_uuid" chan-var-name="call_uuid"/>
      <field name="caller_id_name" chan-var-name="caller_id_name"/>
      <field name="caller_id_number" chan-var-name="caller_id_number"/>
      <field name="destination_number" chan-var-name="destination_number"/>
      <field name="start_stamp" chan-var-name="start_stamp"/>
      <field name="answer_stamp" chan-var-name="answer_stamp"/>
      <field name="end_stamp" chan-var-name="end_stamp"/>
      <field name="uduration" chan-var-name="uduration"/>
      <field name="billsec" chan-var-name="billsec"/>
      <field name="hangup_cause" chan-var-name="hangup_cause"/>
      <field name="sip_network_ip" chan-var-name="sip_network_ip"/>
    </table>
  </tables>
</configuration>
表字段说明:(三张表需要先手动创建)

direction:话单类型outbound主叫话单,inbound被叫话单
uuid: 唯一ID
call_uuid: 关联ID,同主叫方UUID
caller_id_name: 主叫方昵称
caller_id_number: 主叫号码
destination_number: 被叫号码
start_stamp: 呼叫发起的日期/时间
answer_stamp: 实际应答呼叫远端的日期/时间 如果未接听电话,则为空字符串
end_stamp: 呼叫终止的日期/时间
uduration: 总呼叫持续时间(以微秒为单位)
billsec: 可计费的通话时长(秒)可计费时间不包括在远端接听电话之前在“早期媒体”中花费的通话时间
hangup_cause: 挂断原因
sip_network_ip:网络IP

    4:重启FreeSWITCH后即可保存通话记录到到表中

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值