[AsteriskBrasil] Erro....

Alexandre alexandrekeller em gmail.com
Quinta Maio 29 15:43:39 BRT 2008


Vamos por partes, o ChanIsAvail seta três variavaies: AVAILCHAN,
AVAILORIGCHAN e AVAILSTATUS, então vc deve checar o valor do AVAILSTATUS
conforme a documentação da aplicação. No seu dialplan vc está checando: exten
=> s,4,GotoIf($[${AVAILCHAN} = 0]?5:7), esta´variável irá retornar a
identificação do canal de comunicação disponível.

Espero ter ajudado. Boa sorte

*ChanIsAvail()* sets the following channel variables:
  ${AVAILCHAN} The name of the accessible channel, including the session
number of the call. ${AVAILORIGCHAN} The canonical channel name (*i.e.*, the
channel name without session number). ${AVAILSTATUS}

Status code of the channel:
 AST_DEVICE_UNKNOWN (0) Status of the channel is unknown. It is a valid
channel, but we don't know about its state. AST_DEVICE_NOT_INUSE (1) The
channel is not in use. AST_DEVICE_IN_USE (2) The channel is in use.
AST_DEVICE_BUSY (3) The channel is busy. AST_DEVICE_INVALID (4) The channel
is unknown. AST_DEVICE_UNAVAILABLE (5) The channel is not available and not
registered. AST_DEVICE_RINGING (6) The channel is ringing.


On Thu, May 29, 2008 at 10:36 AM, Telecom - UNION <telecom em union.com.br>
wrote:

>  Bom dia lista.
> Sera que alguém poderia me ajudar com o extensions abaixo.
> Preciso que o *, antes de direcionar a ligação para o ramal, verifique se o
> mesmo esta disponivel e se é SIP ou IAX.
> Consegui que ele verifique se é SIP ou IAX mas tem hora que não funciona.
>
> [macro-dial]
> exten =>
> s,1,MixMonitor(${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CONTEXTO}-${CALLERID(num)}-${NUM}.wav49)
>
> exten => s,2,ChanIsAvail(IAX2/${NUM}&SIP/${NUM},s)
> exten => s,3,NoOp(AVAIL -> ${AVAILCHAN})
> exten => s,4,GotoIf($[${AVAILCHAN} = 0]?5:7)
>
> exten => s,5,Dial(SIP/${NUM},15,tTw)
> exten => s,6,Goto(s-${DIALSTATUS},1)
>
> exten => s,7,Dial(IAX2/${NUM},15,tTw)
> exten => s,8,Goto(s-${DIALSTATUS},1)
>
> exten => s-CHANUNAVAIL,1,Macro(${GRUPO},s)
> exten => s-CONGESTION,1,Macro(${GRUPO},s)
> exten => s-BUSY,1,Macro(${GRUPO},s)
> exten => s-NOANSWER,1,Macro(${GRUPO},s)
> exten => s-CANCEL,1,Macro(${GRUPO},s)
> exten => s-HANGUP,1,Macro(${GRUPO},s)
> exten => s,20,Hangup
>
>
>
>
>
>
> ERRO NR.01
>
>
>     -- Executing [701 em ti:1] Goto("SIP/708-adb25bf0", "union|701|1") in new
> stack
>     -- Goto (union,701,1)
>     -- Executing [701 em union:1] Set("SIP/708-adb25bf0", "NAME=708") in new
> stack
>     -- Executing [701 em union:2] Set("SIP/708-adb25bf0", "NUM=701") in new
> stack
>     -- Executing [701 em union:3] Set("SIP/708-adb25bf0", "CONTEXTO=union")
> in new stack
>     -- Executing [701 em union:4] GotoIf("SIP/708-adb25bf0", "0?5:7") in new
> stack
>     -- Goto (union,701,7)
>     -- Executing [701 em union:7] GotoIf("SIP/708-adb25bf0", "0?8:10") in new
> stack
>     -- Goto (union,701,10)
>     -- Executing [701 em union:10] GotoIf("SIP/708-adb25bf0", "1?11:13") in
> new stack
>     -- Goto (union,701,11)
>     -- Executing [701 em union:11] Set("SIP/708-adb25bf0", "GRUPO=grupoti")
> in new stack
>     -- Executing [701 em union:12] Goto("SIP/708-adb25bf0", "s(iax)|1") in
> new stack
>     -- Goto (union,s(iax),1)
>     -- Executing [s(iax)@union:1] Macro("SIP/708-adb25bf0", "sigame|s") in
> new stack
>     -- Executing [s em macro-sigame:1] Set("SIP/708-adb25bf0", "TEMP=") in
> new stack
>     -- Executing [s em macro-sigame:2] Set("SIP/708-adb25bf0", "NUM1=701") in
> new stack
>     -- Executing [s em macro-sigame:3] Set("SIP/708-adb25bf0", "TAM=0") in
> new stack
>     -- Executing [s em macro-sigame:4] GotoIf("SIP/708-adb25bf0",
> "1?nsigame:proximo") in new stack
>     -- Goto (macro-sigame,s,12)
>     -- Executing [s em macro-sigame:12] Macro("SIP/708-adb25bf0",
> "dialiax|701") in new stack
>     -- Executing [s em macro-dialiax:1] MixMonitor("SIP/708-adb25bf0",
> "20080529-101859-union-708-701.wav49") in new stack
>     -- Executing [s em macro-dialiax:2] ChanIsAvail("SIP/708-adb25bf0",
> "IAX2/701&SIP/701|s") in new stack
>     -- Executing [s em macro-dialiax:3] NoOp("SIP/708-adb25bf0", "AVAIL -> ")
> in new stack
> *[May 29 10:18:59] WARNING[22761]: ast_expr2.fl:398 ast_yyerror:
> ast_yyerror():  syntax error: syntax error, unexpected '=', expecting $end;
> Input:
>  = 0
>  ^
> [May 29 10:18:59] WARNING[22761]: ast_expr2.fl:402 ast_yyerror: If you have
> questions, please refer to doc/channelvariables.txt in the asterisk source.
> *    -- Executing [s em macro-dialiax:4] GotoIf("SIP/708-adb25bf0", "?5:7")
> in new stack
>     -- Goto (macro-dialiax,s,7)
>     -- Executing [s em macro-dialiax:7] Dial("SIP/708-adb25bf0",
> "IAX2/701|15|tTw") in new stack
> [May 29 10:18:59] WARNING[22761]: app_dial.c:1106 dial_exec_full: Unable to
> create channel of type 'IAX2' (cause 3 - No route to destination)
>   == Everyone is busy/congested at this time (1:0/0/1)
>     -- Executing [s em macro-dialiax:8] Goto("SIP/708-adb25bf0",
> "s-CHANUNAVAIL|1") in new stack
>     -- Goto (macro-dialiax,s-CHANUNAVAIL,1)
>     -- Executing [s-CHANUNAVAIL em macro-dialiax:1] Macro("SIP/708-adb25bf0",
> "grupoti|s") in new stack
>     -- Executing [s em macro-grupoti:1] Dial("SIP/708-adb25bf0",
> "SIP/700&SIP/701&SIP/702&SIP/703&SIP/704&SIP/705&SIP/706&SIP/707&SIP/708|10|tTw")
> in new stack
>
> No log apresentado, o ramal 701 estava on, e mesmo assim o erro
> aconteceu.Isso ocorre ao acaso.
>
> ERRO NR.02
>
>  -- Executing [701 em ti:1] Goto("SIP/708-007ce5b0", "union|701|1") in new
> stack
>     -- Goto (union,701,1)
>     -- Executing [701 em union:1] Set("SIP/708-007ce5b0", "NAME=708") in new
> stack
>     -- Executing [701 em union:2] Set("SIP/708-007ce5b0", "NUM=701") in new
> stack
>     -- Executing [701 em union:3] Set("SIP/708-007ce5b0", "CONTEXTO=union")
> in new stack
>     -- Executing [701 em union:4] GotoIf("SIP/708-007ce5b0", "0?5:7") in new
> stack
>     -- Goto (union,701,7)
>     -- Executing [701 em union:7] GotoIf("SIP/708-007ce5b0", "0?8:10") in new
> stack
>     -- Goto (union,701,10)
>     -- Executing [701 em union:10] GotoIf("SIP/708-007ce5b0", "1?11:13") in
> new stack
>     -- Goto (union,701,11)
>     -- Executing [701 em union:11] Set("SIP/708-007ce5b0", "GRUPO=grupoti")
> in new stack
>     -- Executing [701 em union:12] Goto("SIP/708-007ce5b0", "s(iax)|1") in
> new stack
>     -- Goto (union,s(iax),1)
>     -- Executing [s(iax)@union:1] Macro("SIP/708-007ce5b0", "sigame|s") in
> new stack
>     -- Executing [s em macro-sigame:1] Set("SIP/708-007ce5b0", "TEMP=") in
> new stack
>     -- Executing [s em macro-sigame:2] Set("SIP/708-007ce5b0", "NUM1=701") in
> new stack
>     -- Executing [s em macro-sigame:3] Set("SIP/708-007ce5b0", "TAM=0") in
> new stack
>     -- Executing [s em macro-sigame:4] GotoIf("SIP/708-007ce5b0",
> "1?nsigame:proximo") in new stack
>     -- Goto (macro-sigame,s,12)
>     -- Executing [s em macro-sigame:12] Macro("SIP/708-007ce5b0",
> "dialiax|701") in new stack
>     -- Executing [s em macro-dialiax:1] MixMonitor("SIP/708-007ce5b0",
> "20080529-102319-union-708-701.wav49") in new stack
>     -- Executing [s em macro-dialiax:2] ChanIsAvail("SIP/708-007ce5b0",
> "IAX2/701&SIP/701|s") in new stack
>   == Begin MixMonitor Recording SIP/708-007ce5b0
>     -- Executing [s em macro-dialiax:3] NoOp("SIP/708-007ce5b0", "AVAIL ->
> SIP/701-00794300") in new stack
> [May 29 10:23:19] WARNING[23147]: ast_expr2.y:893 op_div: non-numeric
> argument
>    * -- Executing [s em macro-dialiax:4] GotoIf("SIP/708-007ce5b0", "0?5:7")
> in new stack*
>     -- Goto (macro-dialiax,s,7)
>     -- Executing [s em macro-dialiax:7] Dial("SIP/708-007ce5b0", "
> IAX2/701|15|tTw") in new stack
> [May 29 10:23:19] WARNING[23147]: app_dial.c:1106 dial_exec_full: Unable to
> create channel of type 'IAX2' (cause 3 - No route to destination)
>   == Everyone is busy/congested at this time (1:0/0/1)
>     -- Executing [s em macro-dialiax:8] Goto("SIP/708-007ce5b0",
> "s-CHANUNAVAIL|1") in new stack
>     -- Goto (macro-dialiax,s-CHANUNAVAIL,1)
>     -- Executing [s-CHANUNAVAIL em macro-dialiax:1] Macro("SIP/708-007ce5b0",
> "grupoti|s") in new stack
>     -- Executing [s em macro-grupoti:1] Dial("SIP/708-007ce5b0",
> "SIP/700&SIP/701&SIP/702&SIP/703&SIP/704&SIP/705&SIP/706&SIP/707&SIP/708|10|tTw")
> in new stack
>  Aqui o erro acontece porque o * interpreta o canal como IAX sendo que é
> SIP.
>
> Quando tudo sai bem (eu acho)
>
>     -- Executing [701 em ti:1] Goto("SIP/708-00851ed0", "union|701|1") in new
> stack
>     -- Goto (union,701,1)
>     -- Executing [701 em union:1] Set("SIP/708-00851ed0", "NAME=708") in new
> stack
>     -- Executing [701 em union:2] Set("SIP/708-00851ed0", "NUM=701") in new
> stack
>     -- Executing [701 em union:3] Set("SIP/708-00851ed0", "CONTEXTO=union")
> in new stack
>     -- Executing [701 em union:4] GotoIf("SIP/708-00851ed0", "0?5:7") in new
> stack
>     -- Goto (union,701,7)
>     -- Executing [701 em union:7] GotoIf("SIP/708-00851ed0", "0?8:10") in new
> stack
>     -- Goto (union,701,10)
>     -- Executing [701 em union:10] GotoIf("SIP/708-00851ed0", "1?11:13") in
> new stack
>     -- Goto (union,701,11)
>     -- Executing [701 em union:11] Set("SIP/708-00851ed0", "GRUPO=grupoti")
> in new stack
>     -- Executing [701 em union:12] Goto("SIP/708-00851ed0", "s(iax)|1") in
> new stack
>     -- Goto (union,s(iax),1)
>     -- Executing [s(iax)@union:1] Macro("SIP/708-00851ed0", "sigame|s") in
> new stack
>     -- Executing [s em macro-sigame:1] Set("SIP/708-00851ed0", "TEMP=") in
> new stack
>     -- Executing [s em macro-sigame:2] Set("SIP/708-00851ed0", "NUM1=701") in
> new stack
>     -- Executing [s em macro-sigame:3] Set("SIP/708-00851ed0", "TAM=0") in
> new stack
>     -- Executing [s em macro-sigame:4] GotoIf("SIP/708-00851ed0",
> "1?nsigame:proximo") in new stack
>     -- Goto (macro-sigame,s,12)
>     -- Executing [s em macro-sigame:12] Macro("SIP/708-00851ed0",
> "dialiax|701") in new stack
>     -- Executing [s em macro-dialiax:1] MixMonitor("SIP/708-00851ed0",
> "20080529-102537-union-708-701.wav49") in new stack
>     -- Executing [s em macro-dialiax:2] ChanIsAvail("SIP/708-00851ed0",
> "IAX2/701&SIP/701|s") in new stack
>   == Begin MixMonitor Recording SIP/708-00851ed0
>     -- Executing [s em macro-dialiax:3] NoOp("SIP/708-00851ed0", "AVAIL ->
> SIP/701-007000b0") in new stack
> *[May 29 10:25:37] WARNING[23360]: ast_expr2.y:893 op_div: non-numeric
> argument
> [May 29 10:25:37] WARNING[23360]: ast_expr2.y:755 op_minus: non-numeric
> argument
> *    -- Executing [s em macro-dialiax:4] GotoIf("SIP/708-00851ed0", "1?5:7")
> in new stack
>     -- Goto (macro-dialiax,s,5)
>     -- Executing [s em macro-dialiax:5] Dial("SIP/708-00851ed0",
> "SIP/701|15|tTw") in new stack
>     -- Called 701
> Aqui é quando a operação é um sucesso, porém tem dois WARNING que não sei
> como resolve-lo.
>
>    *Pereira, Sidnei*
> Tecnologia da Informação / Telecom
> *UNION Crédito Fácil e Serviços Ltda* - C Certeza de Sucesso
> O(17) 8124 3954 - ((17) 4009 6767 - * telecom em union.com.br
> ------------------------------
>
> _______________________________________________
> Compre uma camiseta da AsteriskBrasil.org!
>            http://www.voipmania.com.br
>                == VoIPMania.com.br ==
>
> _______________________________________________
> Lista de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20080529/bf2c919c/attachment-0001.htm 


More information about the AsteriskBrasil mailing list