[AsteriskBrasil] Executando Comandos Asterisk [Socket

brunoantognolli em email.com brunoantognolli em email.com
Quarta Novembro 18 09:43:03 BRST 2009


Legal saber que dá para enviar pelo socket.

Desenvolvi uma API Java-Asterisk para executar comandos do asterisk e está funcionando.

Qual é melhor enviar comandos por AGI ou pelo Socket?


(Esclarecendo minha pergunta do email anterior)
Se é possível enviar comandos pelo socket, pra que existe o manager.conf? ^^

Att
Bruno


-----Original Message-----
From: Eder Souza <eder.souza em bsd.com.br>
To: asteriskbrasil em listas.asteriskbrasil.org
Sent: Wed, Nov 18, 2009 9:29 am
Subject: Re: [AsteriskBrasil] Executando Comandos Asterisk [Socket]



Sua pergunta ficou confusa.
 
Mas o Manager porta 5038 ela abre o socket para vc, uma vez lá dentro conectado vc pode executar qualquer comando disponivel pela CLI> !!
 
Olha só o que seu amigo fez mandou um socket para o ip do manager na porta 5038 e depois mandou Action: Login\r\nUsername: root\r\nSecret: senha\r\nActionID: 1\r\n\r\n
 
Repare no \r\n no fim de cada parametro isso nada mais é do q o "Enter" por final ele da dois "Enters" \r\n\r\n e pronto vc esta logado no manager via socket nao teria como ser de outra maneira !!!
 
uma vez conectado vc pode enviar comandos qualquer comando exemplos que eu tenho feito aqui olha !!
 
                  self.socket.send('Action: Command\r\n')
                  self.socket.send('Command: sip show peer 668\r\n\r\n')

Exemplo feito em Pythom repare na vc envoca o Action: Command depois dele é só vc dar o comando q vc quiser dando um "Command:" !!!
 
exemplo em Perl q também fiz aqui
 

$tn->print("Action: Command\n\n");
$tn->print("Command: sip show peer 668\r\n\r\n");
 
 
Tudo tem a mesma lógica em C, Delphi ou java !!
 
Att,
 
Eng Eder de Souza

 
 

 
2009/11/18 <brunoantognolli em email.com>


Pessoal, bom dia!
 
Há algum tempo, perguntei na lista como fazer o asterisk executar um comando pelo java.
Com a ajuda de vcs, principalmente do Éder consegui fazer o código e postei ele aqui no fórum.
 
Porém surgiu uma outra pergunta/dúvida, seria possível eu executar comandos do asterisk através de Socket?
 
Eu sei que através de Socket consigo conectar no servidor e executar comandos, a dúvida é se eu consigo conectar no servidor, acessar o "rasterisk" e enviar o comando necessário.
 
Sería necessário conectar no Manager para executar comandos ou somente pelo socket consigo enviar comandos dentro do rasterisk? 
 
Abaixo tenho uma classe que um amigo desenvolveu em .NET que está tentando fazer isso, (se não for possível, já me avisem, por favor) 
 
 
 
public class SendMessage
    {
        public static void Enviar(string codigoArea, string celular, string mensagem)
        {
            // Connect to the asterisk server. 
            Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("192.168.xx.xx"), 22);
            clientSocket.Connect(serverEndPoint);
            // Login to the server; manager.conf needs to be setup with matching credentials. 
            clientSocket.Send(Encoding.ASCII.GetBytes("Action: Login\r\nUsername: root\r\nSecret: senha\r\nActionID: 1\r\n\r\n"));
            // Enviar mensagem
            //clientSocket.Send(Encoding.ASCII.GetBytes("dgv send sms 1496832521 'teste'"));
            int bytesRead = 0;
            do
            {
                byte[] buffer = new byte[1024];
                bytesRead = clientSocket.Receive(buffer);
                //Console.WriteLine(bytesRead + " bytes from asterisk server."); 
                
                string response = Encoding.ASCII.GetString(buffer, 0, bytesRead);
                Console.WriteLine(response);
                if (Regex.Match(response, "Message: Authentication accepted", RegexOptions.IgnoreCase).Success)
                {
                    // Send a ping request the asterisk server will send back a pong response. 
                    clientSocket.Send(Encoding.ASCII.GetBytes("Action: Ping\r\nActionID: 2\r\n\r\n"));
                }
            } while (bytesRead != 0);
            Console.WriteLine("Connection to server lost.");
            Console.ReadLine();
        }
    }
 
Att,
Bruno

_______________________________________________
        http://www.voipmania.com.br
Telefone IP sem fio Gigaset A580IP por 6 x R$59,90.
        Promoção por tempo limitado!
_______________________________________________
Lista de discussões AsteriskBrasil.org
AsteriskBrasil em listas.asteriskbrasil.org
http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil





_______________________________________________
        http://www.voipmania.com.br
elefone IP sem fio Gigaset A580IP por 6 x R$59,90. 
        Promoção por tempo limitado!
______________________________________________
ista de discussões AsteriskBrasil.org
steriskBrasil em listas.asteriskbrasil.org
ttp://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20091118/64d69e89/attachment.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil