You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过API获取FreeSWITCH外呼通话时长?求精准获取方案

解决FreeSWITCH精准通话时长获取问题

官方认可的精准获取方式

  • CDR表权威字段:fs_cdr表中的billsec字段是FreeSWITCH官方计算的实际通话时长,统计范围是从通话接通(ANSWER)到挂断(HANGUP)的精准秒数,这是官方推荐的权威取值。若你的fs_cdr数值异常,先排查配置:
    • 确认cdr_csv.conf.xml或对应CDR配置文件中,billsec字段已被启用输出
    • 检查数据库写入CDR的逻辑,避免误用duration字段(该字段统计从呼叫发起至挂断的总时长,包含振铃等待时间)
  • ESL API实时获取:通过FreeSWITCH的Event Socket Library(ESL)调用官方API获取,通话挂断后执行以下命令:
    uuid_getvar <通话UUID> billsec
    
    该命令返回的数值与fs_cdr表的billsec完全一致,也可在通话过程中用uuid_dump命令查看通道变量,实时获取更新的billsec值

时长不一致的常见排查点

  • 字段混淆:误将duration(呼叫全周期时长)当作实际通话时长使用
  • 事件监听错误:通过CHANNEL_ANSWER和CHANNEL_HANGUP计算时,需取事件自带的answer_epoch和hangup_epoch秒级时间戳差值,而非事件的接收时间(可能存在网络延迟);同时要绑定对应通道的UUID,避免转接场景下取错事件
  • 时区偏差:检查FreeSWITCH服务器时区与数据库时区是否一致,时间戳转换异常会导致时长计算偏差

新手快速验证流程

  1. 用fs_cli连接FreeSWITCH,发起一通测试通话
  2. 通话挂断后,执行show cdr uuid <目标通话UUID>,查看billsec数值
  3. 同时通过ESL调用uuid_getvar <目标通话UUID> billsec,对比两个数值是否一致
  4. 若不一致,检查cdr.conf.xml中的enable-odbc/enable-csv配置,确认CDR生成逻辑未被自定义修改

内容的提问来源于stack exchange,提问作者tandathuynh148

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 23:20:43