Lua脚本在bypass_media=true时立即退出FreeSWITCH桥接

我如何让脚本在bypass_media=true时等待桥接终止后再继续执行呢?

这段代码 -

freeswitch.consoleLog("err","session before="..tostring(session:ready()).."\n")
session:execute("set","bypass_media=true")
session:execute("bridge","sofia/gateway/carrierb/12345678")
freeswitch.consoleLog("err","session after="..tostring(session:ready()).."\n")

从音频角度来看,当bridge_media设置为true或false时,它的效果非常好,并且Wireshark跟踪显示音频通过(false)或端到端(true)。

但是当bypass设置为true时,脚本继续运行而没有暂停,而且session不再准备就绪(session:ready()==false)。

通道似乎进入了休眠状态,但在桥接完成后我必须进行系统维护,而这似乎是不可能的。

如果我在XML拨号计划中进行桥接,则会立即继续进行,导致我的系统维护过早发生。

FreeSWITCH(版本1.6.20 git 43a9feb 2018-05-07 18:56:11Z 64位) Lua 5.2

编辑1- 我可以让"api_hangup_hook=lua housekeeping.lua"起作用,但是这样我必须传递大量变量,并启动一个新的进程/线程/whatever,这似乎有些过度杀手锏,除非这是唯一的方法。

原文链接 https://stackoverflow.com/questions/51761112

点赞
stackoverflow用户1642105
stackoverflow用户1642105

我有一个解决方法,但仍然希望能得到答案,如果有人知道如何阻止桥接立即退出的话。

如果我在桥接之前这样设置:

session:执行(“set”,“bypass_media = true”)
session:execute(“set”,“session_in_hangup_hook = true”)
session:execute(“set”,“api_hangup_hook = lua housekeeping.lua的” .. <vars>)

那么当桥接实际终止时(这很久之后),“housekeeping.lua”就会被触发。

在housekeeping.lua中,我可以这样做:

session:getVariable("billmsec")

它们看起来有正确的值,允许我进行日常工作。

我的问题是,从在一定时间后触发的脚本中去处理会话变量的不确定性。

无论如何,我必须这样做,直到我找到如何保持对原始脚本的控制为止。

2018-08-09 11:47:34