public static function Ready($callId) { $res = VI\CallTable::getList(array('select' => array('ID', 'CALL_ID', 'CALLER_ID', 'USER_ID', 'TRANSFER_USER_ID', 'ACCESS_URL'), 'filter' => array('=CALL_ID' => $callId))); $call = $res->fetch(); if (!$call) { return false; } $answer['COMMAND'] = 'transfer'; $answer['OPERATOR_ID'] = $call['USER_ID']; $answer['TRANSFER_USER_ID'] = $call['TRANSFER_USER_ID']; $http = new \Bitrix\Main\Web\HttpClient(); $http->waitResponse(false); $http->post($call['ACCESS_URL'], json_encode($answer)); VI\CallTable::update($call['ID'], array('USER_ID' => $call['TRANSFER_USER_ID'], 'TRANSFER_USER_ID' => 0)); CVoxImplantHistory::TransferMessage($call['USER_ID'], $call['TRANSFER_USER_ID'], $call['CALLER_ID']); self::SendPullEvent(array('COMMAND' => 'answerTransfer', 'USER_ID' => $call['USER_ID'], 'CALL_ID' => $call['CALL_ID'])); return true; }
public static function Decline($callId, $send = true) { $res = VI\CallTable::getList(array('select' => array('ID', 'CALL_ID', 'USER_ID', 'TRANSFER_USER_ID', 'ACCESS_URL'), 'filter' => array('=CALL_ID' => $callId))); $call = $res->fetch(); if (!$call) { return false; } VI\CallTable::update($call['ID'], array('TRANSFER_USER_ID' => 0)); if ($send) { $command['COMMAND'] = 'declineTransfer'; $command['OPERATOR_ID'] = $call['USER_ID']; $http = new \Bitrix\Main\Web\HttpClient(); $http->waitResponse(false); $http->post($call['ACCESS_URL'], json_encode($command)); } self::SendPullEvent(array('COMMAND' => 'declineTransfer', 'USER_ID' => $call['USER_ID'], 'CALL_ID' => $call['CALL_ID'])); self::SendPullEvent(array('COMMAND' => 'timeoutTransfer', 'USER_ID' => $call['TRANSFER_USER_ID'], 'CALL_ID' => $call['CALL_ID'])); return true; }
public static function CallHold($callId, $result = false) { $res = VI\CallTable::getList(array('select' => array('ID', 'CALL_ID', 'CALLER_ID', 'USER_ID', 'TRANSFER_USER_ID', 'ACCESS_URL'), 'filter' => array('=CALL_ID' => $callId))); $call = $res->fetch(); if (!$call) { return false; } $answer['COMMAND'] = $result ? 'hold' : 'unhold'; $answer['OPERATOR_ID'] = $call['USER_ID']; $http = new \Bitrix\Main\Web\HttpClient(); $http->waitResponse(false); $http->post($call['ACCESS_URL'], json_encode($answer)); self::SendPullEvent(array('COMMAND' => $result ? 'hold' : 'unhold', 'USER_ID' => $call['USER_ID'], 'CALL_ID' => $call['CALL_ID'])); return true; }
public static function SendCommand($params) { // TODO check $params $res = VI\CallTable::getList(array('select' => array('ID', 'ACCESS_URL'), 'filter' => array('=CALL_ID' => $params['CALL_ID']))); $call = $res->fetch(); if (!$call) { return false; } global $USER; $answer['COMMAND'] = $params['COMMAND']; $answer['OPERATOR_ID'] = $params['OPERATOR_ID'] ? $params['OPERATOR_ID'] : $USER->GetId(); if ($params['COMMAND'] == CVoxImplantIncoming::RULE_WAIT) { } else { if ($params['COMMAND'] == CVoxImplantIncoming::RULE_QUEUE) { } else { if ($params['COMMAND'] == CVoxImplantIncoming::RULE_PSTN) { $answer['PHONE_NUMBER'] = ''; } else { if ($params['COMMAND'] == CVoxImplantIncoming::RULE_USER) { $answer['USER_ID'] = intval($params['USER_ID']); } else { if ($params['COMMAND'] == CVoxImplantIncoming::RULE_VOICEMAIL) { $answer['USER_ID'] = intval($params['USER_ID']); } else { $answer['COMMAND'] = CVoxImplantIncoming::RULE_HUNGUP; } } } } } $http = new \Bitrix\Main\Web\HttpClient(); $http->waitResponse(false); $http->post($call['ACCESS_URL'], json_encode($answer)); return true; }