forked from Claudio/integracao
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
4.7 KiB
123 lines
4.7 KiB
<?php |
|
####################################### |
|
### WEBHOOK PARA SIGMA ### |
|
####################################### |
|
|
|
header("Access-Control-Allow-Origin: *"); |
|
header("Content-Type: application/json; charset=UTF-8"); |
|
header("Access-Control-Allow-Methods: OPTIONS,GET,POST,PUT,DELETE"); |
|
header("Access-Control-Max-Age: 3600"); |
|
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"); |
|
|
|
/** |
|
* DEFINE REQUEST AUTENTICACAO API |
|
*/ |
|
define('CONF_AUTH_LOGIN', '28af9b7eda6fd6f0ad22c65b0ed85804'); |
|
define('CONF_AUTH_PASSWORD', 'c757ea2752a9ed97b8dcd0645eb91eff'); |
|
define('CONF_AUTH_TOKEN', 'af7ff548c996e6afc7999b57586268618ef019f2'); |
|
|
|
/** |
|
* DEFINE REQUEST AUTENTICACAO API SIMPLES IP |
|
*/ |
|
define('CONF_AUTH_SIMPLESIP_LOGIN', 'user.api'); |
|
define('CONF_AUTH_SIMPLESIP_PASSWORD', '0000'); |
|
|
|
/** |
|
* CONFIGURACAO DE LOG |
|
*/ |
|
define('CONF_LOGGER_REQUEST', '/var/log/asterisk/sigma_request.log'); |
|
|
|
$arquivo = fopen('teste.txt', 'w'); |
|
fwrite($arquivo, print_r($_SERVER, true)); |
|
fclose($arquivo); |
|
|
|
|
|
try { |
|
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); |
|
$uri = explode('/', $uri); |
|
$requestMethod = $_SERVER["REQUEST_METHOD"]; |
|
$data['data_request'] = date('Y-m-d H:i:s'); |
|
$data['remote_address'] = $_SERVER['REMOTE_ADDR']; |
|
$data['user_agent_browser'] = $_SERVER['HTTP_USER_AGENT']; |
|
$data = filter_input_array(INPUT_GET, FILTER_SANITIZE_SPECIAL_CHARS); |
|
|
|
if (!isset($data['usuario']) || !isset($data['senha']) || !isset($data['token'])) { |
|
header('WWW-Authenticate: Basic realm="Click to Call"'); |
|
header('HTTP/1.0 401 Unauthorized'); |
|
throw new Exception("Sem credenciais para autenticacao!"); |
|
} else { |
|
if($data['usuario'] == CONF_AUTH_LOGIN && $data['senha'] == CONF_AUTH_PASSWORD && $data['token'] == CONF_AUTH_TOKEN){ |
|
|
|
header('WWW-Authenticate: Basic realm="Click to Call"'); |
|
header('HTTP/1.0 200 OK'); |
|
message(print_r($data, true)); |
|
|
|
}else{ |
|
throw new Exception("Autenticacao invalida para o WebHook. Verifique os dados de acesso."); |
|
} |
|
} |
|
|
|
$urlChamada = "http://127.0.0.1/integracao/?method=ChamadaRamal&numeroDiscar=" . removemask($data['exten']) . "&ramal={$data['ramal']}&login=" . CONF_AUTH_SIMPLESIP_LOGIN . "&senha=" . CONF_AUTH_SIMPLESIP_PASSWORD . "&tipoRetorno=JSON"; |
|
$result = json_decode(file_get_contents($urlChamada)); |
|
|
|
$data['uniqueid'] = $result->id_chamada; |
|
if (!$data['uniqueid']) { |
|
throw new Exception('Nao foi possivel realizar a chamada'); |
|
} |
|
|
|
if ($result->id_chamada) { |
|
$data['result'] = $result->result; |
|
message(print_r( |
|
array( |
|
"Server" => $_SERVER['SERVER_NAME'], |
|
"Request" => $requestMethod, |
|
"URI" => $uri, |
|
"Body" => $data, |
|
"Data" => array(removemask($data['destination']), $data['exten']), |
|
"API Simples IP" => $result) |
|
, true)); |
|
} |
|
|
|
$responseApi = array( |
|
"status" => "OK", |
|
"callstatus" => "Trying", |
|
"message" => "Call in Progress", |
|
"callid" => $result->id_chamada, |
|
"userfild" => $result->id_chamada, |
|
"id" => $result->id_chamada); |
|
|
|
response($responseApi); |
|
|
|
} catch (Exception $ex) { |
|
message($ex->getMessage(), $data); |
|
response('fail', $data, $ex->getMessage()); |
|
} |
|
|
|
function removemask($phone) { |
|
$array = str_split($phone); |
|
$remove = array('(', ')', ' ', '-'); |
|
foreach ($array as $key => $value) { |
|
if (in_array($value, $remove)) { |
|
unset($array[$key]); |
|
} |
|
} |
|
return implode($array); |
|
} |
|
|
|
function message($param, $data = array()) { |
|
$log = "[DATE] " .date('Y-m-d H:i:s'). " [MESSAGE]: {$param} [DATA]: " . print_r($data, true) . "\n"; |
|
$log .= "------------------------------------------------------------------------------------------------\n"; |
|
file_put_contents(CONF_LOGGER_REQUEST, $log, FILE_APPEND); |
|
} |
|
|
|
function auth($login, $password) { |
|
if (($login == CONF_AUTH_LOGIN) && ($password == CONF_AUTH_PASSWORD)) { |
|
return true; |
|
} |
|
return false; |
|
} |
|
|
|
function response($response) { |
|
echo json_encode( $response ); |
|
} |
|
|