Asterisk

Asterisk Dialplan Siptrunk 撥號使用者輸入

  • March 30, 2015

我的 Asterisk 盒子上有一個 SIP 中繼。所以我的星號盒子有一個公眾號和100個內部號碼。

外部號碼:0030XXXXXXXX 內部號碼:2000, 2001, 2002, 2003 … 等等

我想在外部號碼上創建一種菜單。因此,當使用者撥打外部號碼時,他們可以聽到聲音播放:“請輸入一個號碼並用標籤關閉”並且當輸入該號碼時,它會呼叫輸入的號碼。

例如,我撥打 0030XXXXXXX(我的外部號碼)然後 Asterisk 播放一個聲音文件並詢問一個號碼。我想撥2000,我輸入2000#,2000就會響。

我嘗試了 WaitExten 和 Read,但無法正常工作。我希望你們中的一些人可以幫助我。

先感謝您。

將來,請至少發布您嘗試過的程式碼範例,以便我們可以看到您正在嘗試做什麼。它有助於我們了解您的目標。

也就是說,試試這個。請理解這是我在早上喝咖啡時幾乎寫的未經測試的程式碼。您將需要對其進行更改以滿足您的需要/使其工作。

我對格式化“讀取”命令的方式很迂腐,但這個想法是讓您了解它是如何設置的。實際上,我傾向於以這種方式編寫我的生產程式碼,只是為了更接近“自我記錄”。

[auto_attendant]
 exten => _0030XXXXXXXX,1, Verbose(2, -- New Call For Auto-Attendant)
  same => n, Verbose(2, --- configuring environment)
  same => n, Set(my_aa_PromptFile=my_auto_attendant_greeting)
  same => n, Set(my_aa_MaxDigits=4)
  same => n, Set(my_aa_Options=s)
  same => n, Set(my_aa_Attempts=1)
  same => n, Set(my_aa_TimeOut=6)
  same => n, Set(my_aa_MaxExtension=2003)
  same => n, Set(my_aa_CountStrikes=0)

  same => n, Verbose(2, --- handling call)
  same => n, Answer()
  same => n, Playback(silence/1)
  same => n(try_again), Read(var_DTMF,${my_aa_PromptFile},${my_aa_MaxDigits},${my_aa_Options},${my_aa_Attempts},${my_aa_TimeOut})
  same => n, GotoIf($["${var_DTMF}" = ""]?handle_error) 
  same => n, GotoIf($[${var_DTMF} > ${my_aa_MaxExtension}]?handle_error) 
  same => n, Dial(SIP/${var_DTMF},22)
  same => n, Goto(try_again)

  same => n(handle_error), Verbose(2, --- error condition)
  same => n, Playback(my_auto_attendant_invalid_response)
  same => n, Set(my_aa_CountStrikes=$[${my_aa_CountStrikes} + 1])
  same => n, GotoIf($[${my_aa_CountStrikes} < 4 ]?try_again) 
  same => n, Playback(my_auto_attendant_please_try_again_later)
  same => n, Hangup()

延伸閱讀

請注意

如果這個答案最終解決了您的問題,請“接受”它,以幫助其他人稍後嘗試解決相同的問題

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