} $agi = new AGI(); $logger = new AGI_Logger($agi); $cdr = new AGI_CDR($agi); //CDR : Flush existing entry if both called and caller are known if ($cdr->caller_known() && $cdr->called_known()) { $cdr->flush_cdr(); } // Get Called Extension informations $called_ext = $agi->request['agi_extension']; // Get Caller Extension infomation $cid = $agi->parse_callerid(); $caller_ext = $cid['username']; $Extension_S = DB_Extension($caller_ext); //CDR: Set caller information $cdr->set_caller($Extension_S['PK_Extension'], $Extension_S['Type'], DB_Extension_Name($caller_ext), $caller_ext); //CDR: Set called information $cdr->set_called(0, '', '', $called_ext); // CDR: Push dial event $cdr->push_event("DIAL", $called_ext); // See if we can match any outgoing rule $query = "SELECT * FROM OutgoingRules ORDER BY RuleOrder"; $result = $mysqli->query($query) or $agi->verbose($mysqli->error . $query); while ($rule = $result->fetch_assoc()) { // Check if rule matches $regex = "/^{$rule['BeginWith']}[0-9]{{$rule['RestBetweenLow']},{$rule['RestBetweenHigh']}}\$/"; if (!preg_match($regex, $called_ext)) { continue; } // Create new_number $new_number = substr($called_ext, $rule['TrimFront']);
error_reporting(E_ALL); require dirname(__FILE__) . '/../lib/phpagi/phpagi.php'; require dirname(__FILE__) . '/../include/db_utils.inc.php'; require dirname(__FILE__) . '/common/AGI_Logger.class.php'; require dirname(__FILE__) . '/common/AGI_CDR.class.php'; $agi = new AGI(); $logger = new AGI_Logger($agi); $cdr = new AGI_CDR($agi); // CDR: Set call type $cdr->set_type('IN'); // CDR: Set caller name and number $cid = $agi->parse_callerid(); $agi->verbose($cid); $caller_ext = $cid['username']; $caller_name = $agi->request['agi_calleridname']; $cdr->set_caller('', '', $caller_name, $caller_ext); if ($agi->request['agi_type'] == 'SIP') { preg_match('/^sip_provider_(\\d+)/', $agi->request['agi_context'], $matches); $PK_SipProvider = $matches[1]; $query = "SELECT Name FROM SipProviders WHERE PK_SipProvider={$PK_SipProvider} LIMIT 1"; $result = $mysqli->query($query) or $agi->verbose($mysqli->error . $query); $prov = $result->fetch_assoc(); $cdr->push_event("INPROVIDER", "SIP,{$prov['Name']}"); } elseif ($agi->request['agi_type'] == 'IAX2') { preg_match('/^iax_provider_(\\d+)/', $agi->request['agi_context'], $matches); $PK_IaxProvider = $matches[1]; $query = "SELECT Name FROM IaxProviders WHERE PK_IaxProvider={$PK_IaxProvider} LIMIT 1"; $result = $mysqli->query($query) or $agi->verbose($mysqli->error . $query); $prov = $result->fetch_assoc(); $cdr->push_event("INPROVIDER", "IAX,{$prov['Name']}"); }