Asterisk Dialplan Siptrunk 拨号用户输入

Asterisk Dialplan Siptrunk 拨号用户输入

我的 Asterisk 盒子上有一条 SIP 中继。因此我的 Asterisk 盒子有一个公共号码和 100 个内部号码。

外部号码:0030XXXXXXXX 内部号码:2000、2001、2002、2003......等等

我想在外部号码上创建一种菜单。这样当用户拨打外部号码时,他们就可以听到声音:“请输入一个号码并以井号结束”并且当输入该号码时,它会呼叫输入的号码。

例如,我拨打 0030XXXXXXX(我的外部号码),然后 Asterisk 播放声音文件并要求输入号码。我想拨打 2000,然后输入 2000#,2000 就会响铃。

我尝试了 WaitExten 和 Read,但无法使其工作。我希望你们中的一些人能帮助我。

先感谢您。

答案1

将来,请至少发布一个您尝试过的代码示例,以便我们了解您要做什么。这有助于我们了解您的目标。

话虽如此,请尝试一下。请理解这是我在早上喝咖啡时写的未经测试的代码。您需要对其进行修改以满足您的需求/使其正常工作。

我对“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()

进一步阅读

请注意

如果这个答案能解决你的问题,请“接受”它,以便其他人以后尝试解决同样的问题

相关内容