[AsteriskBrasil] Discando pela WEB

Pablo Weyne pablo em ceara.net.br
Quarta Julho 12 10:23:41 BRT 2006


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 
  To: 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>
  >Reply-To: asteriskbrasil em listas.asteriskbrasil.org
  >To: asteriskbrasil em listas.asteriskbrasil.org
  >Subject: Re: [AsteriskBrasil] Discando pela WEB
  >Date: Mon, 10 Jul 2006 11:14:13 -0300
  >
  >-----BEGIN PGP SIGNED MESSAGE-----
  >Hash: SHA1
  >
  >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>
  > >> Reply-To: asteriskbrasil em listas.asteriskbrasil.org
  > >> To: wellingtoncs em gmail.com,  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/>, 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
  > >>>>
  > >>>>
  > >>>> 
  >------------------------------------------------------------------------
  > >>>>
  > >>>> _______________________________________________
  > >>>> 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
  >_______________________________________________
  >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
  > > 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
  >
  >iD8DBQFEsmC12QVs8jsa1mQRAgtRAJ0TCYzRFvTwAxjySM6NuMjktO9YjQCfTb6S
  >cEdRDWGJx/3LqOoiDczUSUU=
  >=80tG
  >-----END PGP SIGNATURE-----


  >#!/usr/bin/perl -w
  ># getdial.pl
  ># Copyright (C) 2006 Bernardo Vieira 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
  >#
  ># 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
  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

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20060712/21bfd84e/attachment-0001.html


Mais detalhes sobre a lista de discussão AsteriskBrasil