【发布时间】:2014-10-16 21:51:34
【问题描述】:
在与呼叫者连接之前,如何在 freeswitch 中将波形文件播放到 b-leg? 这如何在拨号计划中完成,或者我需要在 lua 中编写脚本?
场景是我有几个电话号码,但只有一部电话。播放波形文件会很有帮助,这样我就可以确定拨打了哪个号码。
【问题讨论】:
标签: lua freeswitch
在与呼叫者连接之前,如何在 freeswitch 中将波形文件播放到 b-leg? 这如何在拨号计划中完成,或者我需要在 lua 中编写脚本?
场景是我有几个电话号码,但只有一部电话。播放波形文件会很有帮助,这样我就可以确定拨打了哪个号码。
【问题讨论】:
标签: lua freeswitch
您可以在不需要 Lua 的 dialplan.xml 中执行此操作。 在上下文中的 dialplan.xml 中放置如下内容:
<extension name="call">
<condition field="destination_number" expression=".*">
<action application="answer"/>
<action application="playback" data="/usr/local/freeswitch/conf/yourSoundHere.wav"/>
<action application="bridge" data="user/${destination_number}"/>
<action application="answer"/>
</condition>
</extension>
请注意,该表达式使用正则表达式,因此 .* 将匹配正在呼叫的任何号码,因此对于每次呼叫,它都会在用户响铃之前播放 wav 的声音。
【讨论】:
我对 Perl 也有同样的任务,但似乎并不那么容易。我不得不启动第二个 Perl 脚本,它向用户发起呼叫、播放声音、要求 DTMF 确认,然后连接呼入呼叫。我还使用 ESL 连接在 Go 中制作了一个原型,它看起来更容易,因为 Go 具有原生多线程。
这是 Perl 代码,在 Jira FS-6746 中有解释:https://github.com/xlab1/freeswitch_secretary_bug
这是 Go 中的工作原型:https://github.com/xlab1/go-fs-secretary-prototype
【讨论】: