FreeSWITCH话单保存到MySQL

本文介绍如何在Windows环境下使用FreeSWITCH-1.6.19与VS2015编译并配置mod_odbc_cdr模块,通过MySQL保存通话记录。包括配置ODBC数据源、编译模块、配置文件odbc_cdr.conf.xml等步骤。

环境:Window/VS2015/FreeSWITCH-1.6.19源码

    1:配置ODBC数据源:控制面板-管理工具-ODBC数据源(32位)-系统DSN-添加MySQL ODBC Unicode Driver
    2:编译mod_odbc_cdr模块(源码src\mod\event_handlers目录中有mod_odbc_cdr模块)
    3:Win32\Debug\conf\autoload_configs\modules.conf.xml文件中添加<load module="mod_odbc_cdr"/>
    4:配置文件odbc_cdr.conf.xml:Win32\Debug\conf\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:"/>
    <!-- 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"/>
    </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"/>
    </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"/>
    </table>
  </tables>
</configuration>

        表字段说明:(三张表需要先手动创建)
            uuid: 唯一ID
            call_uuid: 关联ID,同主叫方UUID
            caller_id_name: 主叫方昵称
            caller_id_number: 主叫号码
            destination_number: 被叫号码
            start_stamp: 呼叫发起的日期/时间
            answer_stamp: 实际应答呼叫远端的日期/时间 如果未接听电话,则为空字符串
            end_stamp: 呼叫终止的日期/时间
            uduration: 总呼叫持续时间(以微秒为单位)
            billsec: 可计费的通话时长(秒)可计费时间不包括在远端接听电话之前在“早期媒体”中花费的通话时间
            hangup_cause: 挂断原因
    5:重启FreeSWITCH后即可保存通话记录到到表中

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值