71 lines
2.8 KiB
PHP
71 lines
2.8 KiB
PHP
|
|
<?php
|
||
|
|
ini_set('display_errors',0);
|
||
|
|
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
||
|
|
$content = file_get_contents('php://input');
|
||
|
|
if(!empty($content)) {
|
||
|
|
require_once ('XMLParser.php');
|
||
|
|
$xmlParser = new XMLParser;
|
||
|
|
$inputArray = $xmlParser->xmlstr_to_array($content);
|
||
|
|
//file_put_contents($_SERVER["DOCUMENT_ROOT"]."/callevents/request2.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);
|
||
|
|
|
||
|
|
}
|