67 lines
3.1 KiB
PHP
67 lines
3.1 KiB
PHP
|
|
<?php
|
|||
|
|
header('Content-Type: application/json');
|
|||
|
|
ini_set('display_errors',1);
|
|||
|
|
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
|||
|
|
/*if(!isset($content)){
|
|||
|
|
$content = 'CalledExtension=13270%2A101%40sipproxy.telphin.ru&CalledExtensionID=1100627&CallerExtension=13270%2A099%40sipproxy.telphin.ru&CallerExtensionID=1100642&EventType=hangup&CallID=a4c6877e7567409787c07a4f2fb9c7cc&CallerIDNum=%2B79218748035&CallerIDName=%2B79218748035&CalledDID=79311096224&CallStatus=ANSWER&CallFlow=in&CalledNumber=13270%2A101&SubCallID=1100627-0d9263924e5c4d44869d95a941b7593a&RecID=1100627-0d9263924e5c4d44869d95a941b7593a&Duration=9940194&CallAPIID=167903703-a4c6877e-7567-4097-87c0-7a4f2fb9c7cc&EventTime=1756295410013403&user_id=7881';
|
|||
|
|
|
|||
|
|
}*/
|
|||
|
|
$query = urldecode($content);
|
|||
|
|
|
|||
|
|
$arrQuery = explode('&', $query);
|
|||
|
|
$result = array();
|
|||
|
|
foreach($arrQuery as $val_query){
|
|||
|
|
$arrVal = explode('=',$val_query);
|
|||
|
|
$result[$arrVal[0]] = trim($arrVal[1]);
|
|||
|
|
}
|
|||
|
|
///var_dump($result);
|
|||
|
|
/*dial-in – входящий вызов;
|
|||
|
|
|
|||
|
|
dial-out – исходящий вызов;
|
|||
|
|
|
|||
|
|
hangup – окончание соединения;
|
|||
|
|
|
|||
|
|
answer – ответ;*/
|
|||
|
|
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
|||
|
|
if($result['EventType'] == 'dial-in' || $result['EventType'] == 'hangup' || $result['EventType'] == 'answer'){
|
|||
|
|
if($result['EventType'] != 'dial-in'){
|
|||
|
|
//Проверка на наличее звонка
|
|||
|
|
$sql = "SELECT id FROM telphin_operator_id WHERE uuid_call_id = '$result[SubCallID]'";
|
|||
|
|
//echo $sql;
|
|||
|
|
$q = mysql_query($sql);
|
|||
|
|
if(mysql_num_rows($q) == 0) die();
|
|||
|
|
}
|
|||
|
|
$data = array();
|
|||
|
|
$data['operator'] = 'TELPHIN';
|
|||
|
|
$data['operator_rus'] = 'Телфин';
|
|||
|
|
$data['operator_call_id'] = $result['SubCallID'];
|
|||
|
|
$data['internal_number'] = '+'.$result['CalledDID'];
|
|||
|
|
$data['external_number'] = $result['CallerIDNum'];
|
|||
|
|
$data['vpbx_id'] = $result['CalledNumber'];
|
|||
|
|
$data['uuid'] = $result['CallID'];
|
|||
|
|
$data['call_api_id'] = $result['CallAPIID'];
|
|||
|
|
if(isset($result['user_id'])){
|
|||
|
|
$data['user_id'] = $result['user_id'];
|
|||
|
|
}
|
|||
|
|
if (empty($data['external_number'])) die();
|
|||
|
|
$data['status'] = 1;
|
|||
|
|
if($result['EventType'] == 'hangup') $data['status'] = 0;
|
|||
|
|
if($result['CallStatus'] != 'CALLING' && $result['CallStatus'] != 'ANSWER') $data['status'] = 0;
|
|||
|
|
if (isset($result['EventTime']) && $result['EventType'] == 'dial-in') $data['start_time'] = (int)($result['EventTime'] / 1000 / 1000);
|
|||
|
|
else $data['start_time'] = 0;
|
|||
|
|
if (isset($result['EventTime']) && $result['EventType'] == 'answer') $data['answer_time'] = (int)($result['EventTime'] / 1000 / 1000);
|
|||
|
|
else $data['answer_time'] = 0;
|
|||
|
|
if (isset($result['EventTime']) && $result['EventType'] == 'hangup') $data['release_time'] = (int)($result['EventTime'] / 1000 / 1000);
|
|||
|
|
else $data['release_time'] = 0;
|
|||
|
|
if(isset($callDetail['xsi:redirect'])){
|
|||
|
|
$data['redirect'] = $callDetail['xsi:redirect'];
|
|||
|
|
} else {
|
|||
|
|
$data['redirect'] = false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//var_dump($data);
|
|||
|
|
$CallEvents = new CallEvents();
|
|||
|
|
$CallEvents->process($data);
|
|||
|
|
}
|
|||
|
|
|