Страница 2 из 3

Re: вызов экстена во время выполнения BackGround

Добавлено: 27 май 2019, 22:05
davidjonson
глубже почитал, люди для выполнения этой задачи такие схемы заворачивают, что волосы дыбом встают, кошмар.

не знаю можно ли ссылки на чужие ресурсы делать, но вот что творят : https://happyman1974.wordpress.com/2016 ... -asterisk/

Re: вызов экстена во время выполнения BackGround

Добавлено: 27 май 2019, 22:19
ded
Думаете, что вызов через макрос сложная схема и волосы дыбом?

Код: Выделить всё

exten => s,1,Macro(music,470)

[macro-music]
exten => s,1,SetMusicOnHold(mymusic)
exten => s,n,Progress()
exten => s,n,Dial(SIP/${ARG1},40,m)
exten => s,n,Hangup()
P.S. У вас аналоговый порт FXO, так что забудьте про Early media.

Re: вызов экстена во время выполнения BackGround

Добавлено: 27 май 2019, 22:45
davidjonson
согласен, забыл, использование невозможно.
Сейчас можно сформулировать задачу предельно чётко- нужно что-то, что умеет и звуковой файл играть, и одновременно вызывать экстен.
Пока всё костыли.
P.S. вот это exten => s,n,Dial(SIP/${ARG1},40,m) не понимаю, конкретнее {ARG1}. где почитать ?

Re: вызов экстена во время выполнения BackGround

Добавлено: 28 май 2019, 00:10
ded
Строка s,1,Macro(music,470) вызывает макрос music (описанный выше, и передаёт в него 470 в качестве аргумента ${ARG1}.
При этом вызов идёт 40 сек, и m) - играет музыка в ожидании, которая на самом деле не музыка, а записанная фраза приветствие_2

Re: вызов экстена во время выполнения BackGround

Добавлено: 28 май 2019, 10:04
davidjonson
Почитал про макросы, разобрался. Не знал синтаксис Macro, отсюда и проблемы.

Теперь борюсь с музыкой - звёздочка упорно играет музыку по- умолчанию, не поддается.

Re: вызов экстена во время выполнения BackGround

Добавлено: 28 май 2019, 10:46
davidjonson
Разобрался. Проигрываем не файл, а содержимое папки, описанное в musiconhold.conf.

Re: вызов экстена во время выполнения BackGround

Добавлено: 28 май 2019, 19:54
davidjonson
Итак, вот рабочий конфиг. Не все гладко, но работает, и введено в тестовую эксплуатацию. Звуковой файл, как и предполагалось, пришлось резать на две части вышеописанным процессом деления. Конечный результат: голосовой шлюз вызывает интерактивное меню, 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- не увидел в логах выполнения этой команды. Тоже нужно разбираться.

Re: вызов экстена во время выполнения BackGround

Добавлено: 28 май 2019, 22:33
zzuz
Чего же ему срабатывать. Вы же про приоритеты выполнения диалплана решили не читать.

Re: вызов экстена во время выполнения BackGround

Добавлено: 29 май 2019, 08:41
davidjonson
Вызывающий абонент повесил трубку,
Команда вернула код возврата -1 (индикатор ошибки)
Команды со следующим приоритетом не существует
Вызов был переброшен на другой екстеншн

Вы про эти правила ? получается, что команда не выполняется, и голосовой канал остаётся включенным?
Или нужно дописать exten => s,7,Hangup () ?

Re: вызов экстена во время выполнения BackGround

Добавлено: 29 май 2019, 09:50
ded
exten => _47X,3,Dial(SIP/${EXTEN},20) ;- при наборе внутреннего номера телефон звонит 20 секунд
exten => _47X,4,Playback(vm-nobodyavail)

Отсутствуют приоритеты (шаги) 1 и 2

exten => _47X,1,
exten => _47X,2,

Есть экстен
exten => 2,1,Goto(informer_100,s,1)
но нет
exten => 1,1,