Есть диалплан:
[Test]
exten => 1,1,Wait(20)
exten => 1,n,Answer()
exten => 1,n,Set(test=1)
exten => 1,n,NoOp(${test})
exten => 1,n,Set(CHANNEL(language)=ru)
exten => 1,n,Dial(SIP/YYYYYYYYYY@BBBBBBBBBB,60,rgM(test^${test}))
exten => 1,n,NoOp(${ENV(test_ii)})
exten => 1,n,GotoIf($[${ENV(test_ii)} != 0]?10:9)
exten => 1,n,Voicemail(1001@home,g(1,5))
exten => 1,n,Hangup
[macro-test]
exten => s,1,Wait(0.2)
exten => s,n,Set(CHANNEL(language)=ru)
exten => s,n,NoOp(${ARG1})
exten => s,n,Wait(2)
exten => s,n,Playback(priv-callfrom)
exten => s,n,SayDigits(${ARG1})
exten => s,n(ac),Read(ACCEPT,vm-toreply,1)
exten => s,n,GotoIf($[${ISNULL(${ACCEPT})}]?ac:bc)
exten => s,n(bc),GotoIf($[${ACCEPT} != 0 ]?zero:other)
exten => s,n(other),Set(MACRO_RESULT=CONTINUE)
exten => s,n(zero),Wait()
exten => s,n,Set(ENV(test_ii)=${ACCEPT})
exten => s,n,NoOp(${ENV(test_ii)})
-- <sip bbbbbbb="" -00000004=""> Playing '/tmp/asterisk/-1338442076.slin' (language 'ru')
-- Executing [s@macro-test:5] SayDigits("SIP/ BBBBBBB -00000004", "") in new stack
-- Executing [s@ macro-test:6] Read("SIP/ BBBBBBB -00000004", "ACCEPT,vm -toreply,1") in new stack
-- Accepting a maximum of 1 digits.
-- <sip bbbbbbb-00000004=""> Playing 'vm-toreply.slin' (language 'ru')
-- User disconnected
[May 31 16:28:11] WARNING[2169]: ast_expr2.fl:445 ast_yyerror: ast_yyerror(): syntax error: syntax error, unexpected '!=', expecting $end; Input: != 0 ^
[May 31 16:28:11] WARNING[2169]: ast_expr2.fl:449 ast_yyerror: If you have questions, please refer to doc/tex/channelvariables.tex.
-- Executing [s@test:12] GotoIf("SIP/1001-00000003", "?11:10") in new sta
ck
-- Goto (test,s,10)
-- Executing [s@test:10] MixMonitor("SIP/1001-00000003", "/usr/share/asterisk/records/201205311628-1001-s.wav,b") in new stack
-- Executing [s@test:11] Dial("SIP/1001-00000003", "SIP/YYYYYYY@BBBBBBB,60,rgM(screen^"/tmp/asterisk/-1338442076")") in new stack
Если ACCEPT присвоить какое-то значение то диалплан выполняется, а если вызываемый
абонент просто ложит трубку, то происходит повторный набор номера пока ACCEPT не будет присвоено какое–нибудь значение.
Почему не происходит прекращение работы команды Dial?
exten => s,n,GotoIf($[${EXISTS(${ACCEPT})}]?ac:bc)
exten => s,n(bc),GotoIf($["${ACCEPT}"!="0"]?zero:other)
Для начала разберитесь с синтаксисом.
Задан: 2012-05-31 07:53:58 +0400
Просмотрен: 2,958 раз
Обновлен: May 31 '12
если кладет трубку звонящий - Dial после завершения вызова возвращает пустые переменные
Как продолжить dialplan если звонящий положил трубку до ответа?
Проиграть сообщение принимающему звонок
HangUP после redirect из AGI скрипта по AMI
Реализация опции, которая запрещает доступ к транку когда бесплатные звонки заканчиваются. [закрыт]
Звонок на определенную линию многоканального телефона.
проигрывание музыки определенное время
Включение сообщений от АТС в файл записи разговоров [решено]
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Перевести?
zzuz ( 2012-05-31 10:02:07 +0400 )редактироватьПосмотрел я этот channelvariables.tex и ничего похожего там не заметил.
Не могу что-то дотупить как обработать событие "User disconnected" во время выполнения макроса.
bolshoy_plohish ( 2012-05-31 10:48:22 +0400 )редактироватьВ данном случае дотупливать не нужно. Нужно сесть и немного подумать , прочитав файл более внимательно.
zzuz ( 2012-05-31 11:09:19 +0400 )редактировать