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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de Sebastiao Rocha Enviada em: sábado, 30 de agosto de 2008 18:02 Para: asteriskbrasil@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" <[EMAIL PROTECTED]> To: <asteriskbrasil@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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de Sebastiao Rocha Enviada em: sábado, 30 de agosto de 2008 16:56 Para: asteriskbrasil@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: [EMAIL PROTECTED] Aux Suporte de Sistemas (UNISUL) E-mail: [EMAIL PROTECTED] MSN: [EMAIL PROTECTED] 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@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@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@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@listas.asteriskbrasil.org http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil