向zendDesk发送ticket

xiaoxiao2021-02-28  103

use Yii; use yii\helpers\Json; use yii\console\Controller; use api\User; use api\Company; use api\TrialRequest; use api\UserPermission; define("ZDAPIKEY", "*******"); define("ZDUSER", "service@******.com"); define("ZDURL", "https://******.zendesk.com/api/v2"); class ZendeskController extends Controller{ public $enableCsrfValidation=false; public static function curlWrap($url, $json, $action) { $ch = curl_init(); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_MAXREDIRS, 10 ); curl_setopt($ch, CURLOPT_URL, ZDURL.$url); curl_setopt($ch, CURLOPT_USERPWD, ZDUSER."/token:".ZDAPIKEY); switch($action){ case "POST": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $json); break; case "GET": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); break; case "PUT": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($ch, CURLOPT_POSTFIELDS, $json); break; case "DELETE": curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); break; default: break; } curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json')); curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $output = curl_exec($ch); curl_close($ch); //$decoded = json_decode($output); return $output; } public function actionConfirmEmail(){ //todo 用户注册后5分钟内没有完成email验证 $trialRequests=TrialRequest::find()->where(['verified' => 0,])->andWhere(['<','created_at',date('Y-m-d H:i:s',strtotime('-60 minute'))])->all(); $subject=count($trialRequests).'个用户注册后1小时内没有完成email验证'; $desc='用户信息:'; if(count($trialRequests) != 0){ foreach($trialRequests as $value){ $work_email=$value['work_email']; $phone_number = $value['phone_number']; $company = $value['company']; $created_at = $value['created_at']; $txt = sprintf("\nemail:%s\tphone:%s\tcompany:%s\tcreated_at:%s",$work_email,$phone_number,$company,$created_at); $desc=$desc.$txt; } $arr['new_tick_assignee'] = "******"; $arr['new_req_name'] = "iBot"; $arr['new_req_email'] = "noreply@*****.com"; $arr['new_tick_subj'] = $subject; $arr['new_tick_desc'] = $desc; // CREATE JSON FORMATTED VARIABLE TO PASS AS PARAMETER TO API $create = json_encode( array( 'ticket' => array( 'requester' => array( 'name' => $arr['new_req_name'], 'email' => $arr['new_req_email'] ), 'assignee_id' => $arr['new_tick_assignee'], 'subject' => $arr['new_tick_subj'], 'description' => $arr['new_tick_desc'] ) ), JSON_FORCE_OBJECT ); $data = self::curlWrap("/tickets.json", $create, "POST"); if($data == false) Yii::error("发送未验证email用户信息失败", __METHOD__); //todo add more error message } } public function actionSelectPlan(){ //todo 完成email验证的用户,一天内没有选择plan试用 $sql = "select * from user_permission where company_id in (select id from zuser.company where work_email in (select work_email from zuser.trial_request where verified=1 )) and (plan_code is null or plan_code='') and created_at < date_add(now(),INTERVAL -1 day)"; $userPermissions=UserPermission::findBySql($sql)->all(); $subject=count($userPermissions).'个用户1天内没有选择plan试用'; $desc='用户信息:'; if(count($userPermissions) != 0){ foreach($userPermissions as $value){ $work_email=$value['email']; $user_id = $value['user_id']; $company_id = $value['company_id']; $phone_number = ''; $username = ''; $company_name = ''; $user = User::findOne(['id' => $user_id]); if($user != null){ $phone_number = $user->phone_number; $username = $user->username; } $company = Company::findOne(['id' => $company_id]); if($company != null){ $company_name = $company->name; } $txt = sprintf("\nemail:%s\tphone:%s\tusername:%s\tcompany:%s",$work_email,$phone_number,$username,$company_name); $desc=$desc.$txt; } // CREATE AN ARRAY WITH POST DATA AND DESIRED TICKET CONTENT/ATTRIBUTES $arr['new_tick_assignee'] = "*****"; $arr['new_req_name'] = "iBot"; $arr['new_req_email'] = "noreply@*****.com"; $arr['new_tick_subj'] = $subject; $arr['new_tick_desc'] = $desc; // CREATE JSON FORMATTED VARIABLE TO PASS AS PARAMETER TO API $create = json_encode( array( 'ticket' => array( 'requester' => array( 'name' => $arr['new_req_name'], 'email' => $arr['new_req_email'] ), 'assignee_id' => $arr['new_tick_assignee'], 'subject' => $arr['new_tick_subj'], 'description' => $arr['new_tick_desc'] ) ), JSON_FORCE_OBJECT ); $data = self::curlWrap("/tickets.json", $create, "POST"); if($data == false) Yii::error("发送未选择试用用户信息失败",__METHOD__); } } public function actionCancelPackage(){ //取消套餐 $sql = 'select * from user_permission where subscription_status=2 and trial_ended_at >= now()'; $userPermissions = UserPermission::findBySql($sql)->all(); $subject=count($userPermissions).'个用户取消套餐'; $desc='用户信息:'; if(count($userPermissions) != 0){ foreach($userPermissions as $value){ $work_email=$value['email']; $user_id = $value['user_id']; $company_id = $value['company_id']; $phone_number = ''; $username = ''; $company_name = ''; $user = User::findOne(['id' => $user_id]); if($user != null){ $phone_number = $user->phone_number; $username = $user->username; } $company = Company::findOne(['id' => $company_id]); if($company != null){ $company_name = $company->name; } $txt = sprintf("\nemail:%s\tphone:%s\tusername:%s\tcompany:%s",$work_email,$phone_number,$username,$company_name); $desc=$desc.$txt; } $arr['new_tick_assignee'] = "*****"; $arr['new_req_name'] = "iBot"; $arr['new_req_email'] = "noreply@*****.com"; $arr['new_tick_subj'] = $subject; $arr['new_tick_desc'] = $desc; // CREATE JSON FORMATTED VARIABLE TO PASS AS PARAMETER TO API $create = json_encode( array( 'ticket' => array( 'requester' => array( 'name' => $arr['new_req_name'], 'email' => $arr['new_req_email'] ), 'assignee_id' => $arr['new_tick_assignee'], 'subject' => $arr['new_tick_subj'], 'description' => $arr['new_tick_desc'] ) ), JSON_FORCE_OBJECT ); $data = self::curlWrap("/tickets.json", $create, "POST"); if($data == false) Yii::error("发送取消套餐用户信息失败",__METHOD__); } } }
转载请注明原文地址: https://www.6miu.com/read-55877.html

最新回复(0)