VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Новичком считается только что прочитавший «Астериск - будущее телефонии»
http://asterisk.ru/knowledgebase/books
и пытающийся сделать большее

Модераторы: april22, Zavr2008

davidjonson
Сообщения: 103
Зарегистрирован: 07 мар 2015, 22:50
Откуда: г. Подольск

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

Сообщение davidjonson »

Здравствуйте. В IVR использую команду BackGround. Появилась необходимость во время проигрывания звукового файла не только реагировать на DTMF, но и вызвать экстеншен, заданный в диалплане.
Изучил синтаксис BackGround, и пытаюсь решить задачу так : exten => IVR_2,2,Background(приветствие_2,,,EXT_IVR_2)
Естественно, что ничего у меня не получилось, вываливается с ошибкой == Spawn extension (FXO_gateway_2, IVR_2, 2) exited non-zero on 'SIP/471-00000029'
Подскажите, - применение BackGround с таким синктасисом ошибочно, и BackGround нужно заменить на что-то другое, или я ошибся где-то в экстенах ?

[IVR_2]; голосовое меню 2
exten => IVR_2,1,Answer()
exten => IVR_2,2,Background(приветствие_2,,,EXT_IVR_2)
exten => IVR_2,3,WaitExten(5)
exten => t,1,Dial(SIP/470,30) ; вызов секретарь 2
exten => t,2,Playback(vm-nobodyavail)
exten => i,1,Background(invalid)
exten => i,2,Dial(SIP/470,30) ; вызов секретарь 2
exten => _47X,1,Set(fname=${STRFTIME(${EPOCH},,%Y%m%d%H%M)}-${CALLERID(number)} ; называем файл записи
exten => _47X,2,MixMonitor(/home/monitor/${fname}.wav) ; здесь сказано куда записать
exten => _47X,3,Dial(SIP/${EXTEN},20) ;-
exten => _47X,4,Playback(vm-nobodyavail)

same => n,Voicemail(${EXTEN},${IF($["{DIALSTATUS}" = "BUSY"]?b:u)}) ; голосовая почта
same => n,Hangup() ; - вешается трубка

include=> EXT_IVR_2


[EXT_IVR_2]
exten => s,1,Dial(SIP/470,30) ; вызов секретарь 2
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение ded »

Сделайте сначала попроще, без MixMonitor, и не надо придумывать сложный буквеннный exten = IVR_2

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

[IVR_2]; голосовое меню 2
exten => s,1,Answer()
exten => s,2,Background(приветствие_2)
exten => s,3,WaitExten(5)
exten => t,1,Dial(SIP/470,30) ; вызов секретарь 2
exten => t,2,Playback(vm-nobodyavail)
exten => i,1,Background(invalid)
exten => i,2,Dial(SIP/470,30) ; вызов секретарь 2
BorisTheBlade
Сообщения: 167
Зарегистрирован: 14 фев 2011, 14:24

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

Сообщение BorisTheBlade »

Почитайте про опции d и m команды Dial.
Должно помочь.
davidjonson
Сообщения: 103
Зарегистрирован: 07 мар 2015, 22:50
Откуда: г. Подольск

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

Сообщение davidjonson »

После выполнения рекомендаций по исключению mixmonitor и исправления экстена на цифровой :
Ошибку не вываливает, но и экстен не вызывает, - переходит на следующую строку, проиграв весь двухминутный звуковой файл..
Последний раз редактировалось davidjonson 27 май 2019, 13:18, всего редактировалось 1 раз.
davidjonson
Сообщения: 103
Зарегистрирован: 07 мар 2015, 22:50
Откуда: г. Подольск

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

Сообщение davidjonson »

Голосовое меню и набираемых экстены у меня в разных контекстах, но я везде прописал include, проверил. ...
davidjonson
Сообщения: 103
Зарегистрирован: 07 мар 2015, 22:50
Откуда: г. Подольск

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

Сообщение davidjonson »

BorisTheBlade писал(а):Почитайте про опции d и m команды Dial.
Должно помочь.
Опция d задачу не решила. Опция m , считаю, неприменима в данном способе - решение с использованием moh меняет структуру диалплана. Проще тогда приветствие разделить на текстовую и музыкальную части, текстовую оставить в бэкграунде, а музыкальную включить вместо гудков. Я же пытаюсь вызвать экстен (заставить звонить конкретный телефон, говоря нетехническим языком), во время выполнения background.
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение ded »

davidjonson писал(а):Ошибку не вываливает, но и экстен не вызывает, - переходит на следующую строку, проиграв весь двухминутный звуковой файл..
Ваш шлюз не передаёт корректно сигналы DTMF, поэтому экстен не вызывает и переходит на следующую строку, проиграв весь двухминутный звуковой файл.

В этом можно убедиться включив логгирование DTMF (Google >> как включить дебаг dtmf в Астериске)
davidjonson
Сообщения: 103
Зарегистрирован: 07 мар 2015, 22:50
Откуда: г. Подольск

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

Сообщение davidjonson »

Донабор работает нормально. Все работает, кроме одного - , того, что описано в теме- вызов экстена самим приложением background.
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение ded »

Не верю! (с)
Приведите лог такого звонка из консоли с дебагом dtmf.
davidjonson
Сообщения: 103
Зарегистрирован: 07 мар 2015, 22:50
Откуда: г. Подольск

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

Сообщение davidjonson »

Да не в этом вопрос, всё там нормально. Говоря простым языком, я хотел, чтобы background во время проигрывания звукового файла сделал ещё и вызов экстена. Шлюз вообще ни при чём.
вот я с мобильника звоню, донабрал 470

== Using SIP RTP CoS mark 5
-- Executing [475@FXO_gateway_2:1] Goto("SIP/471-00000033", "IVR_2,s,1") in new stack
-- Goto (IVR_2,s,1)
-- Executing [s@IVR_2:1] Answer("SIP/471-00000033", "") in new stack
-- Executing [s@IVR_2:2] BackGround("SIP/471-00000033", "приветствие_2,,,470") in new stack
-- <SIP/471-00000033> Playing 'приветствие_2.slin' (language 'ru')
> 0xa044268 -- Probation passed - setting RTP source address to 10.44.151.88:16386
== CDR updated on SIP/471-00000033
-- Executing [470@IVR_2:1] Set("SIP/471-00000033", "fname=201905272004-471-470") in new stack
-- Executing [470@IVR_2:2] MixMonitor("SIP/471-00000033", "/home/monitor/201905272004-471-470.wav") in new stack
-- Executing [470@IVR_2:3] Dial("SIP/471-00000033", "SIP/470,20") in new stack
== Using SIP RTP CoS mark 5
-- Called SIP/470
== Begin MixMonitor Recording SIP/471-00000033
-- SIP/470-00000034 is ringing

Думаю, я неправильно разобрал синтаксис background, -он не умеет и музыку крутить, и экстен вызывать одновременно.. Поэтому нужно звуковой файл приветствия резать на текстовую и мелодичную часть, а мелодичную часть ставить вместо гудков при вызове экстена. Конечно, при этом исчезает возможность донабора номера во время вызова (ну можно докрутить до 1 цифры, с ключом d в Dial , но это не то что нужно)
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH