예제 #1
0
		$QUERY = "SELECT src, cc_card.username, cc_card.recalltime, continuewithdid FROM cc_card, cc_call
			LEFT JOIN cc_did ON cc_did.id_trunk=cc_call.id_trunk
			WHERE cc_card.id=card_id AND did='$mydnid' AND DATEDIFF(NOW(),stoptime) < cc_card.recalldays
			AND ('$A2B->CallerID' LIKE CONCAT('%',SUBSTRING(calledstation,2)) OR calledstation LIKE CONCAT('%','$A2B->CallerID'))
			AND LENGTH(calledstation) > 6 AND LENGTH(TRIM(LEADING '+' FROM '$A2B->CallerID'))-LENGTH(calledstation) < 3 ORDER BY cc_call.id DESC LIMIT 1";
		$result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);

		if (is_array($result)) {
			$RateEngine->Reinit();
			$A2B -> agiconfig['answer_call'] = 0;
			$A2B -> agiconfig['play_audio'] = 0;
			$A2B -> agiconfig['use_dnid'] = 1;
			$A2B -> destination = $A2B -> dnid = $A2B -> extension = preg_replace('/\+/','',$result[0][0]);
			$accountback = $result[0][1];
			$A2B -> recalltime = $result[0][2];
			$cia_res = $A2B -> callingcard_ivr_authenticate($agi,$accountback);
			if ($cia_res==0) {
				// RE-SET THE CALLERID
				$A2B->callingcard_auto_setcallerid($agi);

				// Feature to switch the Callplan from a customer : callplan_deck_minute_threshold 
				$A2B-> deck_switch($agi);

				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'];
예제 #2
0
}
if ($mode == 'standard') {
    if ($A2B->agiconfig['answer_call'] == 1) {
        $A2B->debug(INFO, $agi, __FILE__, __LINE__, '[ANSWER CALL]');
        $agi->answer();
        $status_channel = 6;
    } else {
        $A2B->debug(INFO, $agi, __FILE__, __LINE__, '[NO ANSWER CALL]');
        $status_channel = 4;
    }
    $A2B->play_menulanguage($agi);
    // Play intro message
    if (strlen($A2B->agiconfig['intro_prompt']) > 0) {
        $agi->stream_file($A2B->agiconfig['intro_prompt'], '#');
    }
    $cia_res = $A2B->callingcard_ivr_authenticate($agi);
    $A2B->debug(DEBUG, $agi, __FILE__, __LINE__, "[TRY : callingcard_ivr_authenticate]");
    // CALL AUTHENTICATE AND WE HAVE ENOUGH CREDIT TO GO AHEAD
    if ($cia_res == 0) {
        // RE-SET THE CALLERID
        $A2B->callingcard_auto_setcallerid($agi);
        for ($i = 0; $i < $A2B->agiconfig['number_try']; $i++) {
            $RateEngine->Reinit();
            $A2B->Reinit();
            // RETRIEVE THE CHANNEL STATUS AND LOG : STATUS - CREIT - MIN_CREDIT_2CALL
            $stat_channel = $agi->channel_status($A2B->channel);
            $A2B->debug(INFO, $agi, __FILE__, __LINE__, '[CHANNEL STATUS : ' . $stat_channel["result"] . ' = ' . $stat_channel["data"] . ']' . "\n[CREDIT : " . $A2B->credit . "][CREDIT MIN_CREDIT_2CALL : " . $A2B->agiconfig['min_credit_2call'] . "]");
            // CHECK IF THE CHANNEL IS UP
            if ($A2B->agiconfig['answer_call'] == 1 && $stat_channel["result"] != $status_channel && $A2B->CC_TESTING != 1) {
                if ($A2B->set_inuse == 1) {
                    $A2B->callingcard_acct_start_inuse($agi, 0);