我正在尝试使用我的拨号计划来播放带有 WaitForSilence 的录音,以确保它等到该人说完或将消息留在语音邮件中。然而,它似乎并没有等待 5 秒的沉默。即使我在说话,它仍然会检测到沉默。
我的 AEL 拨号方案是这样的:
100 => {
Answer();
WaitForSilence(5000,2,60);
AGI(agi://127.0.0.1/playmessage,${CALLID});
AGI(agi://127.0.0.1/saytext,"Goodbye.");
Hangup();
}
输出
== Using SIP RTP CoS mark 5
> Channel SIP/twilio-0000006e was answered
-- Executing [100@makeCall:1] Answer("SIP/twilio-0000006e", "") in new stack
-- Executing [100@makeCall:2] WaitForSilence("SIP/twilio-0000006e", "5000,2,60") in new stack
-- Waiting 2 time(s) for 5000 ms silence with 60 timeout
-- Exiting with 5000ms silence >= 5000ms required
-- Exiting with 5000ms silence >= 5000ms required
-- Executing [100@makeCall:3] AGI("SIP/twilio-0000006e", "agi://127.0.0.1/playmessage,45") in new stack
-- Playing '/var/nam/data/outgoing/60' (escape_digits=#) (sample_offset 0)
> 0x7f2179cf7990 -- Probation passed - setting RTP source address to 54.172.61.251:18920
-- Playing '/var/nam/data/tts/9eccb3f2ed77972157becdfbbac7232c' (escape_digits=1#) (sample_offset 0)
-- <SIP/twilio-0000006e>AGI Script agi://127.0.0.1/playmessage completed, returning 4
== Spawn extension (makeCall, 100, 3) exited non-zero on 'SIP/twilio-0000006e'
即使我添加了 AMD(),它也会始终将所有内容检测为机器,并且仍然不会真正倾听静默。我的配置中是否有问题,Asterisk 不知道什么是静默?
还是我误解了如何等待静音开始播放消息?
感谢您的所有帮助。最后,我在某处读到记录通话可能会有所帮助,因此我开始使用 Monitor() 应用程序。最后,我发现 Asterisk直到它先播放一段录音后才开始静听。我发现 Monitor() 直到 Asterisk 第一次播放某些东西才开始录制,而不是在对方开始说话时才开始录制。
为了解决这个问题,我只是在等待之前沉默了片刻:
您可以在上面看到我的简单代码,其中 Monitor() 被注释掉了。以上对答录机也适用。
等待静音和 AMD 都在等待没有明显声音的时段
所以你的频道总是有声音。
最可能的原因 - 质量差的线。
您可以尝试通过更改静音阈值来解决此问题。
对于 AMD,它是最后一个参数
在新版本中,您还可以更改阈值
dsp.conf
如果您将该值设置得足够高,它会认为始终保持沉默。所以你需要试验一下。