[AsteriskBrasil] Retorno click-to-call

Danilo Almeida daniloricalmeida em gmail.com
Quinta Maio 21 11:39:30 BRT 2015


Bom dia, Pessoal!!

Surgiu a necessidade de integrar um sistema de terceiro em um servidor que
tenho em um cliente.

O sistema fará uma discagem através de uma URL que criei.

http://asterisk/discador.php?user=USER&pass=SENHA&origem=RAMAL&destino=NUMERO

segue codígo:

<?php
include_once "Connection.class.php";

 # Usuario e senha para acesso ao sistema
 $origem = $_GET['origem'];
 $destino = $_GET['destino'];

$conn = new Connection();

    $user = anti_injection($_GET['user']);
    $pass = anti_injection($_GET['pass']);

    $sql1 = 'SELECT * FROM tb_usuarios WHERE user_login = \''.$user.'\'AND
user_senha = \''.$pass.'\'';
          $rs = mysql_query($sql1);
          if(mysql_num_rows($rs) > 0 ){
            $permissao = TRUE;
          }else{
            $permissao =  FALSE;
          }


if(($permissao == TRUE)AND($origem != "")AND($destino != "")){ #informe o
endereco ip do seu asterisk

 $strHost = "127.0.0.1";

 #especifique o usuario que ira conectar ao CLI (deve estar definido em
/etc/asterisk/manager.conf)
 $strUser = "USUARIO";

 #senha para o usuario acima
 $strSecret = "SENHA";

 #especifique o canal (extension) que vc deseja receber estas ligacoes
 #exemplo: SIP/XXX, IAX2/XXXX, ZAP/XXXX,
 $strChannel = "Local/".$origem."@contexto-discador";

 #informe o contexto que ira processar a ligacao para PSTN
 $strContext = "contexto-pabx";

 #especifique a prioridade do contexto acima
 $strPriority = "1";

 #especifique a quantidade de tentativas
 $strMaxRetry = "2";

 $WaitTime = "30";

 #Duração entre uma tentativa e outra
 $RetryTime = "15";

 #obtem o numero a ser discado
 $strExten = $destino;

 #especifica um callerid para a ligacao
 $strCallerId = $origem;

 #nome do arquivo a ser criado
 $arquivo_tmp = "/tmp/".$strExten.".call";
 #diretorio a ser movido após escrita
 $arquivo_call = "/var/spool/asterisk/outgoing/".$strExten.".call";

 #abre arquivo
 $oSocket = $fp = fopen($arquivo_tmp, "w");

 fputs($oSocket, "Channel: $strChannel\r\n");
 fputs($oSocket, "Callerid: $strCallerId\r\n");
 fputs($oSocket, "Extension: $strExten\r\n");
 fputs($oSocket, "Context: $strContext\r\n");
 fputs($oSocket, "MaxRetries: $strMaxRetry\r\n");
 fputs($oSocket, "RetryTime: $RetryTime\r\n");
 fputs($oSocket, "WaitTime: $WaitTime\r\n\r\n");

 fclose(oSocket);

system("mv ".$arquivo_tmp." ".$arquivo_call);

 //copy($arquivo_tmp,$arquivo_call);
//unlink($arquivo_tmp);

 echo "ok";

exit;

}else{
echo "Parametros invalidos";

exit;
}
?>

Através dessa URL esta realizando ligação normalmente, o que gostaria da
ajuda de vocês, é uma maneira de retornar o status da chamada através dessa
mesma URL para o sistema.

EX: 0 - ok, 1 - ramal indisponivel, etc

Sei que tem alguma forma, gostaria de saber se alguém já desenvolveu alguma
coisa assim e pode me dar uma dica.

OBS: Estou escrevendo um arquivo .call e jogando ele dentro do outgoing do
asterisk para gerar a chamada. No asterisk 11 tentei fazer com o originate
e não obtive sucesso.

Desde já agradeço.. abraços!!

*att*
*Danilo Almeida*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://asteriskbrasil.org/pipermail/asteriskbrasil/attachments/20150521/712cf615/attachment-0001.html>


Mais detalhes sobre a lista de discussão AsteriskBrasil