Esempio n. 1
0
    break;
}
// Exit if no rule was matched
if ($new_number == "") {
    $agi->verbose('Cannot match any outgoing rule for number :' . $called_ext);
    exit(0);
}
// Detect and Set the caller id information that we should set for this call
$CallerID = get_callerid($agi, $rule['PK_OutgoingRule'], $caller_ext);
$agi->set_variable('CALLERID(name)', $CallerID['Name']);
$agi->set_variable('CALLERID(number)', $CallerID['Number']);
// If matched rules ask us to route the number trought a SIP provider
if ($rule['ProviderType'] == 'SIP') {
    $agi->verbose("CALLING {$new_number} USING RULE {$rule['Name']}  AND SIP PROVIDER [{$rule['ProviderID']}]");
    //CDR : set entry type
    $cdr->set_type('OUT');
    // Get the needed information about this sip provider
    $query = "SELECT * FROM `SipProviders` WHERE PK_SipProvider = '{$rule['ProviderID']}' LIMIT 1";
    $result = $mysqli->query($query) or die($mysqli->error . $query);
    if ($mysqli->num_rows($result) != '1') {
        exit(0);
    }
    $SipProvider = $result->fetch_assoc();
    // If providers requires the P-Asserted-Identity for caller id setup
    if ($SipProvider['CallerIDMethod'] == 'P-Asserted-Identity') {
        $agi->exec('SipAddHeader', "P-Asserted-Identity:\\ '" . str_replace(' ', '\\ ', $CallerID['Name']) . "'\\ <sip:{$CallerID['Number']}>");
    }
    //$cdr->push_event("OUTPROVIDER", "SIP,{$SipProvider['Name']},$new_number");
    if ($SipProvider['DTMFDial']) {
        $agi->exec_dial("SIP/sip_provider_{$rule['ProviderID']}", $new_number, 60, "D(ww{$new_number})");
    } else {
Esempio n. 2
0
#!/usr/bin/php-cli -q
<?php 
set_time_limit(30);
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);