[AsteriskBrasil] Ligações Simultaneas - Se alguem precisar

Alex Montoanelli alexm em unetvale.com.br
Segunda Janeiro 30 08:19:59 BRST 2006


Olá a todos,
tomei a liberdade fiz algumas modificação no script do Beethoven...
nesse não há nescessidade de informar o canal, a ser verificando dentro 
do script
e sim vc faz a refencia passando como paramentro na linha agi
segue script, e referencias a ser colocada no dialplan

abraços..

exemplo básico no dialplan,,fica melhor dentro de uma macro...

*exten => 300,1,agi(emuso.pl,${EXTEN});
exten => 300,n,dial(SIP/30,30,tTr);
exten => 300,50,playback(astcc-sbusy)
exten => 300,n,busy(5)
exten => 300,n,hangup
*

//////////SCRIPT

*# Script Original
# ================================
# Comunidade Warchalking 
#www.warchalking.com.br
#
# SCRIPT BY Beethoven
# beethoven em warchalking.com.br
# ================================
#
# Modificado por Alex Montoanelli
# Unetvale
# www.unetvale.com.br
# alexm em unetvale.com.br
#
*

*
*

*#!/usr/bin/perl*

*use Net::Telnet();
use Asterisk::AGI();


############# CONFIGURACOES ##############
$host_manager = "youhost";
$user_manager = "youruser";
$senha_manager = "yourpass";
############################################

$AGI = new Asterisk::AGI();
$t = new Net::Telnet (Port => 5038, Timeout => 2, 
Output_record_separator => '',Prompt => '/.*[\$%#>] $/');


$telefone = $ARGV[0];

$AGI->verbose("Verificando o stauts da ext $telefone");

$t->open("$host_manager");
$t->waitfor('/0\n$/');
$login = "Action: Login\nUsername: $user_manager\nSecret: 
$senha_manager\n\n";
$t->print($login);
$t->waitfor('/Authentication.*/');
@lines = $t->cmd(String => "Action: command\nCommand: show 
channels\n\n", Prompt => '/--END COMMAND--/', Errmode => "die");

                foreach $line (@lines){
                if ($line =~ "^SIP/$telefone") { $em_uso = 1};
                }

        if($em_uso){
        $res = $AGI->verbose("Linha Ocupada, parando");
        $res = $AGI->set_priority('50');
        }
        unless($em_uso){
        $res = $AGI->verbose("Linha ok, prosseguindo");
        };*



Beethoven wrote:
> Seguinte: é meio um bolo mas funciona.
> dentro do /etc/asterisk/manager.conf
> deixe mais ou menos assim:
> ali em permit coloque o seu host pra loga
> ------------------------------------------------------------------------
> ;
> ; Asterisk Call Management support
> ;
> [general]
> enabled = yes
> port = 5038
> bindaddr = 0.0.0.0
>
> [user_manager]
> secret = senha_manager
> deny=0.0.0.0/0.0.0.0
> permit=127.0.0.1/255.255.255.0
> permit=200.200.200.123
> permit=localhost
> read = system,call,log,verbose,command,agent,user
> write = system,call,log,verbose,command,agent,user
> --------------------------------------------------------------------------
> --
> -
> vc precise destes dois modulos do perl instalados:
> Net::Telnet
> Asterisk::AGI
>
> basta entra no site www.cpan.org e lah em modulos search baixar e
> instalar..
> conforme a distribuicao do linux
> precisa do modulo perl-devel instalado para compilar os modulos
> --------------------------------------------------------------------------
> --
> -
> quando instalar o Net::Telnet, precisa alterar um troço do modulo pra naum
> dar pau, aqui instalou em:
> /usr/lib/perl5/site_perl/5.8.6/Net/Telnet.pm
>
> edite o arquivo e comente a linha que tem:
> return $self->error("pattern match read eof") if $s->{eofile};
>
> ficando assim:
> # return $self->error("pattern match read eof") if $s->{eofile};
> --------------------------------------------------------------------------
> --
> -
> agora copie este escript para dentro do diretorio AGI
> que conforme a instalacao fica em:
>   

> /var/lib/asterisk/agi-bin
>
> grave como fifo.444 e altere na parte das configuracoes para os teus dados
> -------------------------------------------------------------------------
> #!/usr/bin/perl
> # Comunidade Warchalking Brazil
> # www.warchalking.com.br
> #
> # SCRIPT BY Beethoven
> # beethoven em warchalking.com.br
> #
> use Net::Telnet ();
> use Asterisk::AGI;
> ############# CONFIGURACOES ##############
> $host_manager = "200.200.200.1";
> $user_manager = "user_manager";
> $senha_manager = "senha_manager";
> $telefone = "SIP/900900";
> ############################################
> $t = new Net::Telnet (Timeout => 10,
>                           Port=> 5038);
> $t->input_log(log_manager);
> $t->open("$host_manager");
>
> $t->cmd("Action: login\nUsername: $user_manager\nSecret:
> $senha_manager\nEvents: off\n\nAction: Status\nLink:$telefone\n\nAction:
> logoff\n\n");
> open(ARQUIVO,"< log_manager");
> @arquivo = <ARQUIVO>;
> close(ARQUIVO);
> foreach $linha(@arquivo){
>     if($linha =~ /State: Up/){$em_uso = 1}
>                              }
>
> $AGI = new Asterisk::AGI;
> print STDERR "------------------------------------------";
> if($em_uso){$res = $AGI->exec('Hangup')};
> unless($em_uso){$res = $AGI->exec('Dial', '$telefone')};
>
> -------------------------------------------------------------------------
>
> salve e de o comando:
> chmod 755 fifo.444
>
> --------------------------------------------------------------------------
> blz... agora é soh configura no extensions.conf que fica:
> exten => _900900,1,AGI(fifo.444)
> --------------------------------------------------------------------------
>
> blz.. eh isso.. qualquer coisa da um toque
>
>
> abraço
>
> Beethoven
> beethoven em warchalking.com.br
>
> _______________________________________________
> 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
>   

-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome  : alexm.vcf
Tipo  : text/x-vcard
Tam   : 230 bytes
Descr.: não disponível
Url   : http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20060130/59c9a855/alexm.vcf


Mais detalhes sobre a lista de discussão AsteriskBrasil