Есть диалплан:
[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,854 раз
Обновлен: May 31 '12
Приветствие вызывающей стороне
Cancel cause code как передать?
Не говорит что недоступен абонент
Macro, циклическая обработка аргументов
Нет голосового сообщения если телефон выключен или заблокирован
Как продолжить dialplan если звонящий положил трубку до ответа?
Включение сообщений от АТС в файл записи разговоров [решено]
Проект компании "АТС Дизайн"
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 )редактировать