[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