Есть диалплан:
[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,846 раз
Обновлен: May 31 '12
событие после того как абонент снял трубку (РЕШЕНО)
Приветствие вместо гудков при дозвоне
Переход при недоступном абоненте
проигрывание музыки определенное время
Приветствие вызывающей стороне
gotoif определенное количество раз.
Ошибка Object is likely destroyed. кто сталкивался
Проект компании "АТС Дизайн"
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 )редактировать