Joywork/callevents/incall.php

80 lines
3.1 KiB
PHP
Raw Permalink Normal View History

2026-05-22 20:21:54 +02:00
<?php
ini_set('display_errors',1);
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
//header('Content-Type: application/json');
$content = file_get_contents($_SERVER["DOCUMENT_ROOT"].'/callevents/request2.xml');
if(!empty($content)) {
require_once ('XMLParser.php');
$xmlParser = new XMLParser;
$inputArray = $xmlParser->xmlstr_to_array($content);
//var_dump($inputArray);
//file_put_contents($_SERVER["DOCUMENT_ROOT"]."/callevents/request3.txt", print_r($content, true) . "\n", FILE_APPEND);
}
if (function_exists('fastcgi_finish_request')) {
fastcgi_finish_request();
} else {
ignore_user_abort(true);
set_time_limit(0);
ob_start();
echo 'OK';
header('Connection: close');
header('Content-Length: '.ob_get_length());
ob_end_flush();
ob_flush();
flush();
}
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
$type = $inputArray['xsi:eventData']['@attributes']['type'];
if($type == 'xsi:CallAnsweredEvent' or $type == 'xsi:CallReleasedEvent' or $type == 'xsi:CallReceivedEvent') {
$callDetail = $inputArray['xsi:eventData']['xsi:call'];
if ($callDetail['xsi:personality'] == 'Terminator') {
$data = array();
$data['operator'] = 'BEELINE';
$data['operator_rus'] = 'Билайн';
$data['operator_call_id'] = $callDetail['xsi:callId'];
$data['internal_number'] = '+7' . str_replace('@ip.beeline.ru', '', $inputArray['xsi:targetId']);
$data['external_number'] = str_replace('tel:', '', $callDetail['xsi:remoteParty']['xsi:address']['@content']);
if (empty($data['external_number']) || $data['external_number'] == 't') die();
$data['status'] = 1;
if($callDetail['xsi:state'] == 'Released') $data['status'] = 0;
$data['uuid'] = $inputArray['xsi:targetId'] . '.' . $callDetail['xsi:startTime'];
$data['vpbx_id'] = $inputArray['xsi:targetId'];
if (isset($callDetail['xsi:startTime'])) $data['start_time'] = (int)($callDetail['xsi:startTime'] / 1000);
else $data['start_time'] = 0;
if (isset($callDetail['xsi:answerTime'])) $data['answer_time'] = (int)($callDetail['xsi:answerTime'] / 1000);
else $data['answer_time'] = 0;
if (isset($callDetail['xsi:releaseTime'])) $data['release_time'] = (int)($callDetail['xsi:releaseTime'] / 1000);
else $data['release_time'] = 0;
if(isset($callDetail['xsi:redirect'])){
$data['redirect'] = $callDetail['xsi:redirect'];
} else {
$data['redirect'] = false;
}
$CallEvents = new CallEvents();
$CallEvents->process($data);
}
} elseif ($type == 'xsi:SubscriptionEvent'){
$subscriptionId = $inputArray['xsi:subscriptionId'];
$beeline = new BeelineApiClass($subscriptionId);
$beeline->subscription_url = 'http://subscribe.joywork.ru/incall.php';
$beeline->renewSubscription($subscriptionId);
}
?>