У меня на Asterisk есть SIP Trunk. Итак, в моем ящике Asterisk есть один публичный номер и 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()
Дальнейшее чтение:
Пожалуйста, обратите внимание:
если окажется, что этот ответ решит вашу проблему, «примите» его в пользу других, которые попытаются решить ту же проблему позже.