/** * Returns crm user extension assigned to caller number or null if not assigned user for caller number * * @param string $callerNumber * @return string */ private function getCrmUserExtension($callerNumber) { $crmUserExtension = null; $callerUserInfo = PBXManager_Record_Model::lookUpRelatedWithNumber($callerNumber); if ($callerUserInfo) { $callerRecordModel = Vtiger_Record_Model::getInstanceById($callerUserInfo['id']); $assignedUser = Users_Record_Model::getInstanceById($callerRecordModel->get('assigned_user_id'), "Users"); $crmUserExtension = $assignedUser->get('phone_crm_extension'); } return $crmUserExtension; }
/** * 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); } }
} } } } //Data migrate from old columns to new columns in vtiger_pbxmanager $query = 'SELECT * FROM vtiger_pbxmanager'; $result = $adb->pquery($query, array()); $params = array(); $rowCount = $adb->num_rows($result); for ($i = 0; $i < $rowCount; $i++) { $pbxmanagerid = $adb->query_result($result, $i, 'pbxmanagerid'); $callfrom = $adb->query_result($result, $i, 'callfrom'); $callto = $adb->query_result($result, $i, 'callto'); $timeofcall = $adb->query_result($result, $i, 'timeofcall'); $status = $adb->query_result($result, $i, 'status'); $customer = PBXManager_Record_Model::lookUpRelatedWithNumber($callfrom); $userIdQuery = $adb->pquery('SELECT userid FROM vtiger_asteriskextensions WHERE asterisk_extension = ?', array($callto)); $user = $adb->query_result($userIdQuery, $i, 'userid'); if ($status == 'outgoing') { $callstatus = 'outbound'; } else { if ($status == 'incoming') { $callstatus = 'inbound'; } } //Update query $adb->pquery('UPDATE vtiger_pbxmanager SET customer = ? AND user = ? AND totalduration = ? AND callstatus = ? WHERE pbxmanagerid = ?', array($customer, $user, $timeofcall, $callstatus, $pbxmanagerid)); } //Adding PBXManager PostUpdate API's //Add user extension field $module = Vtiger_Module::getInstance('Users');