【FreeSWITCH】录音功能调试报告-2

本文介绍使用Lua脚本在电话系统中实现两种录音功能的方法:一是从接听到挂断的分时录音,通过固定时间间隔切割录音文件;二是从终端按键到挂断的录音,依据特定按键触发录音。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.2.2       从接听到挂断分时录音

 

              【测试案例3】设想这样一种监控式的使用环境,终端1000呼叫总台1239,总台对1000进行监控式录音,即录音不间断,并且为了便于存储与查找,将长时间的录音按固定长度切割,录入不同文件。使用Lua脚本实现,首先在Dialplan中加入如下配置:

 

                     <extension name="RecordTest4">

                          <conditionfield="destination_number" expression="^1239$">

                               <actionapplication="answer" data=""/>

                                   <actionapplication="lua" data ="test_record.lua"/>

                          </condition>

                     </extension>

             

              在scripts文件夹下添加test_record.lua文件,代码如下:

 

              api=freeswitch.API()

 

              functionmain_1()

                     while(session:ready()==true) do

                            nowtime= api:getTime()

                            session:recordFile("/tmp/ RecordTest_1.2.2_"..nowtime..".wav",10)

                     end

              end

 

              --函数执行

              session:answer()

              main_1()

             

       代码中利用session:recordFile()进行录音,其功能类似于测试案例1中的record命令,参数为file_name, max_len_secs,silence_threashold, silence_secs,分别表示录音文件名,录音最长秒数,静音阈值,静音容忍秒数,后三个参数可省略。

              测试案例中将录音最长秒数设为10s,通话时长34s,录音文件有4个,文件名以RecordTest_1.2.2_开头,文件名中的数字为录音开始时的新世纪时间毫秒数,文件大小依次为10s,10s,10s,4s,均为单声道。

 

1.2.3       从终端按键到挂断

 

              【测试案例4】终端1000呼叫总台1240,总台监听1000按键操作,当终端按0时开始录音,直到挂断。使用Lua脚本实现,首先在Dialplan中加入如下配置:

 

                     <extension name="RecordTest5">

                          <conditionfield="destination_number" expression="^1240$">

                               <actionapplication="answer" data=""/>

                                   <actionapplication="lua" data ="test_record2.lua"/>

                          </condition>

                     </extension>

             

              在scripts文件夹下添加test_record2.lua文件,代码如下:

 

              functionmain_1()

                     if(session:ready()==true) then

                     digits=session:playAndGetDigits(1,1,3,5000,"#",                                 

                                   "ivr/homemenu.wav",error_say, "^0$")

                     if(digits=="0") then

                            session:recordFile("/tmp/ RecordTest_1.2.3.wav")

                     end

              end

                           

              --函数执行

              session:answer()

              main_1()

             

              测试案例中通话时长10s,第5s按下0按键,文件时长5s,单声道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值