call details * return Response object */ function process($request) { $mode = $request->get('callstatus'); switch ($mode) { case "StartApp" : $this->processStartupCall($request); break; case "DialAnswer" : $this->processDialCall($request); break; case "Record" : $this->processRecording($request); break; case "EndCall" : $this->processEndCall($request); break; case "Hangup" : $callCause = $request->get('causetxt'); if ($callCause == "null") { break; } $this->processHangupCall($request); break; } } /** * Function to process Incoming call request * @params 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); } } /** * Function to process Dial call request * @params Dial call details * return Response object */ function processDialCall($request) { $connector = $this->getConnector(); $connector->handleDialCall($request); } /** * Function to process EndCall event * @params Dial call details * return Response object */ function processEndCall($request) { $connector = $this->getConnector(); $connector->handleEndCall($request); } /** * Function to process Hangup call request * @params Hangup call details * return Response object */ function processHangupCall($request) { $connector = $this->getConnector(); $connector->handleHangupCall($request); } /** * Function to process recording * @params recording details * return Response object */ function processRecording($request) { $connector = $this->getConnector(); $connector->handleRecording($request); } }