согласен, забыл, использование невозможно.
Сейчас можно сформулировать задачу предельно чётко- нужно что-то, что умеет и звуковой файл играть, и одновременно вызывать экстен.
Пока всё костыли.
P.S. вот это exten => s,n,Dial(SIP/${ARG1},40,m) не понимаю, конкретнее {ARG1}. где почитать ?
Строка s,1,Macro(music,470) вызывает макрос music (описанный выше, и передаёт в него 470 в качестве аргумента ${ARG1}.
При этом вызов идёт 40 сек, и m) - играет музыка в ожидании, которая на самом деле не музыка, а записанная фраза приветствие_2
Итак, вот рабочий конфиг. Не все гладко, но работает, и введено в тестовую эксплуатацию. Звуковой файл, как и предполагалось, пришлось резать на две части вышеописанным процессом деления. Конечный результат: голосовой шлюз вызывает интерактивное меню, 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() ; - вешается трубка
Вызывающий абонент повесил трубку,
Команда вернула код возврата -1 (индикатор ошибки)
Команды со следующим приоритетом не существует
Вызов был переброшен на другой екстеншн
Вы про эти правила ? получается, что команда не выполняется, и голосовой канал остаётся включенным?
Или нужно дописать exten => s,7,Hangup () ?