Есть диалплан:
[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,855 раз
Обновлен: May 31 '12
Проект компании "АТС Дизайн"
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 )редактировать