在Freeswitch中停止播放

时间:2015-05-06 16:59:05

标签: audio lua playback freeswitch

我在Lua中有一些代码可以接听电话,并且在执行一系列操作后将呼叫桥接到一个新的分支。

操作需要几秒钟到几分钟。

为了保持客户端我需要播放声音我遇到的问题是在通话结束后播放仍在继续。

具体问题是,如何停止播放中调用的声音?

我的代码看起来像

session:answer()
session:execute("playback", '/some/file.wav')
.
.
.
local connectionString = '{bypass_media=true,origination_caller_id_number=555,destination_number=646}'
connectionString = connectionString .. 'sofia/external/192.168.0.1@1000'
session:execute('bridge', connectionString)

1 个答案:

答案 0 :(得分:1)

我有类似的任务,并通过启动出站航段的新脚本来解决它。当应对出站航线时,我将{{1}}发送到入站航线,让频道连接在一起。它在Perl中完成,但Lua应该非常相似:https://github.com/xlab1/freeswitch_secretary_bug(脚本在脚本目录中)。

但总的来说,通过ESL实现此类场景要容易得多:您的程序可以通过ESL异步处理多个通道,并轻松执行所有需要的播放和中断。在这里,我在Golang中创建了一个简单的原型来通过ESL实现类似的场景:https://github.com/xlab1/go-fs-secretary-prototype(这里我使用了同步出站ESL套接字,但在异步入站模式下也不应该太难实现)

我希望这会有所帮助:)