[AsteriskBrasil] Esquema para trancar ligacoes simultaneas

Beethoven beethoven em warchalking.com.br
Terça Novembro 22 01:03:31 BRT 2005


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



Mais detalhes sobre a lista de discussão AsteriskBrasil