[AsteriskBrasil] Discando pela WEB
Bernardo Vieira
bernardo.vieira em terra.com.br
Quarta Julho 12 15:43:28 BRT 2006
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Não, ele não é um cliente SIP ele é só um proxy para a interface manager
do asterisk.
Pablo Weyne wrote:
> Não dá p/ usar esse script sem que necessite depender do Asterisk? Por
> exemplo, eu coloco os dados de uma conta SIP, e ele faz a discagem.
>
>
> ----- Original Message -----
> *From:* Diogo Cosito <mailto:diogocosito66 em hotmail.com>
> *To:* asteriskbrasil em listas.asteriskbrasil.org
> <mailto:asteriskbrasil em listas.asteriskbrasil.org>
> *Sent:* Tuesday, July 11, 2006 10:43 PM
> *Subject:* Re: [AsteriskBrasil] Discando pela WEB
>
> Bernardo, tudo bem?
> Obrigado pela sua aula, hehehe eu estou iniciando agora e vejo que
> pessoas
> como você são bem atenciosas, muito obrigado.
> Na realidade eu estou usando o asterisk-1.0.9 e gostaria de
> implementar isso
> no site de minha empresa, na intranet para hep-desk, mas acho que no
> meu
> caso seria interessante o php, né? O que acha?
> Não entendi muito bem o código pearl que você fez, tipo posso
> utilizar ele
> no asterisk-1.0.9? Precisarei de pearl instalado no server, né?
> Mas é que ainda não estou conseguindo visualizar o código
> funcionando...
> desculpe a ignorância, mas espero um dia poder colaborar com vocês
> no que
> puder.
>
> Muito obrigado e um abraço
>
> Att
>
> Diogo.
>
>
> >From: Bernardo Vieira <bernardo.vieira em terra.com.br
> <mailto:bernardo.vieira em terra.com.br>>
> >Reply-To: asteriskbrasil em listas.asteriskbrasil.org
> <mailto:asteriskbrasil em listas.asteriskbrasil.org>
> >To: asteriskbrasil em listas.asteriskbrasil.org
> <mailto:asteriskbrasil em listas.asteriskbrasil.org>
> >Subject: Re: [AsteriskBrasil] Discando pela WEB
> >Date: Mon, 10 Jul 2006 11:14:13 -0300
> >
> Diogo,
> Acho que o que está acontecendo é que o script de php está tentando
> inicializar a ligação no contexto 'default' e se eu não me engano o AAH
> não permite muita coisa nesse contexto. Tente alterar o contexto para
> 'from-internal'. Outra coisa que você pode fazer é, ao invés de
> acompanhar a ligação via CLI, conecte via telnet na porta do manager,
> ele é muito mais detalhado.
>
> Bom, de toda forma, depois que você mandou sua primeira pergunta, eu
> resolvi dar uma olhada no script perl que eu tinha te passado e gostei
> do negócio. Então resolvi brincar com o script e acabei fazendo as
> seguintes alterações:
> 1) O script original desenhava o form com os campos para fazer a
>> ligação
> e passava os parâmetros por POST, ou seja, você não poderia colocar a
> linha de discagem em um link <a href> por exemplo. O script que eu fiz
> funciona com o método GET para que você usar uma url simples para
>> discar.
>
> 2) O script original produzia html, ou seja, para alterar sua aparência
> você teria que modificar o script. A minha versão não produz html
> nenhum, você simplesmente coloca a url em um link e o script te
> redireciona de volta para a mesma página com o status da chamada, ou
> seja, você põe a cara que você quiser na página.
>
> Bom, é isso aí, o script ainda está meio toscão, mas dá para usar, se
> você, ou qualquer um quiser me ajudar no desenvolvimento dele, eu
> ficaria feliz.
>
>
> Diogo Cosito wrote:
> > Bernando, boa noite.
> > Eu baixei o código php, para discagem pela web, mas não entendi
>> muito
> bem o
> > que devo fazer, tipo instalei o código dentro de um servidor web,
> externo ao
> > asterisk e liberei no manager.conf para acesso externo, mas não
>> inicia a
> > discagem..
> > Fiz desta maneira:
> > specify the channel (extension) you want to receive the call
>> requests
> with
> > #e.g. SIP/XXX, IAX2/XXXX, ZAP/XXXX, etc
> > $strChannel = "sip/1000";
>
> > #specify the context to make the outgoing call from. By
>> default, AAH
> uses
> > from-internal
> > #Using from-internal will make you outgoing dialing rules apply
> > $strContext = "default";
>
> > #specify the amount of time you want to try calling the specified
> channel
> > before hangin up
> > $strWaitTime = "30";
>
> > #specify the priority you wish to place on making this call
> > $strPriority = "1";
>
> > #specify the maximum amount of retries
> > $strMaxRetry = "2"
>
> > Mas na CLI do asterisk, não reporta nada.
> > Poderia me ajudar?
>
> > Muito obrigado
>
> > Att
>
> > Diogo
> >> From: Bernardo Vieira <bernardo.vieira em terra.com.br
>> <mailto:bernardo.vieira em terra.com.br>>
> >> Reply-To: asteriskbrasil em listas.asteriskbrasil.org
>> <mailto:asteriskbrasil em listas.asteriskbrasil.org>
> >> To: wellingtoncs em gmail.com <mailto:wellingtoncs em gmail.com>,
>> asteriskbrasil em listas.asteriskbrasil.org
>> <mailto:asteriskbrasil em listas.asteriskbrasil.org>
> >> Subject: Re: [AsteriskBrasil] Discando pela WEB
> >> Date: Fri, 07 Jul 2006 19:18:57 -0300
> >>
> > Solução em php (você vai ter que mexer no código para alocar
> > dinamicamente os dois lados da ligação):
>
> http://www.voipjots.com/2006/02/click-to-call-with-your-asteriskhome.html
>
> > Solução em perl (não mexi com esse aí porque eu prefiro php que
>> perl,
> > sim eu sou preguiçoso :P):
> > http://www.azxws.com/asterisk/
>
> > Wellington Sampaio wrote:
> >>>> Olá Pessoa,
> >>>>
> >>>> Gostaria de saber se você sabem, já configuraram uma
> regra
> >>>> como esta:
> >>>>
> >>>> Eu acesso uma página, digamos que
>> www.asterisk.com.br <http://www.asterisk.com.br>
> >>>> <http://www.asterisk.com.br/>, lá eu entro com o número
>> destinatário
> e
> >>>> número destino. O sistema faz uma ligação para o número
>> destinatário
> e
> >>>> em seguida liga para o destino. Ele gera uma chamada para os dois
> >>>> números, assim colocando eles ativos.
> >>>>
> >>>> Se alguém tiver alguma idéia de como faço isso, por
> favor,
> >>>> me ajudem.
> >>>>
> >>>> Att
> >>>>
> >>>>
> >>>>
> >>>> Wellington Sampaio
> >>>>
> >>>> wellingtoncs em gmail.com <mailto:wellingtoncs em gmail.com>
> >>>>
> >>>>
> >>>>
> ------------------------------------------------------------------------
> >>>>
> >>>> _______________________________________________
> >>>> LIsta de discussões AsteriskBrasil.org
> >>>> AsteriskBrasil em listas.asteriskbrasil.org
>> <mailto:AsteriskBrasil em listas.asteriskbrasil.org>
> >>>> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> >>>>
> >>>> _______________________________________________
> >>>> Acesse o wiki AsteriskBrasil.org:
> >>>> http://www.asteriskbrasil.org
> _______________________________________________
> LIsta de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> >>
> _______________________________________________
> Acesse o wiki AsteriskBrasil.org:
> http://www.asteriskbrasil.org
>
> > _________________________________________________________________
> > DOWNLOAD: Emoticons animados 'Copa 2006' para usar no MSN
> > http://copa.br.msn.com/extra/emoticons/
>
> > _______________________________________________
> > LIsta de discussões AsteriskBrasil.org
> > AsteriskBrasil em listas.asteriskbrasil.org
>> <mailto:AsteriskBrasil em listas.asteriskbrasil.org>
> > http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
>
> > _______________________________________________
> > Acesse o wiki AsteriskBrasil.org:
> > http://www.asteriskbrasil.org
>
>
#!/usr/bin/perl -w
# getdial.pl
# Copyright (C) 2006 Bernardo Vieira bernardo.vieira em terra.com.br
> <mailto:bernardo.vieira em terra.com.br>
#
# Script para iniciar uma chamda no Asterisk através de uma
# URL. Recebe parâmetros atraves do metodo get, permitindo
# que seja utilizado em uma tag <a href...>Discar</a>.
#
# Baseado no script TACI - Trivial Asterisk Call Interface v.02
# de Tony Wasson wasson em azxws.com <mailto:wasson em azxws.com>
#
# Certifique-se que ha um handler para extensões inválidas no
# contexto [default] do extensions.conf:
# exten => s,1,Playback(invalid)
use Net::Telnet ();
use Net::Netmask();
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
#
# Configuracoes:
#
$managerHost='127.0.0.1'; # endereco do servidor rodando o Asterisk
$managerPort=5038; # porta da interface de gerenciamento do Asterisk
$managerUser='ususario'; # nome do usuario manager do Asterisk
# TODO: proteger esta senha
$managerSecret='senha'; # senha do manager
$defaultContext='from-internal'; # contexto padrao para a ligacao,
> pode
ser especificado
# na query string, senao este valor e utilizado
$defaultCID='callerid'; # Caller Id padrao pode ser especificado na
> query
string
@allowedNetworks= ('192.168.1.0/24'); # lista de redes (clientes)
> que podem
usar este script
@allwedReferers=('http://192.168.1.1/teste/teste.html'); # lista de
> paginas
que podem usar este script
#
# Prototipos
#
sub isInNetwork;
sub testIp;
sub testReferer;
# verifica se o cliente esta na lista de clientes autorizados
&testReferer($ENV{HTTP_REFERER}, em allwedReferers) or die "Pagina nao
autorizada a user este script: ", $ENV{HTTP_REFERER};
&testIp($ENV{REMOTE_ADDR}, em allowedNetworks) or die "Cliente nao
> autorizado
a usar este script: ", $ENV{REMOTE_ADDR};
#
# Parametros
#
my $phonetype = param('type') || "" ;
my $account = param('account') || "";
my $callerid = param('callerid') || $defaultCID;
my $context = param('context') || $defaultContext;
my $exten = param('exten') || "";
my $callid = param('callid') || 0;
# Limpar parametros
if ($exten) {$exten =~ s/([^A-Z0-9a-z\/@\.])//g;}
else {$exten="";}
if ($context) {$context =~ s/([^A-Z0-9a-z\-])//g;}
else {$context="";}
if ($account) {$account =~ s/([^A-Z0-9a-z])//g;}
else {$account="";}
# Testa se a extensao e valida (mais de dois digitos)
# TODO: melhorar o teste
if (not $exten =~ /[0-9][0-9]/) { die "Destino invalido, deve
> conter pelo
menos 2 numeros!"; };
#print header;
# Abre a conexao ao asterisk...
$tn = new Net::Telnet ( Port => $managerPort,
Prompt => '/.*[\$%#>] $/',
Output_record_separator => '',
Errmode => 'return'
);
$tn->open("$managerHost");
$tn->waitfor('/0\n$/');
$tn->print("ACTION: LOGIN\nUSERNAME: $managerUser\nSECRET:
$managerSecret\n\n");
$tn->waitfor('/Authentication accept*/')
or die "Nao foi possivel conectar ao asterisk: ", $tn->lastline;
# Abre a chamada
$tn->print("ACTION: ORIGINATE\nExten: $exten\nContext:
> $context\nChannel:
$phonetype/$account\nPriority: 1\nCallerid: $callerid\n\n");
$tn->waitfor('/Event: Newchannel.*/') or die "Nao foi possivel
> deteminar o
status da chamada: ", $tn>lastline;
$tn->print("Action: LOGOFF\n\n");
# Chamada aceita
# TODO: monitorar melhor a ligacao, mesmo que o numero for invalido o
programa chega aqui.
print "Location: $ENV{HTTP_REFERER}?callid=$callid&status=0\n\n";
exit 0;
sub isInNetwork {
my ($cidr,$ipaddress) = @_;
local $network = new Net::Netmask($cidr);
return $network->match($ipaddress);
}
sub testIp {
my($ip, em allowedNetworks) = @_;
my($matchFound) = 0;
foreach my $network (@allowedNetworks) {
$matchFound = isInNetwork($network,$ip);
if ($matchFound) {
last;
}
}
return $matchFound;
}
sub testReferer{
my($referer, em allowedReferers) = @_;
return scalar(grep(/$referrer/, em allowedReferers));
}
teste
_______________________________________________
LIsta de discussões AsteriskBrasil.org
AsteriskBrasil em listas.asteriskbrasil.org
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
_______________________________________________
Acesse o wiki AsteriskBrasil.org:
http://www.asteriskbrasil.org
> _________________________________________________________________
> Descubra aqui como mandar Torpedos Messenger!
> http://www.msn.com.br/artigos/maguire/default.asp
> http://www.msn.com.br/artigos/maguire/default.asp
> _______________________________________________
> LIsta de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> <mailto:AsteriskBrasil em listas.asteriskbrasil.org>
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> _______________________________________________
> Acesse o wiki AsteriskBrasil.org:
> http://www.asteriskbrasil.org
> __________ NOD32 1.1655 (20060712) Information __________
> This message was checked by NOD32 antivirus system.
> http://www.eset.com
> ------------------------------------------------------------------------
> _______________________________________________
> LIsta de discussões AsteriskBrasil.org
> AsteriskBrasil em listas.asteriskbrasil.org
> http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
> _______________________________________________
> Acesse o wiki AsteriskBrasil.org:
> http://www.asteriskbrasil.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFEtULQ2QVs8jsa1mQRAsmKAJwM+1lwXEwnqeXTqKBAVNS2QW/wNwCgmaLc
YbhA7NCAbKNIQh70ZOV1vnw=
=rCAu
-----END PGP SIGNATURE-----
Mais detalhes sobre a lista de discussão AsteriskBrasil