前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mod_cdr_csv

mod_cdr_csv

作者头像
Seven Du
发布2020-12-21 10:32:04
1.3K0
发布2020-12-21 10:32:04
举报

这几天由于来回打飞机参加公司年会,来去匆匆,因此没顾上写东西。不过,在后台倒是收到不少消息。有关心的有问候的有祝福的,总之,在此一起谢谢了。

有一位同学问我一个关于回拨以及回铃音的问题,写了一大堆参数。我建议这位同学直接去掉所有参数试试,没准就解决了。如:

originate sofia/gateway/gw/xxxx &bridge(sofia/gateway/gw/yyyy)

如果还不行的话就需要仔细分析了,如抓扑信令看yyyy这一端有没有收到183,抓包看看有没有RTP之类的。问题里代码比较多,微信后台对这种排版不专业,因此看着太乱。对于比较长的问题,建议还是在知乎上问吧,我会尽量回答的。关于怎么得到我的帮助,请看这里:http://www.zhihu.com/question/22412945 。也可以点击左下角的查看原文链接进入。

好了,说说今天的技术话题。今天的技术话题其实是两个知识点。CDR和inotify。

mod_cdr_csv是FreeSWITCH中写话单的模块。该模块会以CSV(Comma-Separated Values,即以逗号分隔的值)格式写话单,当然,其它也可以通过配置模板选择将话单写成任何格式。

话单文件的默认存储位置是在/usr/local/freeswitch/log/cdr-csv目录下,当话单文件增长到一定程度,便会发生轮转(rotate),即,关闭原来的话单文件,重新生成新的话单文件。旧的话单文件会以日期时间的文件名格式保存,如:

1003.csv.2014-01-24-19-22-57

当然,如果话单文件还没有增长到一定程序时,也可以手工触发话单rotate,如在FreeSWITCH控制台上执行如下命令:

freeswitch> cdr_csv rotate

该模块本身没有什么值得多说的,下面说一下话单文件的处理。其实我想说的也不是如何处理话单,而是如何及时有效地处理话单。

笔者以前处理话单一直使用一个叫iwatch的工具,该工具是一个perl写的工具,通过配置正确的XML文件,可以让iwatch监听一个目录,iwatch使用Linux文件系统的的inotify机制监视文件系统,一旦文件系统发生变化,便可以执行相应的脚本。

但是,该工具在CentOS上装起来特别麻烦,而且,它又依赖于无数的Perl模块,因此,对于一些上网不方便的环境部署起来特别麻烦。后来,又找到一个C语言写的工具:https://github.com/rvoicilas/inotify-tools/wiki ,该工具看起来也不错,装起来也简单。安装后,我写了如下的脚本:

#!/bin/sh

CURPATH=`pwd`

FSPATH=/usr/local/freeswitch/log/cdr-csv

inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e close_write $FSPATH | while read date time dir file; do

FILECHANGE={dir}{file}

# convert absolute path to relative

FILECHANGEREL=`echo "

echo "At

echo mv $FILECHANGE /tmp/

done

当然,该脚本仅仅是个简单的例子,它使用了inotifywait监视一个目录(即/usr/local/freeswitch/log/cdr-dsv),当该目录中发生了close_write事件(即当文件被以写入方式打开又关闭时)时,即话单写完了,我们可以执行一个命令把它移动(或复制)到其它的目录中去。当然,没有人阻止你修改该脚本,解析CDR再写入数据库之类的。

总之,我认为这是很简单而又灵活的实现方式。UNIX的哲学就是KISS嘛——Keep It Simple, Stupid。

----------------------------------------

题图:盆花 作者 丁丁(十岁)

----------------------------------------

FreeSWITCH-CN是什么?

FreeSWITCH-CN是FreeSWITCH中文社区,我们的官方网站是 http://www.freeswitch.org.cn 。FreeSWITCH-CN同时也是一个微信公共账号,可以通过点击本页最顶端的“FreeSWITCH中文社... ”,或在通迅录->订阅号中搜索“FreeSWITCH-CN”来订阅,也可以到官方网站上扫描二维码。当然,不管是新用户还是老用户,随时都可以输入m或1显示本账号的主菜单。

FreeSWITCH-CN的账号维护者是Seven Du,在此,他会分享多年的FreeSWITCH使用经验,分享一些对开源VoIP软件以及软件社区的思考,并隔三差五的解答一些粉丝关心的问题。Seven Du于2007年听说、2008年开始使用FreeSWITCH,2009年创办FreeSWITCH-CN中文社区,2011~2013连续三年参加了在美国芝加哥举办的ClueCon全球VoIP开发者大会,该会议是由FreeSWITCH核心团队主办的。

移动设备上打字不方便,如果想写长的留言可以发邮件到 wechat@freeswitch.org.cn 。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2014-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeSWITCH中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档