a2billingi.php

来自「asterisk的计费修改 可以语音计费 可以做IP卡的发卡」· PHP 代码 · 共 1,671 行 · 第 1/5 页

PHP
1,671
字号
// 					$agi->verbose($user_passwd);					 					$user_balance =  $result[0][2];//					$agi->verbose($user_balance);					return $user_balance;				}else{					$agi->verbose("accout not found !");				}}//已注册用户主操作菜单函数,传入余额$user_balance,1.查询充值,2.设置快速拨号,3.解除绑定。function set_speed_dial($user_id){	global $agi;	global $A2B;	for ($i=0;$i<10;$i++){	$dtmf_result = $agi->get_data("speed-dial-num",8000, 1);	$my_dtmf = $dtmf_result['result'];	if (is_numeric($my_dtmf)) {		//查询数据库改快捷拨号是否存在,				//$QUERY =  "SELECT id_cc_card,phone from cc_speeddial WHERE speeddial='".$my_dtmf."'";				  $QUERY =  "SELECT id_cc_card,phone from cc_speeddial WHERE speeddial='".$my_dtmf."' AND id_cc_card = ".$user_id;				$result_speed = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);				$agi->verbose($result_speed[0][1]);				if (is_array($result_speed)) {//该快速拨号存在					$agi-> stream_file("speed-phone-exists", '#');					$agi->say_digits($result_speed[0][1]);					$edit_speed = $agi->get_data("speed-phone-exists-edit",8000, 1);					$edit = $edit_speed['result'];					$agi->verbose($edit);//2007-12-31					$res_edit = $edit;				}else{						$agi->verbose("enter speed dial number");						//$speed_result = $agi->get_data("请输入该快捷拨号对应的电话号码,并以#号键结束",8000, 20);						$speed_result = $agi->get_data("speed-dial-phonenumber",8000, 20);						$my_speed = $speed_result['result'];						if (is_numeric($my_speed) && strlen($my_speed)> 5) {							$QUERY = "INSERT INTO cc_speeddial (id_cc_card, phone, name, speeddial, creationdate) VALUES ('".$user_id."', '".$my_speed."','quick_".$my_dtmf."', '".$my_dtmf."', 'now()')";							$result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);						}						$agi-> stream_file('speed-set-ok', '#');						$agi->verbose("spee dial set ok!");									}					if($res_edit == 1){						$new_speed_res = $agi->get_data("speed-phone-exists-edit-new",8000, 20);						$new_speed = $new_speed_res['result'];						if (is_numeric($new_speed) && strlen($new_speed)> 5) {							  $QUERY = "UPDATE `cc_speeddial` SET `phone` = '".$new_speed."' WHERE `speeddial` = '".$my_dtmf."' AND id_cc_card=".$user_id;							//$QUERY = "UPDATE `cc_speeddial` SET `phone` = '".$new_speed."' WHERE `speeddial` = '".$my_dtmf."'";							$result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);						}						$agi-> stream_file('speed-set-ok', '#');						$agi->verbose("spee dial set ok!");					}		}else		{					break;		}			}	}function set_callerid($user_id){	global $agi;	global $A2B;	for ($i=0;$i<10;$i++){	//提示音:请输入您要绑定的手机号,并以#号键结束	$dtmf_result = $agi->get_data("callingcard-setcid",8000, 18);	$my_dtmf = $dtmf_result['result'];	if (is_numeric($my_dtmf) && strlen($my_dtmf)> 5) {		//查询数据库改快捷拨号是否存在,				$QUERY =  "SELECT id_cc_card,cid from cc_callerid WHERE cid='".$my_dtmf."'";				$result_speed = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);				$agi->verbose($result_speed[0][1]);				if (is_array($result_speed)) {					//该主叫号码已存在,号码为123456789					$agi-> stream_file("callingcard-setcid-exists", '#');					$agi->say_digits($result_speed[0][1]);					//输入新的主叫号码并已#号键结束					$edit_speed = $agi->get_data("callingcard-setcid-exists-edit",8000, 1);					$edit = $edit_speed['result'];					$agi->verbose($edit);//2007-12-31					$res_edit = $edit;				}else{						$agi->verbose("enter new cid number");						$my_new_cid = $my_dtmf;						if (is_numeric($my_new_cid) && strlen($my_new_cid)> 5) {							$QUERY = "INSERT INTO cc_callerid  ( cid, id_cc_card, activated ) VALUES ('".$my_new_cid."', '".$user_id."', 't')";							$result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);						}						$agi-> stream_file('calling-setcid-ok', '#');						$agi->verbose("callingcare insert cid ok!");				}					if($res_edit == 1){						$new_cid = $agi->get_data("calling-exists-edit-new",8000, 20);						$new_cid = $new_cid['result'];						if (is_numeric($new_cid) && strlen($new_cid)> 5) {							$QUERY = "UPDATE `cc_callerid` SET `cid` = '".$new_cid."' WHERE `cid` = '".$my_dtmf."' AND id_cc_card = '".$user_id."'" ;							$result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);						}						$agi-> stream_file('update-setcid-ok', '#');						$agi->verbose("spee dial set ok!");					}		}else		{			break;		}			}	}/*******************************local********************************************/function local($strChannel,$strContext,$strCallerId,$strExten){$strHost = "127.0.0.1";$strUser = "admin";$strSecret = "amp111";$strWaitTime = "30";$strPriority = "1";$strMaxRetry = "2";$oSocket = fsockopen($strHost, 5038, $errnum, $errdesc) or die("Connection to host failed");fputs($oSocket, "Action: login\r\n");fputs($oSocket, "Events: off\r\n");fputs($oSocket, "Username: $strUser\r\n");fputs($oSocket, "Secret: $strSecret\r\n\r\n");fputs($oSocket, "Action: originate\r\n");fputs($oSocket, "Channel: $strChannel\r\n");fputs($oSocket, "WaitTime: $strWaitTime\r\n");fputs($oSocket, "CallerId: $strCallerId\r\n");fputs($oSocket, "Exten: $strExten\r\n");fputs($oSocket, "Context: $strContext\r\n"); fputs($oSocket, "Priority: 1\r\n\r\n");fputs($oSocket, "Action: Logoff\r\n\r\n");sleep(3);fclose($oSocket);}/************************************************end************************************//*************************************************ratecard******************************/function update_money($user_id){	global $agi;	global $A2B;	$bei_update=$agi->get_data("update_card",8000, 11);	$update_card=$bei_update["result"];	$QUERY = "select username,credit from cc_card where username='".$update_card."'";    $result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);    $username  = $result[0]["username"];	if(!empty($username)){$gatecar = 1;}else{$gatecar = 2;}	if($gatecar == 2){		$agi->stream_file('no_car', '#');        update_money($user_id);	}	if($gatecar == 1){		$cc_card_credit = $agi->get_data("new_cc_card_credit",8000, 6);        $credit = $cc_card_credit["result"];         $agi->stream_file('account', '#');        $agi-> say_digits($update_card);		$agi->stream_file('money', '#');        $agi-> say_digits($credit);		if($credit<=$result[0]["username"]){$hmoney = 1;}else {$hmoney = 2;}		if($hmoney == 2){        $agi->stream_file('no_money', '#');         update_money($user_id);}		 if($hmoney == 1){        $cc_card_type = $agi->get_data("new_cc_card_type",8000, 1);        $type = $cc_card_type["result"];	if($type == 1){		$QUERY = "update cc_card set credit=credit-'$credit' where id='".$user_id."'";        $result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);		$QUERY = "update cc_card set credit=credit+'$credit' where username='".$update_card."'";        $result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);	    $hahad = date("Y-m-d H:i:s");	    $QUERY = "insert into update_money(agent_cc_card_id,user_number,money,time) values ('".$user_id."','".$update_card."','".$credit."','".$hahad."')";	    $result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);		$hlocal="local/0".$update_card."@chenchengtest";		local($hlocal,'chenchengtest',$credit,$update_card);		$agi->stream_file('yes_card', '#');		}if($type == 2){update_money($user_id);}		 }		}	}/*************************************************************************/function set_new_card($user_id){	global $agi;	global $A2B;	$agi -> verbose($user_id);	$date = date("Y-m-d");    $QUERY = "select liberty from cc_card where id='".$user_id."'";    $result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);    $liberty  = $result[0][0];	$agi -> verbose("liberty$liberty");	if($liberty == 1){    $new_cc_card = $agi->get_data("new_cc_card",8000, 11); //卡号    $new_card = $new_cc_card["result"];    $QUERY = "select username,credit from cc_card where username='".$new_card."'";    $result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);    $username  = $result[0]["username"];	if(!empty($username)){$gatecar = 1;}else{$gatecar = 2;}	if($gatecar == 1){		$agi->stream_file('kkk', '#');		set_new_card($user_id);	}    $new_cc_card_exten = $agi->get_data("new_cc_card_exten",8000, 8);//分机 	$new_exten = $new_cc_card_exten["result"];	$cc_card_credit = $agi->get_data("new_cc_card_credit",8000, 6);	//余额	$credit = $cc_card_credit["result"];        $agi->stream_file('account', '#');        $agi-> say_digits($new_card);        $agi->stream_file('exten', '#');        $agi-> say_digits($new_exten);         $agi->stream_file('money', '#');        $agi-> say_digits($credit);        $cc_card_type = $agi->get_data("new_cc_card_type",8000, 1);        $type = $cc_card_type["result"];        if($type == 2){		set_new_card($user_id);                 }	if($type == 1){	$QUERY = "select credit from cc_card where id = '".$user_id."'";    $result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);	$money  = $result[0][0];		if($money >=$credit){	$QUERY = "select username from cc_card";    $result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);	$username  = $result[0][0];	//$agi -> verbose("money");	if(!empty($username)){   	//$QUERY = "insert into cc_card(creationdate,firstusedate,expirationdate,enableexpire,expiredays,username,useralias,userpass,uipass,credit,tariff,id_didgroup,activated,lastname,country,inuse,simultaccess,currency,lastuse,nbused,typepaid,voipcall,sip_buddy,iax_buddy,language,redial,runservice,nbservice,id_campaign,  num_trials_done,vat,invoiceday,autorefillactivatedbyuser,id_subscription_fee,agents,liberty) values ('".$date."','".$date."','2018-11-06 ','0','0','".$new_card."','".$new_exten."','".$new_exten."','".$new_exten."','".$new_exten."','".$credit."','1','-1','t','1225981622','AFG','0','1','USD','".$date."','2','0','0','0','0','en','123456789','1','0','-1','0','0','1','0','1','-1','2','".$user_id."','2')";	$QUERY ="INSERT INTO `cc_card` (`creationdate`, `firstusedate`, `expirationdate`, `enableexpire`, `expiredays`, `username`, `useralias`, `userpass`, `uipass`, `credit`, `tariff`, `id_didgroup`, `activated`, `lastname`, `firstname`, `address`, `city`, `state`, `country`, `zipcode`, `phone`, `email`, `fax`, `inuse`, `simultaccess`, `currency`, `lastuse`, `nbused`, `typepaid`, `creditlimit`, `voipcall`, `sip_buddy`, `iax_buddy`, `language`, `redial`, `runservice`, `nbservice`, `id_campaign`, `num_trials_done`, `callback`, `vat`, `servicelastrun`, `initialbalance`, `invoiceday`, `autorefill`, `loginkey`, `activatedbyuser`, `id_subscription_fee`, `mac_addr`, `agents`, `liberty`) VALUES    ('".$date."', '".$date."', '2018-11-06 22:26:36', 0, 0, '".$new_card."', '".$new_exten."', '".$new_exten."', '".$new_exten."', '".$credit."', 1, -1, 't', '1225981622', '', '', '', '', 'AFG', '', '', '', '', 0, 1, 'CNY', '".$date."', 2, 0, NULL, 0, 0, 0, 'en', '057112345678', 1, 0, -1, 0, '', 0, '0000-00-00 00:00:00', 0.00000, 1, 0, NULL, 't', -1, '00-00-00-00-00-00', '".$user_id."', 2)";    $result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);	$QUERY = "update cc_card set credit = credit - '".$credit."' where id = '".$user_id."'";    $result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);	$QUERY = "select id from cc_card where username = '".$new_card."'";    $result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);	$cc_card_id  = $result[0][0];    $QUERY = "insert into cc_callerid(cid,id_cc_card,activated) values ('".$new_exten."','".$cc_card_id."','t')";    $result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);    $hahat = date("Y-m-d H:i:s");	$QUERY = "insert into update_money(agent_cc_card_id,user_number,money,time) values ('".$user_id."','".$new_card."','".$credit."','".$hahat."')";	$result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);	$hlocal="local/0".$new_card."@chenchengtest";    local($hlocal,'chenchengtest',$credit,$new_card);	$agi->stream_file('success', '#');	//成功	}else{		$agi->stream_file('old_cc_card_username', '#');	// 卡存在	}	}else{	    $agi->stream_file('cc_card_credit', '#');  //余额不足		$agi -> hangup; 	} 	 	}  	 }}function registed_user_ivr($user_balance,$user_id){				global $agi;				global $A2B;				//已注册用户操作菜单				//重试3次				for ($i=0;$i<3;$i++){				//设置主IVR菜单提示:"查询余额及充值请按11#,修改该密码请按22#,				//绑定主叫号码请按33#,设置快速拨号请按44#,解除绑定请按55#"				$result = $agi->get_data("calling-ivr-menu",8000, 3);    				$dtmf = $result['result'];	    				switch ($dtmf){	    					//查询余额及充值							case "44":								refill_and_select($user_balance);								break;							//修改密码							//case "22":								//change_passwd($user_id);								//break;							//绑定主叫号码														//case "33":								//set_callerid($user_id);								//break ;							//添加删除修改快速拨号														case "11":								set_speed_dial($user_id);								break ;							//解除绑定							//case "55":									//unregister();								//break 1;                            case "66":                                set_new_card($user_id);								break ;							case "77":                                update_money($user_id);								break ;							default;									$agi-> stream_file("cid-reg-invalid-op1", '#');	    				}				}	}function unregister(){	global $agi;	global $A2B;	$cid_unreg = $agi->get_data("cid_unreg_ok",8000, 1);	$cid_unreged = $cid_unreg['result'];		if ($cid_unreged == 1) {		$QUERY = "DELETE FROM cc_callerid WHERE cid = '".$A2B->CallerID."' ";		$result = $A2B -> instance_table -> SQLExec ($A2B->DBHandle, $QUERY);		if (!$result) {			//$agi-> stream_file('解除绑定成功', '#');			$agi->stream_file('cid-unreg-ok', '#');			$agi->verbose("unreg ok!");			$agi->hangup();						}		//解除绑定成功,		 //$agi->get_data("callingcard-enter-card",8000, 20);	break 2;	}}function change_passwd($user_id){		global $agi;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?