向zendDesk发送ticket

来源:互联网 发布:mac 不能剪切 编辑:程序博客网 时间:2024/06/14 10:21
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__);}}}

原创粉丝点击