在进行呼出并执行Lua脚本时,使用Perl ESL脚本接收RFC2833 DTMF。

我已经编写了一个 Perl ESL 脚本,用于发起外呼并与一个使用 flite 进行 TTS 的 lua 脚本进行桥接。

这在使用 SIP INFO DTMF 时效果良好。但是由于我们的 SIP 提供商禁用了 SIP INFO 并切换到了 RFC2833,ESL 脚本不再接收到 DTMF 事件。在 freeswitch 控制台中,我能够看到所有的 DTMF 事件。

我使用以下代码连接所有事件:

$con->events("plain","ALL");

但是我没有收到任何 DTMF 事件,但我能够收到其他所有事件。

有任何想法吗?

点赞
用户3713259
用户3713259

我不确定Perl可不可以,但你可以从LUA中使用类似这样的代码:

        digits = session:playAndGetDigits(min_digits, max_digits, max_tries, digit_timeout, terminators , sounds_file", "", "\\d+")

这将收集传递给它的DTMF数字,并且你可以在你的拨号计划中调用它,例如:

        <action application="lua" data="get_dtmf.lua" />

你可以遍历“digits”做你需要做的事情。

2014-09-18 17:02:14