davidjonson » 28 май 2019, 20:54
Итак, вот рабочий конфиг. Не все гладко, но работает, и введено в тестовую эксплуатацию. Звуковой файл, как и предполагалось, пришлось резать на две части вышеописанным процессом деления. Конечный результат: голосовой шлюз вызывает интерактивное меню, background проигрывает файл, ожидая DTMF (в случае неправильной комбинации отсылает на номер 470); если ничего никто не нажал,передаёт вызов на номер 470, вместо гудков проигрывая музыку. Если трубка не поднята- отбивает вызов. Закомментированные строчки - то что перестало работать- например, информер вызывается сам по себе, без нажатия кнопок. Беда с голосовой почтой , думаю, нарисовалась независимо от IVR.
Как решить вопрос с возможностью приёма DTMF во время Dial- всё в книжках написано, думаю вернуться к изучения синтаксиса Dial (я про "d") - это чтобы не делить приветствие на две части, учтите только что Dial обрабатывает только одну цифру.
Спасибо всем принявшим участие в обсуждении данной темы, ваша помощь была очень кстати.
[IVR_2]
exten => s,1,Answer()
exten => s,2,Background(приветствие_2_короткое)
exten => s,3,WaitExten(5)
exten => s,4,Macro(greeting_2,470)
exten => s,5,WaitExten(5)
exten => s,6,Playback(vm-nobodyavail)
exten => i,1,Background(invalid)
exten => i,2,WaitExten(5)
exten => i,n,Dial(SIP/470,30) ; секретарь_2
exten => _47X,3,Dial(SIP/${EXTEN},20) ;- при наборе внутреннего номера телефон звонит 20 секунд
exten => _47X,4,Playback(vm-nobodyavail)
; exten => 2,1,Goto(informer_100,s,1)
;same => n,Voicemail(${EXTEN},${IF($["{DIALSTATUS}" = "BUSY"]?b:u)}) ; голосовая почта
same => n,Hangup() ; - вешается трубка
include=> FXO_gateway_2
[macro-greeting_2]
exten=> s,1,SetMusicOnHold(moh_2)
exten=> s,2,Progress()
exten=> s,3,Dial(SIP/${ARG1},40,m)
exten=> s,4,Goto(IVR_2,s,6)
P.S. По- моему, не срабатывает Hangup- не увидел в логах выполнения этой команды. Тоже нужно разбираться.