[AsteriskBrasil] Bloqueio por numero de origem novamente.

Sylvio Carlos Jollenbeck sylvio.sdr em gmail.com
Quinta Novembro 26 20:50:32 BRST 2009


Dirceu,
          Sua vontande é criar uma blacklist de entrada (from-pstn), vamos
lá.

           Sua tabela no MySQL, deve conter duas colunas (ID, SRC), vou
supor que o nome da sua tabela seja blacklist.

           Seu contexto:
           context vem-pstn {
                   _8XXX =>
                               MYSQL (Connect connid localhost USUARIO SENHA
proibidos);
                               MYSQL (Query resultid ${connid} SELECT src
FROM blacklist WHERE src = '${CALLERID(num)}');
                               MYSQL (Fetch fetchid ${resultid} ACHOU);
                               MYSQL (Disconnect ${connid});
                               /* Utilize o mysql.conf para fazer o CLEAR */

                               if ("${ACHOU}"=="${CALLERID(num)}") {
                                           Noop(Numero presente em
blacklist:::Hangup);
                                           Answer();
                                           Playback(beep);
                                           Hangup();
                                }
                                else {
                                           Noop(Numero nao esta na
blacklist:::Continua);

Dial(${SAIDA1}/${GRUPO2}/${EXTEN},,tT);
                                           Hangup();
                                }
              }

Acho que ficou mais limpo seu codigo....(risos).

abs.

Sylvio Carlos Jollenbeck



2009/11/26 Dilceu Pazinatto <dlpazinatto em gmail.com>

> Olá Pessoal,
>
> Peço ajuda novamente para o meu problema com ação por numero de origem
> (${CALLERID(num)}). Estou fazendo uma consulta no mysql para ver se o
> numero existe ou não, se retornar 0, chamada deve entrar, se voltar
> diferente de 0, deve dar um playback e um hangup. Nos meus testes, que
> tem o numero na tabela (mysql retorna 1), da o playback e desliga
> normal, beleza. porém quando o numero não existe (mysql retorna 0), nao
> volta para fazer o dial para o dgv/g2. Abaixo o meu extensions.ael,
> saidas do CLI e retorno do mysql nos dois casos.
>
> Se alguém puder me dar uma dica de onde estou errado....
>
> Grato
>
> Dilceu
>
>
>
> Chamada de entrada pelo DGV/g1 para DGV/g2 contexto vem-pstn
>
> extensions.ael
>
> globals {
>        SAIDAE1=DGV;
>        GRUPO1=g1;
>        GRUPO2=g2;
> }
>
> macro externas (TERMINACAO, DESTINO) {
>        Set(ORIGEM=${CALLERID(num)});
>        &proibidos (${ORIGEM});
>        Dial(${TERMINACAO}${DESTINO},,tT);
>        Return;
>
> }
>
> macro proibidos (ORIGEM) {
>
>        MYSQL (Connect connid localhost USUARIO SENHA proibidos);
>        MYSQL (Query resultid ${connid} SELECT count(callerid) FROM
> telefones where callerid = '${ORIGEM}');
>        MYSQL (Fetch fetchid ${resultid} ACHOU);
>        MYSQL (Clear ${fetchid});
>        MYSQL (Clear ${resultid});
>        MYSQL (Disconnect ${connid});
>        MYSQL (Clear ${connid});
>                if (${ACHOU} > 0) {
>                        PlayBack (invalid);
>                        HangUp;
>                }
>              Return;
> }
>
>
>
> context vem-pstn {
>        includes {
>                parkedcalls;
>        }
>
>        _80XX => {
>                &externas(${SAIDAE1}/${GRUPO2},${EXTEN});
>                HangUp;
>        }
> }
>
>
> SAIDAS DE CONSOLE
>
>
> CHAMADA COM ORIGEM DE UM NUMERO QUE DEVE SER PERMITIDO. (4988178028)
>
>
>    -- Ringing on port 3 - callstate=0
>    -- Answering port 3
>    -- Executing [8023 em vem-pstn:1] Macro("DGV/3",
> "externas|DGV/g2|8023") in new stack
>    -- Executing [s em macro-externas:1] Set("DGV/3", "TERMINACAO=DGV/g2")
> in new stack
>    -- Executing [s em macro-externas:2] Set("DGV/3", "DESTINO=8023") in
> new stack
>    -- Executing [s em macro-externas:3] Set("DGV/3", "ORIGEM=4988178028")
> in new stack
>    -- Executing [s em macro-externas:4] Macro("DGV/3",
> "proibidos|4988178028") in new stack
>    -- Executing [s em macro-proibidos:1] Set("DGV/3", "ORIGEM=4988178028")
> in new stack
>    -- Executing [s em macro-proibidos:2] MYSQL("DGV/3", "Connect connid
> localhost USUARIO SENHA proibidos") in new stack
>    -- Executing [s em macro-proibidos:3] MYSQL("DGV/3", "Query resultid 1
> SELECT count(callerid) FROM telefones where callerid = '4988178028'") in
> new stack
>    -- Executing [s em macro-proibidos:4] MYSQL("DGV/3", "Fetch fetchid 2
> ACHOU") in new stack
>    -- Executing [s em macro-proibidos:5] MYSQL("DGV/3", "Clear 1") in new
> stack
> [Nov 26 00:08:43] WARNING[19579]: app_addon_sql_mysql.c:180
> find_identifier: Identifier 1, identifier_type 2 not found in identifier
> list
> [Nov 26 00:08:43] WARNING[19579]: app_addon_sql_mysql.c:420
> aMYSQL_clear: Invalid result identifier 1 passed in aMYSQL_clear
>    -- Executing [s em macro-proibidos:6] MYSQL("DGV/3", "Clear 2") in new
> stack
>    -- Executing [s em macro-proibidos:7] MYSQL("DGV/3", "Disconnect 1") in
> new stack
>    -- Executing [s em macro-proibidos:8] MYSQL("DGV/3", "Clear 1") in new
> stack
> [Nov 26 00:08:43] WARNING[19579]: app_addon_sql_mysql.c:180
> find_identifier: Identifier 1, identifier_type 2 not found in identifier
> list
> [Nov 26 00:08:43] WARNING[19579]: app_addon_sql_mysql.c:420
> aMYSQL_clear: Invalid result identifier 1 passed in aMYSQL_clear
>    -- Executing [s em macro-proibidos:9] GotoIf("DGV/3", "0?10:12") in new
> stack
>    -- Goto (macro-proibidos,s,12)
>    -- Executing [s em macro-proibidos:12] NoOp("DGV/3", "Finish
> if-proibidos-17") in new stack
>    -- Executing [s em macro-proibidos:13] Return("DGV/3", "") in new stack
> [Nov 26 00:08:43] ERROR[19579]: app_stack.c:86 return_exec: Return
> without Gosub: stack is empty
>  == Spawn extension (vem-pstn, 8023, 1) exited non-zero on 'DGV/3'
> [Nov 26 00:08:43] NOTICE[19579]: chan_dgv.c:14951 dgv_hangup: Calling
> dg_HangUp on port 3
> gw-voz-coperio*CLI>
>
> SAIDA CONSOLE MYSQL
> 091126 00:08:42      38 Connect     root em localhost on proibidos
>                     38 Query       SELECT count(callerid) FROM
> telefones where callerid = '4988178028'
>                     38 Quit
>
> Resultado do mysql digitando o comando na linha:
>
> mysql>  SELECT count(callerid) FROM telefones where callerid =
> '4988178028';
> +-----------------+
> | count(callerid) |
> +-----------------+
> |               0 |
> +-----------------+
> 1 row in set (0.00 sec)
>
>
>
>
>
> CHAMADA DE UM NUMERO QUE DEVE SER NEGADO
>
>  -- Ringing on port 4 - callstate=0
>    -- Answering port 4
>    -- Executing [8023 em vem-pstn:1] Macro("DGV/4",
> "externas|DGV/g2|8023") in new stack
>    -- Executing [s em macro-externas:1] Set("DGV/4", "TERMINACAO=DGV/g2")
> in new stack
>    -- Executing [s em macro-externas:2] Set("DGV/4", "DESTINO=8023") in
> new stack
>    -- Executing [s em macro-externas:3] Set("DGV/4", "ORIGEM=4935223153")
> in new stack
>    -- Executing [s em macro-externas:4] Macro("DGV/4",
> "proibidos|4935223153") in new stack
>    -- Executing [s em macro-proibidos:1] Set("DGV/4", "ORIGEM=4935223153")
> in new stack
>    -- Executing [s em macro-proibidos:2] MYSQL("DGV/4", "Connect connid
> localhost USUARIO SENHA proibidos") in new stack
>    -- Executing [s em macro-proibidos:3] MYSQL("DGV/4", "Query resultid 1
> SELECT count(callerid) FROM telefones where callerid = '4935223153'") in
> new stack
>    -- Executing [s em macro-proibidos:4] MYSQL("DGV/4", "Fetch fetchid 2
> ACHOU") in new stack
>    -- Executing [s em macro-proibidos:5] MYSQL("DGV/4", "Clear 1") in new
> stack
> [Nov 26 00:10:11] WARNING[19595]: app_addon_sql_mysql.c:180
> find_identifier: Identifier 1, identifier_type 2 not found in identifier
> list
> [Nov 26 00:10:11] WARNING[19595]: app_addon_sql_mysql.c:420
> aMYSQL_clear: Invalid result identifier 1 passed in aMYSQL_clear
>    -- Executing [s em macro-proibidos:6] MYSQL("DGV/4", "Clear 2") in new
> stack
>    -- Executing [s em macro-proibidos:7] MYSQL("DGV/4", "Disconnect 1") in
> new stack
>    -- Executing [s em macro-proibidos:8] MYSQL("DGV/4", "Clear 1") in new
> stack
> [Nov 26 00:10:11] WARNING[19595]: app_addon_sql_mysql.c:180
> find_identifier: Identifier 1, identifier_type 2 not found in identifier
> list
> [Nov 26 00:10:11] WARNING[19595]: app_addon_sql_mysql.c:420
> aMYSQL_clear: Invalid result identifier 1 passed in aMYSQL_clear
>    -- Executing [s em macro-proibidos:9] GotoIf("DGV/4", "1?10:12") in new
> stack
>    -- Goto (macro-proibidos,s,10)
>    -- Executing [s em macro-proibidos:10] Playback("DGV/4", "invalid") in
> new stack
>    -- <DGV/4> Playing 'invalid' (language 'pt_BR')
> Really destroying SIP dialog
> '77507726007f5dfd0c56def543dbafb9 em 192.168.1.254' Method: OPTIONS
> [Nov 26 00:10:12] NOTICE[2768]: chan_dgv.c:11956 event_handler:
> dialplan_echo_thread Created(3) - port 4
>  == Spawn extension (vem-pstn, 8023, 1) exited non-zero on 'DGV/4'
> [Nov 26 00:10:14] NOTICE[19595]: chan_dgv.c:14951 dgv_hangup: Calling
> dg_HangUp on port 4
> Really destroying SIP dialog
> '00942c961a047f620d296f3311814433 em 192.168.1.254' Method: OPTIONS
> gw-voz-coperio*CLI>
>
> SAIDA CONSOLE MYSQL
> 091126 00:10:14      39 Connect     root em localhost on proibidos
>                     39 Query       SELECT count(callerid) FROM
> telefones where callerid = '4935223153'
>             39 Quit
>
>
> Resultado do mysql digitando o comando na linha:
>
> mysql>  SELECT count(callerid) FROM telefones where callerid =
> '4935223153';
> +-----------------+
> | count(callerid) |
> +-----------------+
> |               1 |
> +-----------------+
> 1 row in set (0.00 sec)
>
> Estrutura da  tabela proibidos:
>
> mysql> use proibidos;
> Reading table information for completion of table and column names
> You can turn off this feature to get a quicker startup with -A
>
> Database changed
> mysql> show tables;
> +---------------------+
> | Tables_in_proibidos |
> +---------------------+
> | telefones           |
> +---------------------+
> 1 row in set (0.00 sec)
>
> mysql> desc telefones;
> +----------+-------------+------+-----+---------+----------------+
> | Field    | Type        | Null | Key | Default | Extra          |
> +----------+-------------+------+-----+---------+----------------+
> | id       | int(11)     | NO   | PRI | NULL    | auto_increment |
> | callerid | varchar(20) | NO   |     | NULL    |                |
> +----------+-------------+------+-----+---------+----------------+
> 2 rows in set (0.00 sec)
>
>
>
> _______________________________________________
> A Redfone é líder no fornecimento de bridges TDMoE &lt;-> E1
> - Valor similar ao de placas E1 PCI;
> - Não há problemas de compatibilidade com barramento PCI;
> - Possibilitam a construção de soluções de alta disponibilidade(dois
> servidores compartilham o mesmo E1)
> Conheça mais sobre este produto em www.red-fone.com
> _______________________________________________
> Lista de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>



-- 
Sylvio Carlos Jollenbeck Borin
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20091126/7064c1e8/attachment-0001.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil