<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Olá Silvio,<br>
<br>
A função que vc passou, funcionou certinho.. mas estou tendo problemas
com as macros.<br>
só coloquei a linha Noop(Resultado de ACHOU = ${ACHOU}); para saber
qual é o resultado do select<br>
<br>
Ficou assim:<br>
context vem-pstn {<br>
_8XXX => {<br>
MYSQL (Connect connid localhost USUARIO
SENHA proibidos);<br>
MYSQL (Query resultid ${connid} SELECT
callerid FROM telefones WHERE callerid = '${CALLERID(num)}');<br>
MYSQL (Fetch foundRow ${resultid}
ACHOU);<br>
MYSQL (Disconnect ${connid});<br>
/* Utilize o mysql.conf para fazer o
CLEAR */<br>
<br>
if ("${ACHOU}"=="${CALLERID(num)}") {<br>
Noop(Numero presente em
blacklist:::Hangup);<br>
Noop(Resuldado de ACHOU =
${ACHOU});<br>
Answer();<br>
Playback(invalid);<br>
Hangup();<br>
}<br>
else {<br>
Noop(Numero nao esta na
blacklist:::Continua);<br>
Noop(Resultado de ACHOU =
${ACHOU});<br>
&externas(${SAIDAE1}/${GRUPO2},/,${EXTEN});<br>
Hangup();<br>
}<br>
}<br>
}<br>
<br>
mysql.conf<br>
[general]<br>
autoclear=yes<br>
<br>
macro externas<br>
macro externas (TERMINACAO, PREFIXO, DESTINO) {<br>
Set(ORIGEM=${CALLERID(num)});<br>
// &gravachamada(${ORIGEM},${DESTINO});<br>
Dial(${TERMINACAO}${PREFIXO}${DESTINO},,tT);<br>
Return;<br>
<br>
}<br>
<br>
macro gravachamada (ORIGEM, DESTINO) {<br>
Set(NOMEARQUIVO=${ORIGEM}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${DESTINO}.WAV);<br>
Set(MIXMONITOR_FILENAME=${NOMEARQUIVO});<br>
MixMonitor(${MIXMONITOR_FILENAME});<br>
Return;<br>
}<br>
<br>
O que acontece é que vai para a macro externas, e quando eu tiro o
comentario da linha &gravachamada(${ORIGEM},${DESTINO}); para
começar a gravar, nenhuma chamada entra, no cli aparece a mensagem: <br>
<br>
<br>
-- Ringing on port 4 - callstate=0<br>
-- Answering port 4<br>
-- Executing [8000@vem-pstn:1] MYSQL("DGV/4", "Connect connid
localhost USUARIO SENHA proibidos") in new stack<br>
-- Executing [8000@vem-pstn:2] MYSQL("DGV/4", "Query resultid 73
SELECT callerid FROM telefones WHERE callerid = '4935541392'") in new
stack<br>
-- Executing [8000@vem-pstn:3] MYSQL("DGV/4", "Fetch foundRow 74
ACHOU") in new stack<br>
-- Executing [8000@vem-pstn:4] MYSQL("DGV/4", "Disconnect 73") in
new stack<br>
-- Executing [8000@vem-pstn:5] GotoIf("DGV/4", "0?6:12") in new
stack<br>
-- Goto (vem-pstn,8000,12)<br>
-- Executing [8000@vem-pstn:12] NoOp("DGV/4", "Numero nao esta na
blacklist:::Continua") in new stack<br>
-- Executing [8000@vem-pstn:13] NoOp("DGV/4", "Resultado de ACHOU =
") in new stack<br>
-- Executing [8000@vem-pstn:14] Macro("DGV/4",
"externas|DGV/g2|/|8000") in new stack<br>
-- Executing [s@macro-externas:1] Set("DGV/4", "TERMINACAO=DGV/g2")
in new stack<br>
-- Executing [s@macro-externas:2] Set("DGV/4", "PREFIXO=/") in new
stack<br>
-- Executing [s@macro-externas:3] Set("DGV/4", "DESTINO=8000") in
new stack<br>
-- Executing [s@macro-externas:4] Set("DGV/4", "ORIGEM=4935541392")
in new stack<br>
-- Executing [s@macro-externas:5] Macro("DGV/4",
"gravachamada|4935541392|8000") in new stack<br>
-- Executing [s@macro-gravachamada:1] Set("DGV/4",
"ORIGEM=4935541392") in new stack<br>
-- Executing [s@macro-gravachamada:2] Set("DGV/4", "DESTINO=8000")
in new stack<br>
-- Executing [s@macro-gravachamada:3] Set("DGV/4",
"NOMEARQUIVO=4935541392-20091127-112156-8000.WAV") in new stack<br>
-- Executing [s@macro-gravachamada:4] Set("DGV/4",
"MIXMONITOR_FILENAME=4935541392-20091127-112156-8000.WAV") in new stack<br>
-- Executing [s@macro-gravachamada:5] MixMonitor("DGV/4",
"4935541392-20091127-112156-8000.WAV") in new stack<br>
== Begin MixMonitor Recording DGV/4<br>
-- Executing [s@macro-gravachamada:6] Return("DGV/4", "") in new
stack<br>
[Nov 27 11:21:56] ERROR[28447]: app_stack.c:86 return_exec: Return
without Gosub: stack is empty<br>
== Spawn extension (vem-pstn, 8000, 14) exited non-zero on 'DGV/4'<br>
[Nov 27 11:21:56] NOTICE[28447]: chan_dgv.c:14951 dgv_hangup: Calling
dg_HangUp on port 4<br>
== End MixMonitor Recording DGV/4<br>
gw-voz-coperio*CLI><br>
<br>
Ou sejá, esta achamando a macro externas e dentro da externas quando
chama a gravachamada da erro<br>
<br>
Executing [s@macro-gravachamada:6] Return("DGV/4", "") in new stack<br>
Nov 27 11:21:56] ERROR[28447]: app_stack.c:86 return_exec: Return
without Gosub: stack is empty<br>
== Spawn extension (vem-pstn, 8000, 14) exited non-zero on 'DGV/4'<br>
[Nov 27 11:21:56] NOTICE[28447]: chan_dgv.c:14951 dgv_hangup: Calling
dg_HangUp on port 4<br>
== End MixMonitor Recording DGV/4<br>
<br>
Alguém sabe o que posso fazer para resolver isso?<br>
<br>
Obrigado<br>
<br>
Dilceu<br>
<br>
Sylvio Carlos Jollenbeck escreveu:
<blockquote
cite="mid:9d33549a0911261450q5c9306a5n906abcfcd2d95584@mail.gmail.com"
type="cite">Dirceu,<br>
Sua vontande é criar uma blacklist de entrada (from-pstn),
vamos lá.<br>
<br>
Sua tabela no MySQL, deve conter duas colunas (ID, SRC), vou
supor que o nome da sua tabela seja blacklist.<br>
<br>
Seu contexto:<br>
context vem-pstn {<br>
_8XXX =><br>
MYSQL (Connect connid localhost USUARIO
SENHA proibidos);<br>
MYSQL (Query resultid ${connid} SELECT
src FROM blacklist WHERE src = '${CALLERID(num)}');<br>
MYSQL (Fetch fetchid ${resultid} ACHOU);<br>
MYSQL (Disconnect ${connid});<br>
/* Utilize o mysql.conf para fazer o
CLEAR */<br>
<br>
if ("${ACHOU}"=="${CALLERID(num)}") {<br>
Noop(Numero presente em
blacklist:::Hangup);<br>
Answer();<br>
Playback(beep);<br>
Hangup();<br>
}<br>
else {<br>
Noop(Numero nao esta na
blacklist:::Continua);<br>
Dial(${SAIDA1}/${GRUPO2}/${EXTEN},,tT);<br>
Hangup();<br>
}<br>
}<br>
<br>
Acho que ficou mais limpo seu codigo....(risos).<br>
<br>
abs.<br>
<br>
Sylvio Carlos Jollenbeck<br>
<br>
<br>
<br>
<div class="gmail_quote">2009/11/26 Dilceu Pazinatto <span dir="ltr"><<a
moz-do-not-send="true" href="mailto:dlpazinatto@gmail.com">dlpazinatto@gmail.com</a>></span><br>
<blockquote class="gmail_quote"
style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Olá
Pessoal,<br>
<br>
Peço ajuda novamente para o meu problema com ação por numero de origem<br>
(${CALLERID(num)}). Estou fazendo uma consulta no mysql para ver se o<br>
numero existe ou não, se retornar 0, chamada deve entrar, se voltar<br>
diferente de 0, deve dar um playback e um hangup. Nos meus testes, que<br>
tem o numero na tabela (mysql retorna 1), da o playback e desliga<br>
normal, beleza. porém quando o numero não existe (mysql retorna 0), nao<br>
volta para fazer o dial para o dgv/g2. Abaixo o meu extensions.ael,<br>
saidas do CLI e retorno do mysql nos dois casos.<br>
<br>
Se alguém puder me dar uma dica de onde estou errado....<br>
<br>
Grato<br>
<br>
Dilceu<br>
<br>
<br>
<br>
Chamada de entrada pelo DGV/g1 para DGV/g2 contexto vem-pstn<br>
<br>
extensions.ael<br>
<br>
globals {<br>
SAIDAE1=DGV;<br>
GRUPO1=g1;<br>
GRUPO2=g2;<br>
}<br>
<br>
macro externas (TERMINACAO, DESTINO) {<br>
Set(ORIGEM=${CALLERID(num)});<br>
&proibidos (${ORIGEM});<br>
Dial(${TERMINACAO}${DESTINO},,tT);<br>
Return;<br>
<br>
}<br>
<br>
macro proibidos (ORIGEM) {<br>
<br>
MYSQL (Connect connid localhost USUARIO SENHA proibidos);<br>
MYSQL (Query resultid ${connid} SELECT count(callerid) FROM<br>
telefones where callerid = '${ORIGEM}');<br>
MYSQL (Fetch fetchid ${resultid} ACHOU);<br>
MYSQL (Clear ${fetchid});<br>
MYSQL (Clear ${resultid});<br>
MYSQL (Disconnect ${connid});<br>
MYSQL (Clear ${connid});<br>
if (${ACHOU} > 0) {<br>
PlayBack (invalid);<br>
HangUp;<br>
}<br>
Return;<br>
}<br>
<br>
<br>
<br>
context vem-pstn {<br>
includes {<br>
parkedcalls;<br>
}<br>
<br>
_80XX => {<br>
&externas(${SAIDAE1}/${GRUPO2},${EXTEN});<br>
HangUp;<br>
}<br>
}<br>
<br>
<br>
SAIDAS DE CONSOLE<br>
<br>
<br>
CHAMADA COM ORIGEM DE UM NUMERO QUE DEVE SER PERMITIDO. (4988178028)<br>
<br>
<br>
-- Ringing on port 3 - callstate=0<br>
-- Answering port 3<br>
-- Executing [8023@vem-pstn:1] Macro("DGV/3",<br>
"externas|DGV/g2|8023") in new stack<br>
-- Executing [s@macro-externas:1] Set("DGV/3", "TERMINACAO=DGV/g2")<br>
in new stack<br>
-- Executing [s@macro-externas:2] Set("DGV/3", "DESTINO=8023") in<br>
new stack<br>
-- Executing [s@macro-externas:3] Set("DGV/3", "ORIGEM=4988178028")<br>
in new stack<br>
-- Executing [s@macro-externas:4] Macro("DGV/3",<br>
"proibidos|4988178028") in new stack<br>
-- Executing [s@macro-proibidos:1] Set("DGV/3", "ORIGEM=4988178028")<br>
in new stack<br>
-- Executing [s@macro-proibidos:2] MYSQL("DGV/3", "Connect connid<br>
localhost USUARIO SENHA proibidos") in new stack<br>
-- Executing [s@macro-proibidos:3] MYSQL("DGV/3", "Query resultid 1<br>
SELECT count(callerid) FROM telefones where callerid = '4988178028'") in<br>
new stack<br>
-- Executing [s@macro-proibidos:4] MYSQL("DGV/3", "Fetch fetchid 2<br>
ACHOU") in new stack<br>
-- Executing [s@macro-proibidos:5] MYSQL("DGV/3", "Clear 1") in new<br>
stack<br>
[Nov 26 00:08:43] WARNING[19579]: app_addon_sql_mysql.c:180<br>
find_identifier: Identifier 1, identifier_type 2 not found in identifier<br>
list<br>
[Nov 26 00:08:43] WARNING[19579]: app_addon_sql_mysql.c:420<br>
aMYSQL_clear: Invalid result identifier 1 passed in aMYSQL_clear<br>
-- Executing [s@macro-proibidos:6] MYSQL("DGV/3", "Clear 2") in new<br>
stack<br>
-- Executing [s@macro-proibidos:7] MYSQL("DGV/3", "Disconnect 1") in<br>
new stack<br>
-- Executing [s@macro-proibidos:8] MYSQL("DGV/3", "Clear 1") in new<br>
stack<br>
[Nov 26 00:08:43] WARNING[19579]: app_addon_sql_mysql.c:180<br>
find_identifier: Identifier 1, identifier_type 2 not found in identifier<br>
list<br>
[Nov 26 00:08:43] WARNING[19579]: app_addon_sql_mysql.c:420<br>
aMYSQL_clear: Invalid result identifier 1 passed in aMYSQL_clear<br>
-- Executing [s@macro-proibidos:9] GotoIf("DGV/3", "0?10:12") in new<br>
stack<br>
-- Goto (macro-proibidos,s,12)<br>
-- Executing [s@macro-proibidos:12] NoOp("DGV/3", "Finish<br>
if-proibidos-17") in new stack<br>
-- Executing [s@macro-proibidos:13] Return("DGV/3", "") in new stack<br>
[Nov 26 00:08:43] ERROR[19579]: app_stack.c:86 return_exec: Return<br>
without Gosub: stack is empty<br>
== Spawn extension (vem-pstn, 8023, 1) exited non-zero on 'DGV/3'<br>
[Nov 26 00:08:43] NOTICE[19579]: chan_dgv.c:14951 dgv_hangup: Calling<br>
dg_HangUp on port 3<br>
gw-voz-coperio*CLI><br>
<br>
SAIDA CONSOLE MYSQL<br>
091126 00:08:42 38 Connect root@localhost on proibidos<br>
38 Query SELECT count(callerid) FROM<br>
telefones where callerid = '4988178028'<br>
38 Quit<br>
<br>
Resultado do mysql digitando o comando na linha:<br>
<br>
mysql> SELECT count(callerid) FROM telefones where callerid =
'4988178028';<br>
+-----------------+<br>
| count(callerid) |<br>
+-----------------+<br>
| 0 |<br>
+-----------------+<br>
1 row in set (0.00 sec)<br>
<br>
<br>
<br>
<br>
<br>
CHAMADA DE UM NUMERO QUE DEVE SER NEGADO<br>
<br>
-- Ringing on port 4 - callstate=0<br>
-- Answering port 4<br>
-- Executing [8023@vem-pstn:1] Macro("DGV/4",<br>
"externas|DGV/g2|8023") in new stack<br>
-- Executing [s@macro-externas:1] Set("DGV/4", "TERMINACAO=DGV/g2")<br>
in new stack<br>
-- Executing [s@macro-externas:2] Set("DGV/4", "DESTINO=8023") in<br>
new stack<br>
-- Executing [s@macro-externas:3] Set("DGV/4", "ORIGEM=4935223153")<br>
in new stack<br>
-- Executing [s@macro-externas:4] Macro("DGV/4",<br>
"proibidos|4935223153") in new stack<br>
-- Executing [s@macro-proibidos:1] Set("DGV/4", "ORIGEM=4935223153")<br>
in new stack<br>
-- Executing [s@macro-proibidos:2] MYSQL("DGV/4", "Connect connid<br>
localhost USUARIO SENHA proibidos") in new stack<br>
-- Executing [s@macro-proibidos:3] MYSQL("DGV/4", "Query resultid 1<br>
SELECT count(callerid) FROM telefones where callerid = '4935223153'") in<br>
new stack<br>
-- Executing [s@macro-proibidos:4] MYSQL("DGV/4", "Fetch fetchid 2<br>
ACHOU") in new stack<br>
-- Executing [s@macro-proibidos:5] MYSQL("DGV/4", "Clear 1") in new<br>
stack<br>
[Nov 26 00:10:11] WARNING[19595]: app_addon_sql_mysql.c:180<br>
find_identifier: Identifier 1, identifier_type 2 not found in identifier<br>
list<br>
[Nov 26 00:10:11] WARNING[19595]: app_addon_sql_mysql.c:420<br>
aMYSQL_clear: Invalid result identifier 1 passed in aMYSQL_clear<br>
-- Executing [s@macro-proibidos:6] MYSQL("DGV/4", "Clear 2") in new<br>
stack<br>
-- Executing [s@macro-proibidos:7] MYSQL("DGV/4", "Disconnect 1") in<br>
new stack<br>
-- Executing [s@macro-proibidos:8] MYSQL("DGV/4", "Clear 1") in new<br>
stack<br>
[Nov 26 00:10:11] WARNING[19595]: app_addon_sql_mysql.c:180<br>
find_identifier: Identifier 1, identifier_type 2 not found in identifier<br>
list<br>
[Nov 26 00:10:11] WARNING[19595]: app_addon_sql_mysql.c:420<br>
aMYSQL_clear: Invalid result identifier 1 passed in aMYSQL_clear<br>
-- Executing [s@macro-proibidos:9] GotoIf("DGV/4", "1?10:12") in new<br>
stack<br>
-- Goto (macro-proibidos,s,10)<br>
-- Executing [s@macro-proibidos:10] Playback("DGV/4", "invalid") in<br>
new stack<br>
-- <DGV/4> Playing 'invalid' (language 'pt_BR')<br>
Really destroying SIP dialog<br>
'<a moz-do-not-send="true"
href="mailto:77507726007f5dfd0c56def543dbafb9@192.168.1.254">77507726007f5dfd0c56def543dbafb9@192.168.1.254</a>'
Method: OPTIONS<br>
[Nov 26 00:10:12] NOTICE[2768]: chan_dgv.c:11956 event_handler:<br>
dialplan_echo_thread Created(3) - port 4<br>
== Spawn extension (vem-pstn, 8023, 1) exited non-zero on 'DGV/4'<br>
[Nov 26 00:10:14] NOTICE[19595]: chan_dgv.c:14951 dgv_hangup: Calling<br>
dg_HangUp on port 4<br>
Really destroying SIP dialog<br>
'<a moz-do-not-send="true"
href="mailto:00942c961a047f620d296f3311814433@192.168.1.254">00942c961a047f620d296f3311814433@192.168.1.254</a>'
Method: OPTIONS<br>
gw-voz-coperio*CLI><br>
<br>
SAIDA CONSOLE MYSQL<br>
091126 00:10:14 39 Connect root@localhost on proibidos<br>
39 Query SELECT count(callerid) FROM<br>
telefones where callerid = '4935223153'<br>
39 Quit<br>
<br>
<br>
Resultado do mysql digitando o comando na linha:<br>
<br>
mysql> SELECT count(callerid) FROM telefones where callerid =
'4935223153';<br>
+-----------------+<br>
| count(callerid) |<br>
+-----------------+<br>
| 1 |<br>
+-----------------+<br>
1 row in set (0.00 sec)<br>
<br>
Estrutura da tabela proibidos:<br>
<br>
mysql> use proibidos;<br>
Reading table information for completion of table and column names<br>
You can turn off this feature to get a quicker startup with -A<br>
<br>
Database changed<br>
mysql> show tables;<br>
+---------------------+<br>
| Tables_in_proibidos |<br>
+---------------------+<br>
| telefones |<br>
+---------------------+<br>
1 row in set (0.00 sec)<br>
<br>
mysql> desc telefones;<br>
+----------+-------------+------+-----+---------+----------------+<br>
| Field | Type | Null | Key | Default | Extra |<br>
+----------+-------------+------+-----+---------+----------------+<br>
| id | int(11) | NO | PRI | NULL | auto_increment |<br>
| callerid | varchar(20) | NO | | NULL | |<br>
+----------+-------------+------+-----+---------+----------------+<br>
2 rows in set (0.00 sec)<br>
<br>
<br>
<br>
_______________________________________________<br>
A Redfone é líder no fornecimento de bridges TDMoE &lt;-> E1<br>
- Valor similar ao de placas E1 PCI;<br>
- Não há problemas de compatibilidade com barramento PCI;<br>
- Possibilitam a construção de soluções de alta disponibilidade(dois<br>
servidores compartilham o mesmo E1)<br>
Conheça mais sobre este produto em <a moz-do-not-send="true"
href="http://www.red-fone.com" target="_blank">www.red-fone.com</a><br>
_______________________________________________<br>
Lista de discussões AsteriskBrasil.org<br>
<a moz-do-not-send="true"
href="mailto:AsteriskBrasil@listas.asteriskbrasil.org">AsteriskBrasil@listas.asteriskbrasil.org</a><br>
<a moz-do-not-send="true"
href="http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil"
target="_blank">http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil</a><br>
</blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
Sylvio Carlos Jollenbeck Borin<br>
<pre wrap="">
<hr size="4" width="90%">
_______________________________________________
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 <a class="moz-txt-link-abbreviated" href="http://www.red-fone.com">www.red-fone.com</a>
_______________________________________________
Lista de discussões AsteriskBrasil.org
<a class="moz-txt-link-abbreviated" href="mailto:AsteriskBrasil@listas.asteriskbrasil.org">AsteriskBrasil@listas.asteriskbrasil.org</a>
<a class="moz-txt-link-freetext" href="http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil">http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil</a></pre>
</blockquote>
</body>
</html>