[AsteriskBrasil] Executando Comandos Asterisk [Socket]

brunoantognolli em email.com brunoantognolli em email.com
Quarta Novembro 18 09:01:41 BRST 2009


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
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20091118/a93d1456/attachment.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil