我孤身走在路上, 石子在雾中发亮,夜很安静,荒原面对太空,星星互诉衷肠
Freeswitch将通话记录持久化到数据库
Freeswitch将通话记录持久化到数据库

Freeswitch将通话记录持久化到数据库

Freeswitch默认将通话记录保存到本地,为一个CSV文件,具体位置和文件名忘记了,如果要进行二次开发的话必须要将数据持久化到数据库

  1. 安装数据库:首先,你需要一个数据库来存储通话记录。你可以选择任何支持ODBC的数据库,如MySQL,PostgreSQL等。这里以MySQL为例,你可以在服务器上安装MySQL。
  2. 安装ODBC:ODBC是一种通用的数据库访问接口,FreeSWITCH通过ODBC连接到数据库。在服务器上安装unixODBC。
  3. 配置ODBC:安装完ODBC后,需要配置ODBC连接到数据库。在/etc/odbc.ini文件中添加一个新的数据源,指向你的数据库。
  4. 配置FreeSWITCH:在FreeSWITCH的配置文件中,需要开启ODBC支持,并指定ODBC数据源。在autoload_configs/db.conf.xml文件中,将<param name=”odbc-dsn” value=”freeswitch:root:password”/>中的freeswitch替换为你的ODBC数据源名称,root和password替换为你的数据库用户名和密码。
  5. 启动FreeSWITCH:重启FreeSWITCH,如果配置正确,FreeSWITCH会自动将通话记录保存到数据库。

具体的操作可能会根据你的系统和数据库有所不同。在操作过程中,如果遇到任何问题,你可以查阅官方文档。

如果你想自定义持久化的内容,需要修改FreeSWITCH的CDR(Call Detail Record)模块的配置。

  1. 打开CDR模块的配置文件:位于FreeSWITCH的配置目录下的autoload_configs/cdr_csv.conf.xml文件。
  2. 修改模板:在<layout>标签中,你可以定义你想要保存到数据库的字段。每个字段用逗号分隔,字段的名称必须是FreeSWITCH的通道变量的名称。

例如,如果你只想保存呼叫的开始时间,结束时间,和持续时间,你可以将<layout>标签修改为:

<layout>
    ${start_epoch},${end_epoch},${duration}
</layout>

保存并重启FreeSWITCH:保存你的修改,然后重启FreeSWITCH。现在,新的通话记录将按照你定义的模板保存到数据库。

FreeSWITCH的通道变量非常多,以下是一些常用的:

  1. ${uuid}:唯一的通话ID
  2. ${direction}:通话的方向,值可以是”inbound”或”outbound”
  3. ${created_time}:通话创建的时间
  4. ${profile_name}:SIP配置文件的名称
  5. ${caller_id_name}:主叫方的显示名称
  6. ${caller_id_number}:主叫方的号码
  7. ${destination_number}:被叫方的号码
  8. ${start_epoch}:通话开始的时间(Unix时间戳)
  9. ${answer_epoch}:通话接通的时间(Unix时间戳)
  10. ${end_epoch}:通话结束的时间(Unix时间戳)
  11. ${duration}:通话持续的总时间(秒)
  12. ${billsec}:通话接通后的持续时间(秒)
  13. ${hangup_cause}:通话挂断的原因

以上只是一部分常用的通道变量,FreeSWITCH还有许多其他的通道变量,可以满足各种复杂的需求。不想去找官方文档的话,可以自己打一通电话,然后用 log debug查看一下

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

7 + 1 =