使用Lua在FreeSWITCH中向B-leg播放wav文件

在与呼叫者连接之前,如何将 wave 文件播放到 freeswitch 中的 b-leg?

这可以在拨号计划中完成吗,还是需要使用 lua 进行脚本编写?

场景是我有几个电话号码,但只有一个电话。播放 wave 文件将有助于我确定拨打了哪个号码。

点赞
用户1461066
用户1461066

我曾经用 Perl 完成过同样的任务,但它似乎并不容易。我不得不启动第二个 Perl 脚本,它产生呼叫给用户,播放声音,要求 DTMF 确认,然后连接入站呼叫。此外我使用 ESL 连接在 Go 中制作了一个原型,似乎更容易,因为 Go 具有本地多线程支持。

这是带有解释的 Jira FS-6746 的 Perl 代码: https://github.com/xlab1/freeswitch_secretary_bug

这是一个可工作的 Go 原型: https://github.com/xlab1/go-fs-secretary-prototype

2014-10-17 07:09:51
用户5915783
用户5915783

你可以在 dialplan.xml 中完成这个任务,不需要使用 Lua。在 context 下的 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>

注意,表达式使用了正则表达式,因此 .* 会匹配任何被呼叫的号码,因此每次呼叫都会在响铃前播放指定的音频文件。

2017-05-18 13:43:11