Exemplo n.º 1
0
 /**
  * Function to process Incoming call request
  * @params <array> incoming call details
  * return Response object
  */
 function processStartupCall($request)
 {
     $connector = $this->getConnector();
     $temp = $request->get('channel');
     $temp = explode("-", $temp);
     $temp = explode("/", $temp[0]);
     $callerNumber = $request->get('callerIdNumber');
     $userInfo = PBXManager_Record_Model::getUserInfoWithNumber($callerNumber);
     if (!$userInfo) {
         $callerNumber = $temp[1];
         if (is_numeric($callerNumber)) {
             $userInfo = PBXManager_Record_Model::getUserInfoWithNumber($callerNumber);
         }
     }
     if ($userInfo) {
         // Outbound Call
         $request->set('Direction', 'outbound');
         if ($request->get('callerIdNumber') == $temp[1]) {
             $to = $request->get('callerIdName');
         } else {
             if ($request->get('callerIdNumber')) {
                 $to = $request->get('callerIdNumber');
             } else {
                 if ($request->get('callerId')) {
                     $to = $request->get('callerId');
                 }
             }
         }
         $request->set('to', $to);
         $customerInfo = PBXManager_Record_Model::lookUpRelatedWithNumber($to);
         $connector->handleStartupCall($request, $userInfo, $customerInfo);
     } else {
         // Inbound Call
         $request->set('Direction', 'inbound');
         $customerInfo = PBXManager_Record_Model::lookUpRelatedWithNumber($request->get('callerIdNumber'));
         $request->set('from', $request->get('callerIdNumber'));
         $connector->handleStartupCall($request, $userInfo, $customerInfo);
     }
 }
Exemplo n.º 2
0
 /**
  * Function to handle the dial call event
  * @param <Vtiger_Request> $details 
  */
 public function handleDialCall($details)
 {
     $callid = $details->get('callUUID');
     $answeredby = $details->get('callerid2');
     $caller = $details->get('callerid1');
     // For Inbound call, answered by will be the user, we should fill the user field
     $recordModel = PBXManager_Record_Model::getInstanceBySourceUUID($callid);
     $direction = $recordModel->get('direction');
     if ($direction == self::INCOMING_TYPE) {
         // For Incoming call, we should fill the user field if he answered that call
         $user = PBXManager_Record_Model::getUserInfoWithNumber($answeredby);
         $params['user'] = $user['id'];
         $recordModel->updateAssignedUser($user['id']);
     } else {
         $user = PBXManager_Record_Model::getUserInfoWithNumber($caller);
         if ($user) {
             $params['user'] = $user['id'];
             $recordModel->updateAssignedUser($user['id']);
         }
     }
     $params['callstatus'] = "in-progress";
     $recordModel->updateCallDetails($params);
 }
Exemplo n.º 3
0
 /**
  * Function to respond for incoming calls
  * @param <Vtiger_Request> $details 
  */
 public function respondToIncomingCall($details)
 {
     global $current_user;
     self::$NUMBERS = PBXManager_Record_Model::getUserNumbers();
     header("Content-type: text/xml; charset=utf-8");
     $response = '<?xml version="1.0" encoding="utf-8"?>';
     $response .= '<Response><Dial><Authentication>';
     $response .= 'Success</Authentication>';
     if (self::$NUMBERS) {
         foreach (self::$NUMBERS as $userId => $number) {
             $userInstance = Users_Privileges_Model::getInstanceById($userId);
             $current_user = $userInstance;
             $callPermission = Users_Privileges_Model::isPermitted('PBXManager', 'ReceiveIncomingCalls');
             if ($number != $details->get('callerIdNumber') && $callPermission) {
                 if (preg_match("/sip/", $number) || preg_match("/@/", $number)) {
                     $number = trim($number, "/sip:/");
                     $response .= '<Number>SIP/';
                     $response .= $number;
                     $response .= '</Number>';
                 } else {
                     $response .= '<Number>SIP/';
                     $response .= $number;
                     $response .= '</Number>';
                 }
             }
         }
     } else {
         $response .= '<ConfiguredNumber>empty</ConfiguredNumber>';
         $date = date('Y/m/d H:i:s');
         $params['callstatus'] = 'no-answer';
         $params['starttime'] = $date;
         $params['endtime'] = $date;
         // SalesPlatform.ru begin
         $userNumber = $details->get('dialString');
         $user = PBXManager_Record_Model::getUserInfoWithNumber($userNumber);
         $recordModel = PBXManager_Record_Model::getInstanceBySourceUUID($details->get('callUUID'), $user);
         $recordModel->updateCallDetails($params, $user);
         //$recordModel = PBXManager_Record_Model::getInstanceBySourceUUID($details->get('callUUID'));
         //$recordModel->updateCallDetails($params);
         // SalesPlatform.ru end
     }
     $response .= '</Dial></Response>';
     echo $response;
 }