freeswitch - 当 bgapi uuid_broadcast 启动时 FreeSwitch mod_avmd 停止
问题描述
我需要的是在通话应答时开始播放介绍性声音文件并检测来自被叫方的哔声
我尝试的是:
- 启动avmd
- 桥接电话
- 在回答时使用 bgapi 开始介绍声音消息播放
但是当后台播放开始时,avmd 会暂停并在之后继续
网关拨号方案是:
<extension name="mytelco">
<condition field="destination_number" expression="^987(\d+)$">
<action application="set" data="effective_caller_id_number=46xxxxxxxx"/>
<param name="caller-id-in-from" value="true"/>
<action application="set" data="record_link=${strftime(%Y-%m-%d-%H-%M-%S)}_${destination_number}_${caller_id_number}.wav"/>
<action application="record_session" data="/var/www/html/freeswitch/recordings/${record_link}"/>
<action application="lua" data="/etc/freeswitch/scripts/beep_detection-from-call-v0.1.2.lua $1 ${record_link}"/>
<action application="hangup"/>
</condition>
</extension>
文件 beep_detection-from-call-v0.1.2.lua
#!/usr/local/bin/lua
DNID = argv[1]
if session:ready() then
session:sleep(1000)
session:execute("avmd_start", "inbound_channel=1,outbound_channel=0,sample_n_continuous_streak=10,sample_n_to_skip=0,debug=1,report_status=1")
session:execute("bridge", "{execute_on_answer=lua /etc/freeswitch/scripts/on_answer-v0.3.lua " .. uuid .. "}sofia/gateway/mytelco/" .. DNID)
session:execute("avmd_stop","")
end --if
文件 on_answer-v0.3.lua
#!/usr/bin/lua
uuid_original = argv[1]
api = freeswitch.API()
reply = api:executeString("bgapi uuid_broadcast " .. uuid_original .. " /usr/share/asterisk/sounds/en/dennis-ivan.gsm both")
freeswitch.consoleLog("INFO","==============================================")
freeswitch.consoleLog("INFO","API reply is:" .. reply)
freeswitch.consoleLog("INFO","==============================================")
解决方案
我不确定您是否遇到与我相同的问题。我升级到最新版本的 Freeswitch(当前为 1.10),我的 AVMD 以您描述的类似方式停止工作。几个星期以来,我把头撞在墙上。令人讨厌的是,解决方法是删除sample_n_to_skip=0
.
希望这也能解决您的问题。
推荐阅读
- python-3.x - 输入整数时计算最小硬币数量的程序是正确的,但不是浮点数
- java - 由 DI 序列定义的从 x 开始的排列计数的代码优化
- xamarin.forms - 单击按钮时如何获取itemlistview详细信息
- django - 如何使用django框架制作vue js ssr
- java - 是否可以在 Java 中将方法体作为参数传递?
- dom - 跨域 iFrame 中的凭据填充
- javascript - 带有 % 的 if 语句在 Javascript 代码中不起作用
- symfony4 - 如何定义输入以在 Easy admin 中保存浮点数?
- r - 安装 *source* 包 'Rcpp' 错误。R 在错误的文件夹中指向/寻找 g++
- vba - 如何在用户键入时自动填充组合框?