} else { if ($_POST['COMMAND'] == 'answer') { $_POST['PARAMS'] = CUtil::JsObjectToPhp($_POST['PARAMS']); CVoxImplantIncoming::SendCommand(array('CALL_ID' => $_POST['PARAMS']['CALL_ID'], 'COMMAND' => CVoxImplantIncoming::RULE_WAIT)); CVoxImplantIncoming::SendPullEvent(array('COMMAND' => 'answer_self', 'USER_ID' => $userId, 'CALL_ID' => $_POST['PARAMS']['CALL_ID'])); if (CModule::IncludeModule('im')) { CIMStatus::SetIdle($userId, false); } } else { if ($_POST['COMMAND'] == 'skip') { $_POST['PARAMS'] = CUtil::JsObjectToPhp($_POST['PARAMS']); CVoxImplantIncoming::SendCommand(array('CALL_ID' => $_POST['PARAMS']['CALL_ID'], 'COMMAND' => CVoxImplantIncoming::RULE_QUEUE)); } else { if ($_POST['COMMAND'] == 'start') { $_POST['PARAMS'] = CUtil::JsObjectToPhp($_POST['PARAMS']); CVoxImplantMain::CallStart($_POST['PARAMS']['CALL_ID'], $userId); } else { if ($_POST['COMMAND'] == 'hold' || $_POST['COMMAND'] == 'unhold') { $_POST['PARAMS'] = CUtil::JsObjectToPhp($_POST['PARAMS']); CVoxImplantMain::CallHold($_POST['PARAMS']['CALL_ID'], $_POST['COMMAND'] == 'hold'); } else { if ($_POST['COMMAND'] == 'ready') { $_POST['PARAMS'] = CUtil::JsObjectToPhp($_POST['PARAMS']); CVoxImplantIncoming::SendCommand(array('CALL_ID' => $_POST['PARAMS']['CALL_ID'], 'COMMAND' => CVoxImplantIncoming::RULE_USER, 'USER_ID' => $USER->GetId())); } else { if ($_POST['COMMAND'] == 'inviteTransfer') { $_POST['PARAMS'] = CUtil::JsObjectToPhp($_POST['PARAMS']); CVoxImplantTransfer::Invite($_POST['PARAMS']['CALL_ID'], $_POST['PARAMS']['USER_ID']); } else { if ($_POST['COMMAND'] == 'readyTransfer') { $_POST['PARAMS'] = CUtil::JsObjectToPhp($_POST['PARAMS']);
echo json_encode(array('result' => 'OK')); } else { if ($params["COMMAND"] == "TransferTimeout") { CVoxImplantTransfer::Timeout($params['CALL_ID']); echo json_encode(array('result' => 'OK')); } else { if ($params["COMMAND"] == "TransferCancel") { CVoxImplantTransfer::Decline($params['CALL_ID'], false); echo json_encode(array('result' => 'OK')); } else { if ($params["COMMAND"] == "TransferComplete") { CVoxImplantTransfer::Complete($params['CALL_ID'], $params['CALL_DEVICE']); echo json_encode(array('result' => 'OK')); } else { if ($params["COMMAND"] == "StartCall") { CVoxImplantMain::CallStart($params['CALL_ID'], $params['USER_ID'], $params['CALL_DEVICE'], $params['EXTERNAL'] == 'Y'); $res = Bitrix\Voximplant\CallTable::getList(array('filter' => array('=CALL_ID' => $params['CALL_ID']))); if ($call = $res->fetch()) { if ($call['PORTAL_USER_ID'] <= 0) { $res = Bitrix\Voximplant\QueueTable::getList(array('filter' => array('=CONFIG_ID' => $call['CONFIG_ID']))); while ($queue = $res->fetch()) { if ($params['USER_ID'] == $queue['USER_ID'] || $call['PORTAL_USER_ID'] == $queue['USER_ID']) { continue; } CVoxImplantMain::SendPullEvent(array('COMMAND' => 'timeout', 'USER_ID' => $queue['USER_ID'], 'CALL_ID' => $call['CALL_ID'], 'MARK' => 'timeout_hit_2')); } } } echo json_encode(array('result' => 'OK')); } else { if ($params["COMMAND"] == "HangupCall") {