Esempio n. 1
0
 public static function QueuedGetList($params)
 {
     $query = new \Bitrix\Main\Entity\Query(Bitrix\Voximplant\QueueTable::getEntity());
     $query->registerRuntimeField('', new \Bitrix\Main\Entity\ExpressionField('IS_ONLINE_CUSTOM', 'CASE WHEN %s > ' . CVoxImplantUser::GetLastActivityDateAgo() . ' THEN \'Y\' ELSE \'N\' END', array('USER.LAST_ACTIVITY_DATE')));
     if (isset($params['select'])) {
         $query->setSelect($params['select']);
     } else {
         $query->addSelect('ID')->addSelect('IS_ONLINE_CUSTOM');
     }
     if (isset($params['filter'])) {
         $query->setFilter($params['filter']);
     }
     if (isset($params['order'])) {
         $query->setOrder($params['order']);
     }
     return $query->exec();
 }
Esempio n. 2
0
        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();
    }
    $arResult = array("ERROR" => $error, "ITEM" => array_merge($arResult["ITEM"], $arFields), "QUEUE" => array_flip($queue["U"]), "SIP_CONFIG" => array_merge($arResult["SIP_CONFIG"], $arFieldsSip));
}
foreach (array("MELODY_WELCOME", "MELODY_WAIT", "MELODY_HOLD", "MELODY_VOICEMAIL", "WORKTIME_DAYOFF_MELODY") as $id) {
    if ($arResult["ITEM"][$id] > 0) {
        $res = CFile::GetFileArray($arResult["ITEM"][$id]);
        if ($res) {
            $arResult["ITEM"]["~" . $id] = $res;
        } else {
            $arResult["ITEM"][$id] = 0;
        }
Esempio n. 3
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") {
         $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'));
             }