Sip

Asterisk WaitForSilence 永遠不會檢測到靜音

  • April 5, 2015

我正在嘗試使用我的撥號計劃來播放帶有 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 第一次播放某些東西才開始錄製,而不是在對方開始說話時才開始錄製。

為了解決這個問題,我只是在等待之前沉默了片刻:

       100 => {
               Answer();
//              Monitor(wav,"playback-${CALLID}",m);
               Playback(silence/1);
               WaitForSilence(1000,1,60);
               AGI(agi://127.0.0.1/playmessage,${CALLID});
               AGI(agi://127.0.0.1/saytext,"Goodbye.");
               Hangup();
       }

您可以在上面看到我的簡單程式碼,其中 Monitor() 被註釋掉了。以上對答錄機也適用。

引用自:https://serverfault.com/questions/680500