【问题标题】:Asterisk records empty filesAsterisk 记录空文件
【发布时间】:2018-08-30 08:37:47
【问题描述】:

我开发了一个 IVR,它应该呼叫一个号码并录音直到静音(2 秒)并继续我的代码。我正在使用 python 发送 AGI 命令(基于此文档https://wiki.asterisk.org/wiki/display/AST/AGICommand_record+file):

RECORD FILE "/var/asterisk_sound/mobile/temp" wav "" 20000 0  s=2

所以当我拨打 IVR 时,我听到 IVR 播放音频并向我发送 DTMF,如果我用手机发送,它可以记录我的语音和 DTMF。在我有一个像 50kB 这样的小文件 temp.wav 之后。日志:

09:57:31:-> RECORD FILE "/var/asterisk_sound/mobile/temp" wav "" 20000 0  s=2
09:57:46:<- 200 result=4852 (timeout) endpos=102880
09:57:46:{'code': '200', 'result': '4852', 'value': 'timeout', 'endpos': '102880'}

但是当 IVR 呼叫我时,我仍然听到 IVR DTMF 和音频,但是在录制时没有任何反应,我正在通话并发送 DTMF 20 秒(直到超时)没有错误,记录:

16:00:38:-> RECORD FILE "/var/asterisk_sound/mobile/temp" wav "" 20000 0  s=2
16:00:58:<- 200 result=0 (timeout) endpos=0
16:00:58:{'code': '200', 'result': '0', 'value': 'timeout', 'endpos': '0'}

我最后有一个小文件我有一个小文件temp.wav,比如0B。

我很困惑,也许我尝试录制扬声器,但我不这么认为。我总结了以下问题:

仅供参考:我在 x86_64 CentOS 5.6 上使用 Asterisk 13.1-cert1

编辑: 我的算法在这两种情况下都这样做:

call a number
on reply :
    play welcome message (3 sec)
    send DTMF 
    wait 10 sec
    play BEEP
    record file until silence
    stream file
    cancel

【问题讨论】:

    标签: asterisk ivr dtmf


    【解决方案1】:

    您需要在录音前接听电话,并且在录音前向另一端发送一些东西也是个好主意。

    某些交换机(例如广泛使用的 Sonic_UA)在您向它们发送内容之前不会向您的主机发送 rtp 数据。

    在大多数情况下使用类似的东西

    Playback "beep"
    

    【讨论】:

    • 我在原始帖子中添加了我的算法。所以我在执行任何代码之前接听电话
    • 发送静音和/或哔声。
    • 同样,我用星号发出哔声:11:04:54:-&gt; RECORD FILE "/var/asterisk_sound/mobile/temp" vox "" 20000 0 BEEP s=2 11:05:14:&lt;- 200 result=0 (timeout) endpos=0 11:05:14:{'code': '200', 'result': '0', 'value': 'timeout', 'endpos': '0'}
    • 所以你现在需要做 rtp 调试。调试在 SO 上是题外话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多