[AsteriskBrasil] Condicional com máscara.

Junior Polegato - Asterisk asterisk em juniorpolegato.com.br
Segunda Junho 21 15:54:54 BRT 2010


Em 21-06-2010 10:53, Rodrigo Lang escreveu:
> Bom dia lista.
> Eu necessito fazer um filtro por estado em que o cliente está ligando, 
> isso pelo callerid. Alguem aqui já conseguiu realizar um condicional 
> ou loop com uma máscara de números ou algo do gênero? Por exemplo:
> if ( "${CALLERID(num)}" == "41XXXXXXXX" ){
> }
> Obs> Eu sei que existem maneiras diferentes de se fazer, como por 
> exemplo utilizando Goto().

Olá,

         Comigo funciona bem, veja um exemplo mais abaixo. Quanto à usar 
com if, tem que selecionar partes, isto é, "${CALLERID(num):0:2}" == 
"41" por exemplo. Uma outra possibilidade é verificar se está chegando 
algo condizente no CALLERID.

[]'s
         Junior Polegato




context conditional {
     _XXXXXXXXXX => {
          switch (${EXTEN}) {
               pattern 1XXXXXXXXX:
                    NoOp(====================> Ligou para ** SP ** -> 
${EXTEN} <-);
                    break;
               pattern 2XXXXXXXXX:
                    NoOp(====================> Ligou para ** RJ ** -> 
${EXTEN} <-);
                    break;
               pattern 41XXXXXXXX:
                    NoOp(====================> Ligou para ** 41 ** -> 
${EXTEN} <-);
                    break;
               default:
                    NoOp(====================> Ligou para um local não 
tratado...);
          };
     };
};


*CLI> console dial 4112341234 em conditional
   == Console is full duplex
[Jun 21 15:42:26] NOTICE[15206]: console_video.c:133 
console_video_start: voice only, console video support not present
     -- Executing [4112341234 em conditional:1] MSet("Console/dsp", 
"~~EXTEN~~=4112341234") in new stack
     -- Executing [4112341234 em conditional:2] Goto("Console/dsp", 
"sw-28-4112341234,10") in new stack
     -- Goto (conditional,sw-28-4112341234,10)
     -- Executing [sw-28-4112341234 em conditional:10] NoOp("Console/dsp", 
"====================> Ligou para ** 41 ** -> 4112341234 <-") in new stack
     -- Executing [sw-28-4112341234 em conditional:11] Goto("Console/dsp", 
"_XXXXXXXXXX,3") in new stack
     -- Goto (conditional,_XXXXXXXXXX,3)
     -- Executing [_XXXXXXXXXX em conditional:3] NoOp("Console/dsp", 
"Finish switch-conditional-28") in new stack
     -- Auto fallthrough, channel 'Console/dsp' status is 'UNKNOWN'
<< Hangup on console >>

*CLI> console dial 2112341234 em conditional
   == Console is full duplex
[Jun 21 15:42:33] NOTICE[15206]: console_video.c:133 
console_video_start: voice only, console video support not present
     -- Executing [2112341234 em conditional:1] MSet("Console/dsp", 
"~~EXTEN~~=2112341234") in new stack
     -- Executing [2112341234 em conditional:2] Goto("Console/dsp", 
"sw-28-2112341234,10") in new stack
     -- Goto (conditional,sw-28-2112341234,10)
     -- Executing [sw-28-2112341234 em conditional:10] NoOp("Console/dsp", 
"====================> Ligou para ** RJ ** -> 2112341234 <-") in new stack
     -- Executing [sw-28-2112341234 em conditional:11] Goto("Console/dsp", 
"_XXXXXXXXXX,3") in new stack
     -- Goto (conditional,_XXXXXXXXXX,3)
     -- Executing [_XXXXXXXXXX em conditional:3] NoOp("Console/dsp", 
"Finish switch-conditional-28") in new stack
     -- Auto fallthrough, channel 'Console/dsp' status is 'UNKNOWN'
<< Hangup on console >>

*CLI> console dial 1112341234 em conditional
   == Console is full duplex
[Jun 21 15:42:36] NOTICE[15206]: console_video.c:133 
console_video_start: voice only, console video support not present
     -- Executing [1112341234 em conditional:1] MSet("Console/dsp", 
"~~EXTEN~~=1112341234") in new stack
     -- Executing [1112341234 em conditional:2] Goto("Console/dsp", 
"sw-28-1112341234,10") in new stack
     -- Goto (conditional,sw-28-1112341234,10)
     -- Executing [sw-28-1112341234 em conditional:10] NoOp("Console/dsp", 
"====================> Ligou para ** SP ** -> 1112341234 <-") in new stack
     -- Executing [sw-28-1112341234 em conditional:11] Goto("Console/dsp", 
"_XXXXXXXXXX,3") in new stack
     -- Goto (conditional,_XXXXXXXXXX,3)
     -- Executing [_XXXXXXXXXX em conditional:3] NoOp("Console/dsp", 
"Finish switch-conditional-28") in new stack
     -- Auto fallthrough, channel 'Console/dsp' status is 'UNKNOWN'
<< Hangup on console >>

*CLI> console dial 8112341234 em conditional
   == Console is full duplex
[Jun 21 15:42:39] NOTICE[15206]: console_video.c:133 
console_video_start: voice only, console video support not present
     -- Executing [8112341234 em conditional:1] MSet("Console/dsp", 
"~~EXTEN~~=8112341234") in new stack
     -- Executing [8112341234 em conditional:2] Goto("Console/dsp", 
"sw-28-8112341234,10") in new stack
     -- Goto (conditional,sw-28-8112341234,10)
     -- Executing [sw-28-8112341234 em conditional:10] NoOp("Console/dsp", 
"====================> Ligou para um local não tratado...") in new stack
     -- Executing [sw-28-8112341234 em conditional:11] Goto("Console/dsp", 
"_XXXXXXXXXX,3") in new stack
     -- Goto (conditional,_XXXXXXXXXX,3)
     -- Executing [_XXXXXXXXXX em conditional:3] NoOp("Console/dsp", 
"Finish switch-conditional-28") in new stack
     -- Auto fallthrough, channel 'Console/dsp' status is 'UNKNOWN'
<< Hangup on console >>

*CLI>



Mais detalhes sobre a lista de discussão AsteriskBrasil