Joywork/callevents/telphin.php

67 lines
3.1 KiB
PHP
Raw Normal View History

2026-05-22 20:21:54 +02:00
<?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);
}