if (!$A2B -> enough_credit_to_call()) break; if ($A2B->agiconfig['sip_iax_friends']==1) { if ( (strlen($A2B -> destination)>0) && ( strlen($A2B -> agiconfig['sip_iax_pstn_direct_call_prefix']) > 0) && (strncmp($A2B -> agiconfig['sip_iax_pstn_direct_call_prefix'], $A2B -> destination,strlen($A2B -> agiconfig['sip_iax_pstn_direct_call_prefix'])) == 0) ) { $A2B -> sip_iax_buddy = $A2B->agiconfig['sip_iax_pstn_direct_call_prefix']; $A2B -> dnid = substr($A2B -> dnid,strlen($A2B -> agiconfig['sip_iax_pstn_direct_call_prefix'])); } } if ( strlen($A2B-> sip_iax_buddy) > 0 || ($A2B-> sip_iax_buddy == $A2B->agiconfig['sip_iax_pstn_direct_call_prefix'])) { $cia_res = $A2B-> call_sip_iax_buddy($agi, $RateEngine, 0); } else { $ans = $A2B-> callingcard_ivr_authorize($agi, $RateEngine, 0); // PERFORM THE CALL $result_callperf = $RateEngine->rate_engine_performcall($agi, $A2B -> destination, $A2B); if (!$result_callperf) { $prompt="prepaid-dest-unreachable"; $agi-> stream_file($prompt, '#'); } // INSERT CDR & UPDATE SYSTEM $RateEngine->rate_engine_updatesystem($A2B, $agi, $A2B -> destination); if ($result[0][3] && $RateEngine->dialstatus != "ANSWER") { $A2B -> mode = $mode = 'did'; $A2B -> agiconfig['cid_enable']=0; $A2B -> agiconfig['number_try']=1; }
} elseif (strlen($A2B->destination) > 0) { $A2B->dnid = $A2B->destination; $A2B->agiconfig['use_dnid'] = 1; $A2B->debug(VERBOSE | WRITELOG, $agi, __FILE__, __LINE__, "TRUNK - dnid : " . $A2B->dnid . " (" . $A2B->agiconfig['use_dnid'] . ")"); } } else { $res_dtmf = $agi->get_data('prepaid-sipiax-press9', 4000, 1); $A2B->debug(VERBOSE | WRITELOG, $agi, __FILE__, __LINE__, "RES SIP_IAX_FRIEND DTMF : " . $res_dtmf["result"]); $A2B->sip_iax_buddy = $res_dtmf["result"]; } } if (strlen($A2B->sip_iax_buddy) > 0 || $A2B->sip_iax_buddy == $A2B->agiconfig['sip_iax_pstn_direct_call_prefix']) { $A2B->debug(VERBOSE | WRITELOG, $agi, __FILE__, __LINE__, 'CALL SIP_IAX_BUDDY'); $cia_res = $A2B->call_sip_iax_buddy($agi, $RateEngine, $i); } else { if ($A2B->callingcard_ivr_authorize($agi, $RateEngine, $i) == 1) { // PERFORM THE CALL $result_callperf = $RateEngine->rate_engine_performcall($agi, $A2B->destination, $A2B); if (!$result_callperf) { $prompt = "prepaid-dest-unreachable"; //$agi->agi_exec("STREAM FILE $prompt #"); $agi->stream_file($prompt, '#'); } // INSERT CDR & UPDATE SYSTEM $RateEngine->rate_engine_updatesystem($A2B, $agi, $A2B->destination); if ($A2B->agiconfig['say_balance_after_call'] == 1) { $A2B->fct_say_balance($agi, $A2B->credit); } $A2B->debug(VERBOSE | WRITELOG, $agi, __FILE__, __LINE__, '[a2billing account stop]'); } }