[AsteriskBrasil] RES: RES: RES: RES: Funcionamento Asterisk com PHP
Danilo Não pelo DeadAGI para a sobrecarga. Pelo evento do AMI/AJAM. Estes podem causar. Entendi sua necessidade, mas não seria melhor pegar pelo banco de dados, adicionar uma coluna sua ou copiar os dados para outra tabela? Isso geraria menos carga e seria mais fácil de você conseguir implementar. Um abraço Ribeiro -Mensagem original- De: asteriskbrasil-boun...@listas.asteriskbrasil.org [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de Danilo Almeida Enviada em: segunda-feira, 18 de junho de 2012 09:07 Para: asteriskbrasil@listas.asteriskbrasil.org Assunto: [AsteriskBrasil] RES: RES: RES: Funcionamento Asterisk com PHP Sei que já existem diversos tarifadores, é que trabalho em uma empresa de telefonia voIP e quero desenvolver um específico da empresa. Já tenho o script pronto, só que no script e só imprime o valor direto na tela do cliente. Quando o cliente faz uma busca de ligação, ele pega o tempo, faz o calculo e imprime na tela. No asterisk, já esta configurado para gravar as infos no BD, quero somente conseguir gravar o valor em um novo campo da Tabela. Exemplo: Quando a ligação encerrar, pegar a informação dessa ligação, fazer o calculo e dar um update na tabela jogando o valor no campo custo desta mesma ligação. Pelo que vi, isso seria feito pelo DeadAGI, mais como vc disse não sei se é a melhor opção pelo fato de poder dar uma sobrecarga. Teria alguma outra forma de fazer isto? obrigado Danilo Alameida -Mensagem original- De: asteriskbrasil-boun...@listas.asteriskbrasil.org [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de Ribeiro Enviada em: Monday, June 18, 2012 2:50 AM Para: asteriskbrasil@listas.asteriskbrasil.org Assunto: [AsteriskBrasil] RES: RES: Funcionamento Asterisk com PHP Danilo Já existem tarifadores diversos e até demais no mercado e muitos Free. Alguns até do pessoal aqui. Veja o A2Billing. Ele faz exatamente o que você deseja, já está pronto e não tem custo. Acesso ao banco de dados, utilização de um tarifador ou pegar os dados do sistema é o que eu faria, pois você só precisa pegar os dados da ligação que já acabou e o Asterisk guarda isso por padrão. Por exemplo: Eu uso o Elastix. Nele tem a aba Report. Em CDR Report eu tenho todas as ligações realizadas e eu consigo exportar para CSV. Ele lhe daria TODOS os dados que você deseja de forma fácil, direta, clara e fácil. Tem o canal, duração, origem e destino e se foi atendida ou não. Você também consegue se integrar com o A2Billing. Na verdade é matar uma mosca com uma bomba nuclear o A2Billing para você, mas pode ser feito. Independente da sua solução, como já foi dito, tem o cálculo de custo, que não é tão simples quanto parece. Sobre o AGI: Em seu caso, você não precisa monitorar as ligações no momento em que elas estão acontecendo e entendo que o AGI não atenda você para isso. Você poderia usar o DeadAGI para pegar os dados depois do hangup ou um AMI/AJAM com eventos. Neste caso ele dispara o evento toda vez que alguma coisa acontece. Existem vários eventos e eu seguiria pelo evento Crd, onde toda vez que ocorre um hangup, ele lhe informa o canal que sofreu hangup e seus dados. Mais dados sobre eventos: http://www.voip-info.org/wiki/view/asterisk+manager+events . Só que tem um problema. O Astrisk fica pesado, pois ele armazena todos os hungups que ocorreram e em sistemas de tráfego intenso isso pode gerar sobrecarga. Só fique esperto que cada ligação gera 2 canais pelo menos (Pode gerar mais) e você tem que entender o que cada canal faz para saber qual deles tem a informação que você deseja ou quais deles contém. Um abraço Ribeiro -Mensagem original- De: asteriskbrasil-boun...@listas.asteriskbrasil.org [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de danilo.alme...@g1telecom.com.br Enviada em: domingo, 17 de junho de 2012 22:07 Para: asteriskbrasil@listas.asteriskbrasil.org Assunto: [AsteriskBrasil] RES: Funcionamento Asterisk com PHP Ribeiro Isso já é um ótimo começo pra mim, mais com essas 3 opções, eu consigo enviar um bloco de comando e salvar em um arquivo de conf por exemplo que possa ser meus ramais sip e depois da um include no sip.conf? Andei lendo também sobre AGI, mais o material que achei na internet a maioria ou explica coisas avançadas ou coisas básicas que não se encaixa no meu projeto. A princípio quero pegar o tempo da ligação e o uniqueid em uma pagina PHP fazer o cálculo do custo da ligação e armazenar no banco. Seria feito pela AGI? Obrigado Danilo Almeida ___ KHOMP Inovação: External Board Series Módulos de 1/2 rack e 1U para todas as interfaces e soluções Asterisk e FreeSWITCH. Tenha a External Series Experience na sua aplicação. Visite www.khomp.com ___ DIGIVOICE Fabricante de Placas de Voz e Channel Bank 20 anos de experiência com E1(R2/ISDN), FXS, FXO e GSM Centro Treinamento - Curso de PABX IP - Asterisk - Site
[AsteriskBrasil] RES: RES: RES: RES: Funcionamento Asterisk com PHP
t; 30){ >>$tempo = 30; >> } >> >> >> >> $segundos = ($tempo / 60); >> >> $custo = ($segundos * $tarifa); >> >> >> >> >> >> # Gerando nosso log num arquivo de texto, voce poderia usar um mysql >> para isso >> >> system("echo '$starttime,$callerid,$destino,$tempo,$custo,$tarifa'>> >> /tmp/billing.csv"); >> >> >> >> >> >> >> >> --- >> >> >> No caso, ele vai gerar um arquivo de billing >> >> o conteudo dele é o seguinte (duas ligações, uma de poucos segundos e >> outra de mais de um minuto) >> >> >> O formato do arquivo é: >> >> data,quem,pra_onde,tempo_da_chamada_atendida,valor,tarifa >> >> Abaixo o conteudo: >> >> 2012-06-18 18:42:1,114,11001,30,0.2405,0.481 >> 2012-06-18 18:45:8,114,11001,69,0.55315,0.481 >> >> >> no meu caso aqui ele em alguns momentos nao gerou a escrita no arquivo, >> não olhei o porque, talvez algum erro meu, mas enfim, a base é esta. >> >> >> eu escrevi a saida em um arquivo de texto, poderia ser um banco de dados >> por exemplo e por ai vai. >> >> >> >> >> Em 18-06-2012 18:11, Danilo Almeida escreveu: >>> Ribeiro >>> >>> Não entendo como conseguirei fazer isso, pois após o término da ligação, >>> como farei para calcular o custo dela? >>> >>> Att >>> >>> Danilo ALmeida >>> >>> -Mensagem original- >>> De: asteriskbrasil-boun...@listas.asteriskbrasil.org >>> [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de >> Ribeiro >>> Enviada em: Monday, June 18, 2012 4:53 PM >>> Para: asteriskbrasil@listas.asteriskbrasil.org >>> Assunto: [AsteriskBrasil] RES: RES: RES: RES: Funcionamento Asterisk com >> PHP >>> Danilo >>> >>> Não pelo DeadAGI para a sobrecarga. Pelo evento do AMI/AJAM. Estes podem >>> causar. >>> Entendi sua necessidade, mas não seria melhor pegar pelo banco de dados, >>> adicionar uma coluna sua ou copiar os dados para outra tabela? Isso >> geraria >>> menos carga e seria mais fácil de você conseguir implementar. >>> >>> Um abraço >>> Ribeiro >>> >>> -Mensagem original- >>> De: asteriskbrasil-boun...@listas.asteriskbrasil.org >>> [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de >> Danilo >>> Almeida >>> Enviada em: segunda-feira, 18 de junho de 2012 09:07 >>> Para: asteriskbrasil@listas.asteriskbrasil.org >>> Assunto: [AsteriskBrasil] RES: RES: RES: Funcionamento Asterisk com PHP >>> >>> Sei que já existem diversos tarifadores, é que trabalho em uma empresa de >>> telefonia voIP e quero desenvolver um específico da empresa. >>> Já tenho o script pronto, só que no script e só imprime o valor direto na >>> tela do cliente. Quando o cliente faz uma busca de ligação, ele pega o >>> tempo, faz o calculo e imprime na tela. >>> No asterisk, já esta configurado para gravar as infos no BD, quero > somente >>> conseguir gravar o valor em um novo campo da Tabela. >>> >>> Exemplo: >>> >>> Quando a ligação encerrar, pegar a informação dessa ligação, fazer o >> calculo >>> e dar um update na tabela jogando o valor no campo custo desta mesma >>> ligação. >>> Pelo que vi, isso seria feito pelo DeadAGI, mais como vc disse não sei se >> é >>> a melhor opção pelo fato de poder dar uma sobrecarga. >>> >>> Teria alguma outra forma de fazer isto? >>> >>> obrigado >>> Danilo Alameida >>> -Mensagem original- >>> De: asteriskbrasil-boun...@listas.asteriskbrasil.org >>> [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de >> Ribeiro >>> Enviada em: Monday, June 18, 2012 2:50 AM >>> Para: asteriskbrasil@listas.asteriskbrasil.org >>> Assunto: [AsteriskBrasil] RES: RES: Funcionamento Asterisk com PHP >>> >>> Danilo >>> >>> Já existem tarifadores diversos e até demais no mercado e muitos Free. >>> Alguns até do pessoal aqui. >>> Veja o A2Billing. Ele faz exatamente o que você deseja, já está pronto e >> não >>> tem custo. >>> Acesso ao banco de dados, utilização de um tarifador ou pegar os dados do >>> sistema é o que eu faria, pois você só precisa pegar os dados da ligação >> que >&
[AsteriskBrasil] RES: RES: RES: RES: Funcionamento Asterisk com PHP
Bom dia Pessoal, voltei novamente depois de algum tempo no mesmo Problema...rsrs Seguinte, no meu contexto de saida, tenho a seguinte linha: exten => _[1-5]XXX,n,Macro(hangupcall,) //mandando para macro hangupcall na macro fiz o seguinte: [macro-hangupcall] exten => s,1,Wait(2) exten => s,2,Agi(/usr/local/g1telecom/calc_lig.php) exten => s,3,NoCDR() exten => s,4,Hangup() exten => h,1,Wait(2) exten => h,2,Agi(/usr/local/g1telecom/calc_lig.php) exten => h,3,Hangup() exten => t,1,Agi(/usr/local/g1telecom/calc_lig.php) exten => t,2,Hangup() estou tentando enviar o UNIQUEID para meu arquivo.php para que La eu possa trabalha-lho após a finalização da ligação. O arquivo que recebe esta da seguinte forma: #!/usr/bin/php get_variable("UNIQUEID"); $Arg2 = $AGI->get_variable("CALLERID(num)"); $Arg3 = $AGI->get_variable("EXTEN"); $abre_log = fopen('/dados/log_teste.csv','a'); $log = ("$Arg1;$Arg2;$Arg3;") @fwrite($abre_log, $log); @fclose($abre_log); ?> Estou tentando gerar um LOG no arquivo para ver se estou pegando a varivel, mais o arquivo sempre fica em "branco", é como se não acontecesse nada Alguém ai sabe no que estou errando? Obrigado desde já Att Danilo Almeida -Mensagem original- De: asteriskbrasil-boun...@listas.asteriskbrasil.org [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de Mike Tesliuk Enviada em: Tuesday, June 19, 2012 3:01 PM Para: asteriskbrasil@listas.asteriskbrasil.org Assunto: Re: [AsteriskBrasil] RES: RES: RES: Funcionamento Asterisk com PHP o diretorio de agi é especificado no asterisk.conf o arquivo a ser chamado no dialplan deve estar no diretorio em questão, dentro dele você pode fazer includes para outros locais se necessário. Em 19-06-2012 12:19, Danilo Almeida escreveu: > Mais uma duvida aqui agora > > Eu preciso necessariamente colocar o script no diretorio > /var/lib/asterisk/agi-bin/ ou posso colocar em outro diretorio por exemplo > /usr/local/minhapasta/ e depois instanciar a classe em meu arquivo > tarifador.php? > Coloco o phpagi.php e o tarifador.php nesse mesmo diretório. > Isso também funciona? > > Att > Danilo Almeida > > -Mensagem original- > De: asteriskbrasil-boun...@listas.asteriskbrasil.org > [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de Danilo > Almeida > Enviada em: Tuesday, June 19, 2012 11:16 AM > Para: asteriskbrasil@listas.asteriskbrasil.org > Assunto: [AsteriskBrasil] RES: RES: RES: RES: Funcionamento Asterisk com PHP > > Entendi > > Pessoal da Lista > > Será que alguém já utilizou desta forma, ou existe alguma outra forma de > fazer isto? Já que o DeadAgi talvez possa não funcionar > > Att > Danilo Almeida > > -Mensagem original- > De: asteriskbrasil-boun...@listas.asteriskbrasil.org > [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de Mike > Tesliuk > Enviada em: Tuesday, June 19, 2012 11:08 AM > Para: asteriskbrasil@listas.asteriskbrasil.org > Assunto: Re: [AsteriskBrasil] RES: RES: RES: Funcionamento Asterisk com PHP > > > Se você colocar depois do dial tem que ser no contexto de desligamento > (h) , pois normalmente depois de falar a sua ponta vai desligar e não > vai executar nada, e também não testei executar o AGI depois de desligar > > > Em 19-06-2012 11:01, Danilo Almeida escreveu: >> Mike, >> >> O campo userfield eu uso para gravar o diretório da gravação, aqui o certo >> seria mesmo eu mandar para o AGI e fazer o tratamento no código e depois >> gravar em uma outra tabela do banco os valores com o RECID da ligação. >> >> Abaixo eu acrescentei a linha no contexto que mandaria para o AGI, seria >> dessa maneira mesmo? Nesse caso estou enviando para meu arquivo PHP. >> >> Nesse arquivo faria todos os calculo e no final geraria o log e também >> gravaria no banco de dados >> >> ; PARA fixo MOVEL VOIP EX: 99216200 >>> exten => _[1-5]XXX,1,NoOp(---> NOVA LIGACAO EXTERNA VOIP<--) >>> exten => _[1-5]XXX,n,NoOp(---> DE ${CALLERID(num)} PARA > ${EXTEN}<--) >>> exten => _[1-5]XXX,n,Set(DESTINO=${EXTEN}) >>> exten => _[1-5]XXX,n,Macro(gravacao,voip) >>> exten => _[1-5]XXX,n,Macro(saidapstn,) >>> exten => _[1-5]XXX,n,Macro(checasaida,) >>> exten => _[1-5]XXX,n,Macro(checasenha,) >>> exten => _[1-5]XXX,n,GotoIf($["${SAIDALIBERADA}" = "NAO"]?desligar) >>> exten => _[1-5]XXX,n,GotoIf($["${SAIDAPSTN}" = "SIM"]?pstn) >>> exten => _[1-5]XXX,n,GotoIf($["${SAIDAFIXOLOCAL}" = "PSTN"]?
Re: [AsteriskBrasil] RES: RES: RES: RES: Funcionamento Asterisk com PHP
$wday,$yday,$isdst) = localtime time; >>> >>> if($mday< 10){ >>> $mday = "0" . $mday; >>> } >>> >>> $year = $year + 1900; >>> >>> $mon = $mon + 1; >>> >>> if($mon< 10){ >>> $mon = "0" . $mon; >>> } >>> >>> $starttime = "$year-$mon-$mday $hour:$min:$sec"; >>> >>> #definindo o custo da tarifa >>> $tarifa="0.481"; >>> >>> $callerid = $AGI->get_variable("CALLERID(num)"); >>> $destino = $AGI->get_variable("EXTEN"); >>> >>> >>> #executando a discagem >>> $AGI->exec("Dial", "SIP/tronco/197"); >>> >>> >>> # pegando a variavel com o tempo de atendidod do canal >>> $tempo = $AGI->get_variable("ANSWEREDTIME"); >>> >>> # cobrando minimo de 30 segundos >>> if($tempo< 30){ >>> $tempo = 30; >>> } >>> >>> >>> >>> $segundos = ($tempo / 60); >>> >>> $custo = ($segundos * $tarifa); >>> >>> >>> >>> >>> >>> # Gerando nosso log num arquivo de texto, voce poderia usar um mysql >>> para isso >>> >>> system("echo '$starttime,$callerid,$destino,$tempo,$custo,$tarifa'>> >>> /tmp/billing.csv"); >>> >>> >>> >>> >>> >>> >>> >>> --- >>> >>> >>> No caso, ele vai gerar um arquivo de billing >>> >>> o conteudo dele é o seguinte (duas ligações, uma de poucos segundos e >>> outra de mais de um minuto) >>> >>> >>> O formato do arquivo é: >>> >>> data,quem,pra_onde,tempo_da_chamada_atendida,valor,tarifa >>> >>> Abaixo o conteudo: >>> >>> 2012-06-18 18:42:1,114,11001,30,0.2405,0.481 >>> 2012-06-18 18:45:8,114,11001,69,0.55315,0.481 >>> >>> >>> no meu caso aqui ele em alguns momentos nao gerou a escrita no arquivo, >>> não olhei o porque, talvez algum erro meu, mas enfim, a base é esta. >>> >>> >>> eu escrevi a saida em um arquivo de texto, poderia ser um banco de dados >>> por exemplo e por ai vai. >>> >>> >>> >>> >>> Em 18-06-2012 18:11, Danilo Almeida escreveu: >>>> Ribeiro >>>> >>>> Não entendo como conseguirei fazer isso, pois após o término da ligação, >>>> como farei para calcular o custo dela? >>>> >>>> Att >>>> >>>> Danilo ALmeida >>>> >>>> -Mensagem original- >>>> De: asteriskbrasil-boun...@listas.asteriskbrasil.org >>>> [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de >>> Ribeiro >>>> Enviada em: Monday, June 18, 2012 4:53 PM >>>> Para: asteriskbrasil@listas.asteriskbrasil.org >>>> Assunto: [AsteriskBrasil] RES: RES: RES: RES: Funcionamento Asterisk com >>> PHP >>>> Danilo >>>> >>>> Não pelo DeadAGI para a sobrecarga. Pelo evento do AMI/AJAM. Estes podem >>>> causar. >>>> Entendi sua necessidade, mas não seria melhor pegar pelo banco de dados, >>>> adicionar uma coluna sua ou copiar os dados para outra tabela? Isso >>> geraria >>>> menos carga e seria mais fácil de você conseguir implementar. >>>> >>>> Um abraço >>>> Ribeiro >>>> >>>> -Mensagem original- >>>> De: asteriskbrasil-boun...@listas.asteriskbrasil.org >>>> [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de >>> Danilo >>>> Almeida >>>> Enviada em: segunda-feira, 18 de junho de 2012 09:07 >>>> Para: asteriskbrasil@listas.asteriskbrasil.org >>>> Assunto: [AsteriskBrasil] RES: RES: RES: Funcionamento Asterisk com PHP >>>> >>>> Sei que já existem diversos tarifadores, é que trabalho em uma empresa > de >>>> telefonia voIP e quero desenvolver um específico da empresa. >>>> Já tenho o script pronto, só que no script e só imprime o valor direto > na >>>> tela do cliente. Quando o cliente faz uma busca de ligação, ele pega o >>>> tempo, faz o calculo e imprime na tela. >>>> No asterisk, já esta configurado para gravar as infos no BD, quero >> somente >