Mike Com esse script eu já estou conseguindo entender o negócio. Só tem uma coisa, no extensions vc não faz o Dial e sim no script da tarifação né?
#executando a discagem $AGI->exec("Dial", "SIP/tronco/197"); No meu caso, tenho uma documentação nessa parte de configuração do asterisk onde outras pessoas também usa, a gente só vai adaptando ela conforme a necessidade, to querendo implementar mais essa função do tarifador nesse esquema.... abaixo esta a forma que utilizo, por exemplo, para discar pra fixo local: ; PARA fixo MOVEL VOIP EX: 99216200 exten => _[1-5]XXXXXXX,1,NoOp(---> NOVA LIGACAO EXTERNA VOIP <--) exten => _[1-5]XXXXXXX,n,NoOp(---> DE ${CALLERID(num)} PARA ${EXTEN} <--) exten => _[1-5]XXXXXXX,n,Set(DESTINO=${EXTEN}) exten => _[1-5]XXXXXXX,n,Macro(gravacao,voip) exten => _[1-5]XXXXXXX,n,Macro(saidapstn,) exten => _[1-5]XXXXXXX,n,Macro(checasaida,) exten => _[1-5]XXXXXXX,n,Macro(checasenha,) exten => _[1-5]XXXXXXX,n,GotoIf($["${SAIDALIBERADA}" = "NAO"]?desligar) exten => _[1-5]XXXXXXX,n,GotoIf($["${SAIDAPSTN}" = "SIM"]?pstn) exten => _[1-5]XXXXXXX,n,GotoIf($["${SAIDAFIXOLOCAL}" = "PSTN"]?pstn) exten => _[1-5]XXXXXXX,n,GotoIf($["${SAIDAFIXOLOCAL}" = "VOIP"]?voip) exten => _[1-5]XXXXXXX,n,GotoIf($["${SAIDAFIXOLOCAL}" = "A2B"]?a2b) exten => _[1-5]XXXXXXX,n,Macro(hangupcall,) exten => _[1-5]XXXXXXX,n(pstn),Set(CDR(accountcode)=TO-PSTN) exten => _[1-5]XXXXXXX,n,Dial(${PORTAPSTN}/${EXTEN},40,Tg) exten => _[1-5]XXXXXXX,n,Macro(sinalizacao,${DIALSTATUS}) exten => _[1-5]XXXXXXX,n,Macro(hangupcall,) exten => _[1-5]XXXXXXX,n(voip),Set(CDR(accountcode)=TO-VOIP) exten => _[1-5]XXXXXXX,n,Dial(SIP/${TECHPREFIX}${CODINCIOVOIP}${DDDLOCAL}${EXTEN}@${O PERADORA-VOIP},40,Tg) exten => _[1-5]XXXXXXX,n(desligar),Macro(sinalizacao,${DIALSTATUS}) exten => _[1-5]XXXXXXX,n,Macro(hangupcall,) esse context não foi eu quem fez, e sim outro funcionario que nao faz mais parte da empresa. No começo do extensions eu adiciono as variáveis e depois o contexto faz tudo sozinho (se sai pelo voip ou pstn, DDD local, etc) a questão é, de que maneira eu posso usar o AGI nesse contexto sem sair do padrão para realizar a tarifação da chamada? Sei que para ficar de forma mais simplificada como esta este, precisarei dar uma mexida nesse contexto, mais por enquanto só quero adaptar ai para conseguir fazer a tarifação. E valeu pelo script que foi excelente para mim que estou começando a aprender trabalhar com AGI Att Danilo Almeida -----Mensagem original----- De: asteriskbrasil-boun...@listas.asteriskbrasil.org [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de Mike Tesliuk Enviada em: Monday, June 18, 2012 7:12 PM Para: asteriskbrasil@listas.asteriskbrasil.org Assunto: Re: [AsteriskBrasil] RES: RES: RES: RES: RES: Funcionamento Asterisk com PHP vamos pensar: Eu estou usando asterisk 1.8 fiz um extension que manda para o agi, e desliga, exten => 1101,1,Agi(teste-tarifacao.agi) exten => 1101,n,Hangup() neste agi tem o seguinte. ------------------ #!/usr/bin/perl use Asterisk::AGI; $AGI = new Asterisk::AGI; %input = $AGI->ReadParse(); # Pegando datas e coisas do genero my ($sec,$min,$hour,$mday,$mon,$year, $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 > 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 www.digivoice.com.br ________ > YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do > mercado. > email: yeal...@commlogik.com.br | www.commlogik.com.br | (11) 5503-1011 > ______________________________________________ > Para remover seu email desta lista, basta enviar um email em branco para > asteriskbrasil-unsubscr...@listas.asteriskbrasil.org > > > _______________________________________________ > 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 www.digivoice.com.br ________ > YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do > mercado. > email: yeal...@commlogik.com.br | www.commlogik.com.br | (11) 5503-1011 > ______________________________________________ > Para remover seu email desta lista, basta enviar um email em branco para > asteriskbrasil-unsubscr...@listas.asteriskbrasil.org > > _______________________________________________ > 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 www.digivoice.com.br ________ > YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do > mercado. > email: yeal...@commlogik.com.br | www.commlogik.com.br | (11) 5503-1011 > ______________________________________________ > Para remover seu email desta lista, basta enviar um email em branco para > asteriskbrasil-unsubscr...@listas.asteriskbrasil.org > > > _______________________________________________ > 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 > www.digivoice.com.br > ________ > YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do > mercado. > email: yeal...@commlogik.com.br | www.commlogik.com.br | (11) 5503-1011 > ______________________________________________ > Para remover seu email desta lista, basta enviar um email em branco para > asteriskbrasil-unsubscr...@listas.asteriskbrasil.org > > _______________________________________________ > 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 www.digivoice.com.br > ________ > YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do mercado. > email: yeal...@commlogik.com.br | www.commlogik.com.br | (11) 5503-1011 > ______________________________________________ > Para remover seu email desta lista, basta enviar um email em branco para asteriskbrasil-unsubscr...@listas.asteriskbrasil.org _______________________________________________ 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 www.digivoice.com.br ________ YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do mercado. email: yeal...@commlogik.com.br | www.commlogik.com.br | (11) 5503-1011 ______________________________________________ Para remover seu email desta lista, basta enviar um email em branco para asteriskbrasil-unsubscr...@listas.asteriskbrasil.org _______________________________________________ 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 www.digivoice.com.br ________ YEALINK: Telefones IP e VídeoPhones IP com o melhor custo/benefício do mercado. email: yeal...@commlogik.com.br | www.commlogik.com.br | (11) 5503-1011 ______________________________________________ Para remover seu email desta lista, basta enviar um email em branco para asteriskbrasil-unsubscr...@listas.asteriskbrasil.org