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 {
#!/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);