[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