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 + -
显示快捷键?