[AsteriskBrasil] RES: RES: RES: RES: Funcionamento Asterisk com PHP

2012-06-18 Thread Ribeiro
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

2012-06-19 Thread Danilo Almeida
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

2012-06-22 Thread Danilo Almeida
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

2012-06-19 Thread Mike Tesliuk
   $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
>