[AsteriskBrasil] RES: RES: chamando AGI

Alexandre Abreu alexandre.abreu em redt.com.br
Sábado Agosto 30 18:43:07 BRT 2008


Então pra cada QUERY uma MACRO? Você acha isso eficiente? Excesso de macros,
repetição de código, etc.
O app_mysql funciona, mas está muito longe de ser perfeito. O "problema" de
"limites de conexões" é em decorrência da forma como o MySQL() gerência as
coisas, como fica tudo na responsabilidade de quem está programando o
dialplan (está no mesmo layer), qualquer erro, por exemplo o esquecimento de
um Disconnect, poderia causar o que eu falei (caso hipotético, mas
provável).

Não é uma boa prática lidar com Connect, Query, Fetch, Clear e Disconnect
quando existe um outro layer que faz isso por você (e ainda consegue ser
mais rápido).

E não, via ODBC não há conexão/desconexão toda hora, isso foge do propósito.
Se você reparar no res_odbc, vai ver que ele faz uma conexão ao ser iniciado
e mantém a conexão ativa durante toda a execução para servir os comandos de
SQL.

O app_mysql() não é nativo. Ele é oferecido através do Asterisk-addons. E
outra... é um aplicativo bastante desatualizado...acho que não tocam nesse
código tem muito tempo.

Já usei muito esse aplicativo e posso te dizer que não fica fácil manter um
dialplan grande com isso, não é nada agradável ver queries de SQL junto com
o restante do código do dialplan.

--
Alexandre Abreu
RedT Telecom
http://www.redt.com.br

-----Mensagem original-----
De: asteriskbrasil-bounces em listas.asteriskbrasil.org
[mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de
Sebastiao Rocha
Enviada em: sábado, 30 de agosto de 2008 18:02
Para: asteriskbrasil em listas.asteriskbrasil.org
Assunto: Re: [AsteriskBrasil] RES: chamando AGI

Alexandre,

Aqui comigo tudo está rodando encima de MySql ( Dialplan, Sip, Iax, CDR ) e 
tudo funciona super bem, pois como disse, a consulta deve ser feita em 
macros, assim vc não esquece de desconectar.

outro detalhe, não tenho problemas com o mysql, funciona perfeito, são 
feitas muitas conexoes ao banco por segundo, não encontrei um unico problema

com limites de conexoes.

Quanto ao ODBC, ele tb faz a conexao ao banco da mesma forma que o mysql 
client, ou seja, conecta e desconecta toda hora. então a unica vantagem que 
vejo ai, é a portabilidade, pois com odbc, possuindo os drivers, vc se 
coenctará com qq banco de dados.

poderia nos explicar melhor o que aconteceu com vc, pra vc não querer usar o

mysql nativo?


----- Original Message ----- 
From: "Alexandre Abreu" <alexandre.abreu em redt.com.br>
To: <asteriskbrasil em listas.asteriskbrasil.org>
Sent: Saturday, August 30, 2008 5:22 PM
Subject: [AsteriskBrasil] RES: chamando AGI


A melhor maneira de se utilizar integração com banco de dados é sem dúvida
via FUNC_ODBC.
Acho melhor já começar da maneira correta e evitar os problemas que o
MySQL() oferece.

Abstrair Connect, Query, Fetch, Clear e Disconnect do dialplan é muito mais
eficiente e seguro, principalmente quando seu plano de discagem começa a se
tornar grande. Depois que seu dialplan atingir mais de 3000 linhas de código
e você descobrir que seu MySQL chegou no número máximo de conexões
permitidas, você não vai gostar de procurar por todo seu extensions.conf
exatamente onde você esqueceu o Disconnect - acredite. Sem contar no
overhead de conexão/desconexão toda hora, ausência de pooling, etc.

--
Alexandre Abreu
RedT Telecom
http://www.redt.com.br

De: asteriskbrasil-bounces em listas.asteriskbrasil.org
[mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de
Sebastiao Rocha
Enviada em: sábado, 30 de agosto de 2008 16:56
Para: asteriskbrasil em listas.asteriskbrasil.org
Assunto: Re: [AsteriskBrasil] chamando AGI

Olá João.

Eu utilizo sempre o mysql direto pra fazer consultas ao banco, no exemplo
abaixo pego a quantidade de segundos restantes na tabela sipusers e
determino qual o tempo maximo em segundos o usuario pode falar na chamada.

[globals]
dbhostname=127.0.0.1
dbusername=usuariomysql
dbpassword=senhadousuariomysql
dbname=nomedobancomysql

[seucontexto]
exten => _[3]XXXXXXX, 1, MYSQL( Connect connid ${dbhostname} ${dbusername}
${dbpassword} ${dbname} )
exten => _[3]XXXXXXX, 2, MYSQL( Query resultid ${connid} SELECT
`seconds_left` from `sip_users` where `accountcode`=${CALLERID(num):0:4} )
exten => _[3]XXXXXXX, 3, MYSQL( Fetch fetchid ${resultid} seconds_left )
exten => _[3]XXXXXXX, 4, 'MYSQL( Clear ${resultid} )
exten => _[3]XXXXXXX, 5, 'MYSQL( Disconnect ${connid} )
exten => _[3]XXXXXXX, 6, noop( Segundos restantes: ${seconds_left} segundos.
)
exten => _[3]XXXXXXX, 7, set( TIMEOUT(absolute)=${seconds_left} )
exten => _[3]XXXXXXX, 8, Dial( SIP/${EXTEN}, 45, tT )

"SecondsLeft" = Tempo de ligações restante em segundos.


Ps.. vc pode fazer a conexao e obter os dados atraves de uma macro, assim o
dialplan fica mais facil de visualizar e modifgicar as consultas sql.



----- Original Message ----- 

From: joao jamaicabsd
To: asterisk BR
Sent: Saturday, August 30, 2008 4:03 PM
Subject: [AsteriskBrasil] chamando AGI

Boa tarde a todos!
Estou tentando chamar um AGI para fazer uma consulta no mysql e
primeiramente gostaria de saber qual o parâmetro correto para eu colocar
dentro do extconfig.conf? Caso for realmente preciso.

O meu extensions.conf está assim:

[aluno]
exten => s,1,Playback(codmatricula) ;//pede para
digitar sua matricula
exten => 1,1,set(OPCAO=${CALLERIDNUM}) ;// para armazenar na
variável OPCAO o que a pessoa digitou no teclado é isso mesmo?
exten => 2,1,agi(consulta.agi) ;// é assim
mesmo que chamo o AGI? Como faço para enviar para dentro do AGI a variável
OPCAO?
exten => 3,1,Goto(ura-principal,s,1)
exten => 4,1,HangUp

Estou usando o FreeBSD, e o AGI está dentro do diretório agi-bin.
Estou desde ontem tentando resolver isso e nao consigo, vc's podem me
ajudar?
Obrigado a todos e um bom find.



-- 
E-mail: jamaicabsd em gmail.com
Aux Suporte de Sistemas (UNISUL)
E-mail: joao.maykon em unisul.br
MSN: joaomaykonm em hotmail.com
Cel: (48) 9144 2326
________________________________________
_______________________________________________
Compre uma camiseta da AsteriskBrasil.org!
http://www.voipmania.com.br

Acesse o canal IRC de discussão sobre Asterisk em Português Brasileiro na
rede Freenode.net: #asterisk-br
_______________________________________________
Lista de discussões AsteriskBrasil.org
AsteriskBrasil em listas.asteriskbrasil.org
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil

_______________________________________________
Compre uma camiseta da AsteriskBrasil.org!
http://www.voipmania.com.br

Acesse o canal IRC de discussão sobre Asterisk em Português Brasileiro na 
rede Freenode.net: #asterisk-br
_______________________________________________
Lista de discussões AsteriskBrasil.org
AsteriskBrasil em listas.asteriskbrasil.org
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil 

_______________________________________________
Compre uma camiseta da AsteriskBrasil.org!
http://www.voipmania.com.br

Acesse o canal IRC de discussão sobre Asterisk em Português Brasileiro na
rede Freenode.net: #asterisk-br
_______________________________________________
Lista de discussões AsteriskBrasil.org
AsteriskBrasil em listas.asteriskbrasil.org
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil



More information about the AsteriskBrasil mailing list