[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