Esempio n. 1
0
}
$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']);
Esempio n. 2
0
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']}");
}