Freeswitch默认将通话记录保存到本地,为一个CSV文件,具体位置和文件名忘记了,如果要进行二次开发的话必须要将数据持久化到数据库
- 安装数据库:首先,你需要一个数据库来存储通话记录。你可以选择任何支持ODBC的数据库,如MySQL,PostgreSQL等。这里以MySQL为例,你可以在服务器上安装MySQL。
- 安装ODBC:ODBC是一种通用的数据库访问接口,FreeSWITCH通过ODBC连接到数据库。在服务器上安装unixODBC。
- 配置ODBC:安装完ODBC后,需要配置ODBC连接到数据库。在/etc/odbc.ini文件中添加一个新的数据源,指向你的数据库。
- 配置FreeSWITCH:在FreeSWITCH的配置文件中,需要开启ODBC支持,并指定ODBC数据源。在autoload_configs/db.conf.xml文件中,将<param name=”odbc-dsn” value=”freeswitch:root:password”/>中的freeswitch替换为你的ODBC数据源名称,root和password替换为你的数据库用户名和密码。
- 启动FreeSWITCH:重启FreeSWITCH,如果配置正确,FreeSWITCH会自动将通话记录保存到数据库。
具体的操作可能会根据你的系统和数据库有所不同。在操作过程中,如果遇到任何问题,你可以查阅官方文档。
如果你想自定义持久化的内容,需要修改FreeSWITCH的CDR(Call Detail Record)模块的配置。
- 打开CDR模块的配置文件:位于FreeSWITCH的配置目录下的autoload_configs/cdr_csv.conf.xml文件。
- 修改模板:在<layout>标签中,你可以定义你想要保存到数据库的字段。每个字段用逗号分隔,字段的名称必须是FreeSWITCH的通道变量的名称。
例如,如果你只想保存呼叫的开始时间,结束时间,和持续时间,你可以将<layout>标签修改为:
<layout>
${start_epoch},${end_epoch},${duration}
</layout>
保存并重启FreeSWITCH:保存你的修改,然后重启FreeSWITCH。现在,新的通话记录将按照你定义的模板保存到数据库。
FreeSWITCH的通道变量非常多,以下是一些常用的:
- ${uuid}:唯一的通话ID
- ${direction}:通话的方向,值可以是”inbound”或”outbound”
- ${created_time}:通话创建的时间
- ${profile_name}:SIP配置文件的名称
- ${caller_id_name}:主叫方的显示名称
- ${caller_id_number}:主叫方的号码
- ${destination_number}:被叫方的号码
- ${start_epoch}:通话开始的时间(Unix时间戳)
- ${answer_epoch}:通话接通的时间(Unix时间戳)
- ${end_epoch}:通话结束的时间(Unix时间戳)
- ${duration}:通话持续的总时间(秒)
- ${billsec}:通话接通后的持续时间(秒)
- ${hangup_cause}:通话挂断的原因
以上只是一部分常用的通道变量,FreeSWITCH还有许多其他的通道变量,可以满足各种复杂的需求。不想去找官方文档的话,可以自己打一通电话,然后用 log debug查看一下