* @var $APPLICATION CMain */ /******************************************************************** Input params ********************************************************************/ /***************** BASE ********************************************/ $arParams["ID"] = intval($arParams["ID"] > 0 ? $arParams["ID"] : $_REQUEST["ID"]); /******************************************************************** /Input params ********************************************************************/ $arResult = array("ITEM" => Bitrix\Voximplant\ConfigTable::getById($arParams["ID"])->fetch(), "QUEUE" => array(), "SIP_CONFIG" => array(), "~QUEUE" => array()); if (!!$arResult["ITEM"]) { if (!empty($arResult["ITEM"]["WORKTIME_DAYOFF"])) { $arResult["ITEM"]["WORKTIME_DAYOFF"] = explode(",", $arResult["ITEM"]["WORKTIME_DAYOFF"]); } $db_res = Bitrix\Voximplant\QueueTable::getList(array('filter' => array('=CONFIG_ID' => $arResult["ITEM"]["ID"]))); while ($res = $db_res->fetch()) { $arResult["QUEUE"][$res["USER_ID"]] = $res; $arResult["~QUEUE"][$res["ID"]] = $res["USER_ID"]; } if ($arResult["ITEM"]["PORTAL_MODE"] == CVoxImplantConfig::MODE_SIP) { $viSip = new CVoxImplantSip(); $arResult["SIP_CONFIG"] = $viSip->Get($arParams["ID"]); $arResult["SIP_CONFIG"]['PHONE_NAME'] = $arResult['ITEM']['PHONE_NAME']; } } if (empty($arResult["ITEM"])) { return; } if ($_REQUEST["action"] == "save" && check_bitrix_sessid()) { $post = \Bitrix\Main\Context::getCurrent()->getRequest()->getPostList()->toArray();
$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") { $res = Bitrix\Voximplant\CallTable::getList(array('filter' => array('=CALL_ID' => $params['CALL_ID']))); $userTimeout = array(); if ($call = $res->fetch()) { $res = Bitrix\Voximplant\QueueTable::getList(array('filter' => array('=CONFIG_ID' => $call['CONFIG_ID']))); while ($queue = $res->fetch()) { if ($call['TRANSFER_USER_ID'] == $queue['USER_ID']) { continue; } $userTimeout[$queue['USER_ID']] = true; CVoxImplantMain::SendPullEvent(array('COMMAND' => 'timeout', 'USER_ID' => $queue['USER_ID'], 'CALL_ID' => $call['CALL_ID'], 'MARK' => 'timeout_hit_3')); } if ($call['TRANSFER_USER_ID'] > 0) { $userTimeout[$call['TRANSFER_USER_ID']] = true; CVoxImplantTransfer::SendPullEvent(array('COMMAND' => 'timeoutTransfer', 'USER_ID' => $call['TRANSFER_USER_ID'], 'CALL_ID' => $call['CALL_ID'])); } if ($call['PORTAL_USER_ID'] > 0 && !$userTimeout[$call['PORTAL_USER_ID']]) { $userTimeout[$call['PORTAL_USER_ID']] = true; CVoxImplantMain::SendPullEvent(array('COMMAND' => 'timeout', 'USER_ID' => $call['PORTAL_USER_ID'], 'CALL_ID' => $call['CALL_ID'], 'MARK' => 'timeout_hit_4')); }