[AsteriskBrasil] Bloqueio por numero de origem novamente.

Dilceu Pazinatto dlpazinatto em gmail.com
Quinta Novembro 26 00:37:40 BRST 2009


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)





Mais detalhes sobre a lista de discussão AsteriskBrasil