[AsteriskBrasil] Script em php para efetuar chamadas ( http e Shellscript )

Sebastiao Rocha lixo em interlinksistemas.com.br
Segunda Abril 13 17:04:15 BRT 2009


AMI_login($oSocket, '$usuario, $password) . "<br>";

correto -> AMI_login($oSocket, $usuario, $password) . "<br>";

sem a aspa simples antes do $usuario.

  ----- Original Message ----- 
  From: Sebastiao Rocha 
  To: asteriskbrasil em listas.asteriskbrasil.org 
  Sent: Monday, April 13, 2009 4:44 PM
  Subject: [AsteriskBrasil] Script em php para efetuar chamadas ( http e Shellscript )


  Obs, fiz a alteração com o intuito de auxiliar, no entanto para uso como shell script, não realizei os testes após modificar.

  Para utilizar, efetue as seguinte alterações em seu asterisk.

  Conteudo do arquivo /etc/asterisk/manager.conf
  ------------------------------------------------------------------------------------------
  ; AMI - The Asterisk Manager Interface

  [general]
  displaysystemname = yes
  enabled = yes
  webenabled = yes
  port = 5038
  bindaddr = 0.0.0.0

  [admin]
  secret = coloque aqui a senha para acesso ao manager AMI
  read=system,call,log,verbose,command,agent,user,config
  write=system,call,log,verbose,command,agent,user,config
  permit=127.0.0.1; ou permita o uso via outro computador/rede ex: 192.168.0.0/24

  ; Authorization for various classes 
  read = system,call,log,verbose,command,agent,user,config
  write = system,call,log,verbose,command,agent,user,config
  ------------------------------------------------------------------------------------------



  Conteudo do arquivo chamada.php "soemnte para envio via http"
  ------------------------------------------------------------------------------------------
  <?php

  // Defina aqui as configurações....
  $usuario = 'usuario definido no manager.conf';
  $password = 'senha definida no manager.conf';
  $context = 'coloque aqui o contexto para efetuar a chamada'
  $callerid = 'coloque aqui o numero que vai aparecer no ramal';

  if ( isset( $_POST['telefone']) && isset($_POST['ramal'])  ) {
   
   function AMI_sip_status($socket, $sip)
   {
    fputs($socket, "ACTION: ExtensionState\r\n");
    fputs($socket, "Context: ". $context . "\r\n");
    fputs($socket, "Exten: " . $ramal . "\r\n");
    fputs($socket, "ActionID: 1\r\n\r\n");
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
   
    return fgets($socket);
   }
   
   function AMI_originate($socket, $phonenumber)
   {
    fputs($socket, "Action: originate\r\n");
    fputs($socket, "Timeout: 30000\r\n");
    fputs($socket, "CallerId: " . $callerid <$phonenumber>\r\n");
    fputs($socket, "RetryTime: 45\r\n");
    fputs($socket, "WaitTime: 30\r\n");
    fputs($socket, "Channel: SIP/" . $ramal . "\r\n");
    fputs($socket, "Exten: $phonenumber\r\n");
    fputs($socket, "Context: ". $context . "\r\n");
    fputs($socket, "Priority: 1\r\n");
    fputs($socket, "ActionID: 1\r\n\r\n");
   
    fgets($socket);
    fgets($socket);
    fgets($socket);  
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
    
    $result = fgets($socket);
    echo $result;    
   }
   
   function AMI_login($socket, $username, $password)
   {
    fputs($socket, "Action: login\r\n");
    fputs($socket, "Username: $username\r\n");
    fputs($socket, "Secret: $password\r\n\r\n");
    fputs($socket, "Events: off\r\n\r\n");
   
    return fgets($socket);
   }
   
   if ( isset($_POST['telefone']) && inset($_POST['ramal']) )  {
    $number = strtolower($_POST['telefone']); // Número a chamar
    $ramal = $_POST['ramal']; // Ramal que será chamado ao ser atendida a chamada efetuada.
    $errno = 0;
    $errstr = 0;
   
    $oSocket = fsockopen("localhost", 5038, &$errno, &$errstr, 20);
    if (!$oSocket)
    {
     echo "Não foi poss&iacute;vel completar a chamada...";
    }
    else
    {
     fgets($oSocket);
   
     AMI_login($oSocket, '$usuario, $password) . "<br>";
     AMI_originate($oSocket, $number) . "<br>";
   
     fputs($oSocket, "Action: Logoff\r\n\r\n");
     fclose($oSocket);
    }
   }
  }
  <?php


  Conteudo do arquivo chamada.php "somente para envio via shell script"
  ------------------------------------------------------------------------------------------
  #!/usr/bin/php -q

  <?php
  //Como utilizar: 
  // ./chamada.php telefone ramal
  // ./chamada.php 03432564400 2000

  // Defina aqui as configurações....
  $usuario = 'usuario definido no manager.conf';
  $password = 'senha definida no manager.conf';
  $context = 'coloque aqui o contexto para efetuar a chamada'
  $callerid = 'coloque aqui o numero que vai aparecer no ramal';

  if ( isset( $argv[1] ) && isset($argv[2])  ) {
   
   function AMI_sip_status($socket, $sip)
   {
    fputs($socket, "ACTION: ExtensionState\r\n");
    fputs($socket, "Context: ". $context . "\r\n");
    fputs($socket, "Exten: " . $ramal . "\r\n");
    fputs($socket, "ActionID: 1\r\n\r\n");
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
   
    return fgets($socket);
   }
   
   function AMI_originate($socket, $phonenumber)
   {
    fputs($socket, "Action: originate\r\n");
    fputs($socket, "Timeout: 30000\r\n");
    fputs($socket, "CallerId: " . $callerid <$phonenumber>\r\n");
    fputs($socket, "RetryTime: 45\r\n");
    fputs($socket, "WaitTime: 30\r\n");
    fputs($socket, "Channel: SIP/" . $ramal . "\r\n");
    fputs($socket, "Exten: $phonenumber\r\n");
    fputs($socket, "Context: ". $context . "\r\n");
    fputs($socket, "Priority: 1\r\n");
    fputs($socket, "ActionID: 1\r\n\r\n");
   
    fgets($socket);
    fgets($socket);
    fgets($socket);  
    fgets($socket);
    fgets($socket);
    fgets($socket);
    fgets($socket);
    
    $result = fgets($socket);
    echo $result;    
   }
   
   function AMI_login($socket, $username, $password)
   {
    fputs($socket, "Action: login\r\n");
    fputs($socket, "Username: $username\r\n");
    fputs($socket, "Secret: $password\r\n\r\n");
    fputs($socket, "Events: off\r\n\r\n");
   
    return fgets($socket);
   }
   
   if ( isset($_POST['telefone']) && inset($_POST['ramal']) )  {
    $number = strtolower($argv[1]); // Número a chamar
    $ramal = $argv[2]; // Ramal que será chamado ao ser atendida a chamada efetuada.
    $errno = 0;
    $errstr = 0;
   
    $oSocket = fsockopen("localhost", 5038, &$errno, &$errstr, 20);
    if (!$oSocket)
    {
     echo "Não foi poss&iacute;vel completar a chamada...";
    }
    else
    {
     fgets($oSocket);
   
     AMI_login($oSocket, '$usuario, $password) . "<br>";
     AMI_originate($oSocket, $number) . "<br>";
   
     fputs($oSocket, "Action: Logoff\r\n\r\n");
     fclose($oSocket);
    }
   }
  }

  ?>
    ----- Original Message ----- 
    From: Ricardo Guedes de Carvalho 
    To: asteriskbrasil em listas.asteriskbrasil.org 
    Sent: Monday, April 13, 2009 4:26 PM
    Subject: Re: [AsteriskBrasil]script para realizar ligação no asterisk (AGI)


    ok, vou testar aki...só uma pergunta, esse arquivo chamada.php deve estar localizado em /var/www/  certo?


    2009/4/13 Sebastiao Rocha <lixo em interlinksistemas.com.br>

      Para utilizar, efetue as seguinte alterações em seu asterisk.

      Conteudo do arquivo /etc/asterisk/manager.conf
      ------------------------------------------------------------------------------------------
      ; AMI - The Asterisk Manager Interface

      [general]
      displaysystemname = yes
      enabled = yes
      webenabled = yes
      port = 5038
      bindaddr = 0.0.0.0

      [admin]
      secret = coloque aqui a senha para acesso ao manager AMI
      read=system,call,log,verbose,command,agent,user,config
      write=system,call,log,verbose,command,agent,user,config
      permit=127.0.0.1; ou permita o uso via outro computador/rede ex: 192.168.0.0/24

      ; Authorization for various classes 
      read = system,call,log,verbose,command,agent,user,config
      write = system,call,log,verbose,command,agent,user,config
      ------------------------------------------------------------------------------------------



      AMI_login($oSocket, 'usuario', 'senha') . "<br>";


      Conteudo do arquivo chamada.php
      ------------------------------------------------------------------------------------------
      <?php 
      $usuario = 'usuario definido no manager.conf';
      $password = 'senha definida no manager.conf';

      if ( isset( $_POST['telefone']) && isset($_POST['ramal'])  ) {

       function AMI_sip_status($socket, $sip)
       {
        fputs($socket, "ACTION: ExtensionState\r\n");
        fputs($socket, "Context: interlink\r\n");
        fputs($socket, "Exten: " . $ramal . "\r\n");
        fputs($socket, "ActionID: 1\r\n\r\n");
        fgets($socket);
        fgets($socket);
        fgets($socket);
        fgets($socket);
        fgets($socket);
        fgets($socket);
        fgets($socket);
        fgets($socket);
        fgets($socket);
        fgets($socket);

        return fgets($socket);
       }

       function AMI_originate($socket, $phonenumber)
       {
        fputs($socket, "Action: originate\r\n");
        fputs($socket, "Timeout: 30000\r\n");
        fputs($socket, "CallerId: Site Interlink <$phonenumber>\r\n");
        fputs($socket, "RetryTime: 45\r\n");
        fputs($socket, "WaitTime: 30\r\n");
        fputs($socket, "Channel: SIP/" . $ramal . "\r\n");
        fputs($socket, "Exten: 0$phonenumber\r\n");
        fputs($socket, "Context: interlink\r\n");
        fputs($socket, "Priority: 1\r\n");
        fputs($socket, "ActionID: 1\r\n\r\n");

        fgets($socket);
        fgets($socket);
        fgets($socket);  
        fgets($socket);
        fgets($socket);
        fgets($socket);
        fgets($socket);
        
        $result = fgets($socket);
        echo $result;    
       }

       function AMI_login($socket, $username, $password)
       {
        fputs($socket, "Action: login\r\n");
        fputs($socket, "Username: $username\r\n");
        fputs($socket, "Secret: $password\r\n\r\n");
        fputs($socket, "Events: off\r\n\r\n");

        return fgets($socket);
       }

       if ( isset($_POST['telefone']) && inset($_POST['ramal']) )  {
        $number = strtolower($_POST['telefone']); // Número a chamar
        $ramal = $_POST['telefone']; // Ramal que será chamado ao ser atendida a chamada efetuada.
        $errno = 0;
        $errstr = 0;

        $oSocket = fsockopen("localhost", 5038, &$errno, &$errstr, 20);
        if (!$oSocket)
        {
         echo "Não foi poss&iacute;vel completar a chamada...";
        }
        else
        {
         fgets($oSocket);

         AMI_login($oSocket, '$usuario, $password) . "<br>";
         AMI_originate($oSocket, $number) . "<br>";

         fputs($oSocket, "Action: Logoff\r\n\r\n");
         fclose($oSocket);
        }
       }
      }
      <?php


------------------------------------------------------------------------------


  _______________________________________________
  Openmoko Freerunner, primeiro telefone open source, disponível no Brasil rodando o Android da Google.
  http://www.neodroid.com

  Compre uma camiseta da AsteriskBrasil.org!
  http://www.voipmania.com.br

  Acesse o canal IRC de discussão sobre Asterisk em Português Brasileiro na rede Freenode.net: #asterisk-br
  _______________________________________________
  Lista de discussões AsteriskBrasil.org
  AsteriskBrasil em listas.asteriskbrasil.org
  http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://listas.asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20090413/6277c5c0/attachment-0001.htm 


Mais detalhes sobre a lista de discussão AsteriskBrasil