$post["WORKTIME_DAYOFF_NUMBER"] = substr($post["WORKTIME_DAYOFF_NUMBER"], 0, 20); } } else { $post["WORKTIME_DAYOFF_NUMBER"] = ''; } $arFields = array("DIRECT_CODE" => $post["DIRECT_CODE"], "DIRECT_CODE_RULE" => $post["DIRECT_CODE_RULE"], "CRM" => $post["CRM"], "CRM_RULE" => $post["CRM_RULE"], "CRM_CREATE" => $post["CRM_CREATE"], "CRM_FORWARD" => $post["CRM_FORWARD"], "QUEUE_TIME" => $post["QUEUE_TIME"], "TIMEMAN" => $post["TIMEMAN"], "NO_ANSWER_RULE" => $post["NO_ANSWER_RULE"], "FORWARD_NUMBER" => $post["FORWARD_NUMBER"], "RECORDING" => $post["RECORDING"], "MELODY_LANG" => $post["MELODY_LANG"], "MELODY_WELCOME" => $post["MELODY_WELCOME"], "MELODY_WELCOME_ENABLE" => $post["MELODY_WELCOME_ENABLE"], "MELODY_WAIT" => $post["MELODY_WAIT"], "MELODY_HOLD" => $post["MELODY_HOLD"], "MELODY_VOICEMAIL" => $post["MELODY_VOICEMAIL"], "WORKTIME_ENABLE" => isset($post["WORKTIME_ENABLE"]) ? "Y" : "N", "WORKTIME_FROM" => $workTimeFrom, "WORKTIME_TO" => $workTimeTo, "WORKTIME_HOLIDAYS" => $workTimeHolidays, "WORKTIME_DAYOFF" => $workTimeDayOff, "WORKTIME_TIMEZONE" => $post["WORKTIME_TIMEZONE"], "WORKTIME_DAYOFF_RULE" => $post["WORKTIME_DAYOFF_RULE"], "WORKTIME_DAYOFF_NUMBER" => $post["WORKTIME_DAYOFF_NUMBER"], "WORKTIME_DAYOFF_MELODY" => $post["WORKTIME_DAYOFF_MELODY"]); $post["QUEUE"] = is_array($post["QUEUE"]) ? $post["QUEUE"] : array(); $post["QUEUE"]["U"] = is_array($post["QUEUE"]["U"]) ? $post["QUEUE"]["U"] : array(); $queue = array(); if (is_array($post["QUEUE"]) && is_array($post["QUEUE"]["U"])) { foreach ($post["QUEUE"] as $type => $k) { $queue[$type] = str_replace($type, "", $k); } } if ($skipSaving) { $error = $viSip->GetError()->msg; } else { if (($res = Bitrix\Voximplant\ConfigTable::update($arParams["ID"], $arFields)) && $res->isSuccess()) { // TODO We should work with other socialnetwork entities $toDrop = array_diff($arResult["~QUEUE"], $queue["U"]); $toAdd = array_diff($queue["U"], array_keys($arResult["QUEUE"])); foreach ($toDrop as $primary => $id) { Bitrix\Voximplant\QueueTable::delete($primary); } foreach ($toAdd as $k) { Bitrix\Voximplant\QueueTable::add(array("CONFIG_ID" => $arParams["ID"], "USER_ID" => $k, "STATUS" => "OFFLINE")); } LocalRedirect(CVoxImplantMain::GetPublicFolder() . 'lines.php?MODE=' . $arResult["ITEM"]["PORTAL_MODE"]); } $error = $res->getErrorMessages(); }
} if (!CVoxImplantMain::CheckAccess()) { echo CUtil::PhpToJsObject(array('ERROR' => 'AUTHORIZE_ERROR')); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_after.php"; die; } if (check_bitrix_sessid()) { if ($_POST['VI_ADD']) { $arSend['ERROR'] = ''; CUtil::decodeURIComponent($_POST); $viSip = new CVoxImplantSip(); $result = $viSip->Add(array('TYPE' => strtolower($_POST['TYPE']), 'PHONE_NAME' => $_POST['TITLE'], 'SERVER' => $_POST['SERVER'], 'LOGIN' => $_POST['LOGIN'], 'PASSWORD' => $_POST['PASSWORD'])); if ($result) { $arSend['RESULT'] = $result; } else { $arSend['ERROR'] = $viSip->GetError()->msg; } echo CUtil::PhpToJsObject($arSend); } else { if ($_POST['VI_DELETE'] == 'Y') { $arSend['ERROR'] = ''; $viSip = new CVoxImplantSip(); $viSip->Delete($_POST['CONFIG_ID']); echo CUtil::PhpToJsObject($arSend); } else { echo CUtil::PhpToJsObject(array('ERROR' => 'UNKNOWN_ERROR')); } } } else { echo CUtil::PhpToJsObject(array('BITRIX_SESSID' => bitrix_sessid(), 'ERROR' => 'SESSION_ERROR')); }
public static function sipStatus($arParams) { if (!CVoxImplantMain::CheckAccess()) { throw new \Bitrix\Rest\AccessException(); } $arParams = array_change_key_case($arParams, CASE_UPPER); $viSip = new CVoxImplantSip(); $result = $viSip->GetSipRegistrations($arParams['REG_ID']); if (!$result) { throw new Bitrix\Rest\RestException($viSip->GetError()->msg, $viSip->GetError()->code, CRestServer::STATUS_WRONG_REQUEST); } return array('REG_ID' => $result->reg_id, 'LAST_UPDATED' => $result->last_updated, 'ERROR_MESSAGE' => $result->error_message, 'STATUS_CODE' => $result->status_code, 'STATUS_RESULT' => $result->status_result); }