Channel: $number
Application: Playback
Data: $outputfilename
当被呼叫者接听电话时,他/她错过了前一两个词。所以我想等到他/她给出任何回应,比如“你好?” 或“alo”然后开始播放。无论如何在调用文件中完成它?
如果没有,至少我想等待 1 或 2 秒。wait(2) 在这里工作吗?
利用
Channel: $number
Application: Playback
Data: beep&silence/2&$outputfilename
这样它会播放哔哔声,这可能不会被人类听到,但肯定会启动 rtp 进程。在这 2 秒等待(静音文件)之后,回声取消训练或连接过程可能需要。这样你的信息就会变得清晰。
您可以创建新的拨号方案上下文。在其中您添加等待应用程序,然后添加 Palyback。在通话文件中,您可以通过直接指定号码或通过 Dial(Local/XXX@new-context) 拨号来将号码连接到这个新上下文
您遇到的问题是 RTP 流没有完全“启动”。在建立呼叫之前,不会发送 RTP(声音)。所以,如果你马上“开始说话”,你就会失去话语权。这是一个拨号方案方面的问题,因为它取决于呼叫的两端都处于“发送声音”阶段。
在 VoIP 连接上使用Answer() ; Wait()
不会总是解决这个问题,因为它实际上并没有让音频流移动。 Wait()
更适合设置速度慢的胡思乱想的 T1 生产线,您实际上是在等待其余的硬件赶上来。
您可以通过播放 1 或 2 秒(1 秒 80% 的时间)的静音来解决此问题。例如:
[answering_context]
exten => s,1,Verbose(2,Example of good audio discipline)
same => n, Playback(silence/1)
same => n, Playback(the_real_message_you_want_to_send)
“沉默”在技术上是“仍然声音”,但人类无法判断您在“沉默”期间是否正在脱落数据包或剪切单词。到the_real_message_you_want_to_send
播放时,音频流将完全稳定。
干杯!