Пример #1
0
 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;
 }
Пример #2
0
 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;
 }
Пример #3
0
 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;
 }
Пример #4
0
 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;
 }