[AsteriskBrasil] RES: Discando pela WEB

Bernardo Vieira bernardo.vieira em terra.com.br
Sexta Julho 14 12:00:26 BRT 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ciro,
Esta solução não é exatamente boa, imagine só, esta shell extension que
faz a discagem para você não é nativa do windows, é uma feature do
softphone que você está usando. E quem não usa softphone? E quem não usa
Windows?

Ciro wrote:
> Pessoal,
> 
> Consegui ontem fazer funcionar de uma forma um pouco diferente, mas
> acredito que vcs já fizeram assim também.
> 
> A idéia é que vc esteja em qualquer página da web, e marque um número de
> telefone (como que fosse copiá-lo)
> Então vc clica no número marcado com o botão direito, e aparece em sua
> máquina uma opção "Discar para o número"
> O seu telefone voip irá tocar, e ao atender, o * discará para o número
> selecionado.
> 
> Vantagens: vc pode usar qq aplicativo web sem alteração do codigo.
> Desvantagem: para cada fone voip, vc alterará o registro do windows para
> adicionar a extenção voip correta da pessoa.
> 
> Estarei usando o Vtiger CRM para controlar as ligações saintes, portanto
> para mim o conjunto micro-softfone, são inseparáveis, então fica
> tranquilo alterar o registro em definitivo.
> 
> Ciro A. Toscano
> 
> -----Mensagem original-----
> De: asteriskbrasil-bounces em listas.asteriskbrasil.org
> [mailto:asteriskbrasil-bounces em listas.asteriskbrasil.org] Em nome de
> Bernardo Vieira
> Enviada em: quarta-feira, 12 de julho de 2006 15:43
> Para: asteriskbrasil em listas.asteriskbrasil.org
> Assunto: Re: [AsteriskBrasil] Discando pela WEB
> 
> 
> 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.h
>>> tml
>>>
>>>  > 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
_______________________________________________
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

iD8DBQFEt7GJ2QVs8jsa1mQRAp2rAJ9Zf8Yzt2dJZj9BSjCn5XSFG/5/cQCfRLK0
C1WDmO8Y09tSlgQnHVb9YlA=
=wStl
-----END PGP SIGNATURE-----


Mais detalhes sobre a lista de discussão AsteriskBrasil