AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Variables в OOH323

Newbies/FAQ Forum 3 сообщений -
#1

Здравствуйте!

Есть такой диалплан:

Код:

macro ael-dial( ext ) {
Dial(${ext},20);
switch(${DIALSTATUS}) {
case BUSY:
NoOp(BUSY);
break;
case CHANUNAVAIL:
NoOp(CHANUNAVAIL);
break;
case NOANSWER:
NoOp(NOANSWER);
break;
case CONGESTION:
NoOp(CONGESTION);
break;
case ANSWER:
NoOp(ANSWER);
break;
default:
NoOp(default);
};
NoOp(end dial);
};

context local {
_XXX => &ael-dial(IAX2/${EXTEN});
_XXXXXXX => &ael-dial(SIP/${EXTEN}@operator-out);
};

context incoming {
_XXXXXXX => &ael-dial(IAX2/${EXTEN:4});
};


Реакция на CHANUNAVAIL и NOANSWER такая, как и ожидается:

Код:

asterisk*CLI>
-- Executing [2800800@incoming:1] Macro("SIP/10.0.0.1-00825080", "ael-dial|IAX2/800") in new stack
-- Executing [s@macro-ael-dial:1] Set("SIP/10.0.0.1-00825080", "ext=IAX2/800") in new stack
-- Executing [s@macro-ael-dial:2] Dial("SIP/10.0.0.1-00825080", "IAX2/800|20") in new stack
-- Called 800
-- Call accepted by 10.0.0.2 (format ulaw)
-- Format for call is ulaw
-- IAX2/800-2 is ringing
-- Nobody picked up in 20000 ms
[May 5 21:08:56] DEBUG[24792]: chan_iax2.c:2979 iax2_hangup: We're hanging up IAX2/800-2 with cause 0 now...
-- Hungup 'IAX2/800-2'
-- Executing [s@macro-ael-dial:3] Goto("SIP/10.0.0.1-00825080", "sw-1-NOANSWER|10") in new stack
-- Goto (macro-ael-dial,sw-1-NOANSWER,10)
-- Executing [sw-1-NOANSWER@macro-ael-dial:10] NoOp("SIP/10.0.0.1-00825080", "NOANSWER") in new stack
-- Executing [sw-1-NOANSWER@macro-ael-dial:11] Goto("SIP/10.0.0.1-00825080", "s|4") in new stack
-- Goto (macro-ael-dial,s,4)
-- Executing [s@macro-ael-dial:4] NoOp("SIP/10.0.0.1-00825080", "Finish switch-ael-dial-1") in new stack
-- Executing [s@macro-ael-dial:5] NoOp("SIP/10.0.0.1-00825080", "end dial") in new stack
== Auto fallthrough, channel 'SIP/10.0.0.1-00825080' status is 'NOANSWER'
asterisk*CLI>


А вот на удачное завершение вызова (поговорили и положили трубку) реакция странная - ни NoOp(ANSWER), ни даже NoOp(end dial) не выполняются:

Код:

asterisk*CLI>
-- Executing [2800800@incoming:1] Macro("SIP/10.0.0.1-00838690", "ael-dial|IAX2/800") in new stack
-- Executing [s@macro-ael-dial:1] Set("SIP/10.0.0.1-00838690", "ext=IAX2/800") in new stack
-- Executing [s@macro-ael-dial:2] Dial("SIP/10.0.0.1-00838690", "IAX2/800|20") in new stack
-- Called 800
-- Call accepted by 10.0.0.2 (format ulaw)
-- Format for call is ulaw
-- IAX2/800-2 is ringing
-- IAX2/800-2 answered SIP/10.0.0.1-00838690
[May 5 21:11:34] WARNING[24794]: cdr.c:482 ast_cdr_merge: CDR start disagreement for SIP/10.0.0.1-00838690
[May 5 21:11:34] DEBUG[24777]: chan_iax2.c:6714 socket_process: Ooh, voice format changed to 4
[May 5 21:11:38] DEBUG[24794]: chan_iax2.c:2979 iax2_hangup: We're hanging up IAX2/800-2 with cause 16 now...
-- Hungup 'IAX2/800-2'
== Spawn extension (macro-ael-dial, s, 2) exited non-zero on 'SIP/10.0.0.1-00838690' in macro 'ael-dial'
== Spawn extension (macro-ael-dial, s, 2) exited non-zero on 'SIP/10.0.0.1-00838690'
asterisk*CLI>


Как выполнить определенные действия (NoOp в данном случае) после удачного завершения вызова?
#2

Не доходит до оператора switch из-за ошибок в Dial выше.
#3

Подскажите, плиз, где можно найти руководство по переменным в оон323? Ничего пока найти не удалось Sad В частности, интересует переменная, в которой хранится ip-адрес звонящего (к примеру, в OH323 это ${OH323_RADDR})