向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__);}}}
阅读全文
0 0
- 向zendDesk发送ticket
- 向线程发送消息
- 向浏览器发送内容
- 向窗口发送消息
- 向服务器发送XML
- 向线程发送消息
- 向服务器发送数据
- 向rabbitmq发送消息
- 向nginx发送请求
- 向服务器发送请求
- 向线程发送消息
- 向页面发送请求来发送短信
- 如何发送向tab控件发送tcn_selchange?
- java微信签名,验证微信发送的signature,还有获取access_token和ticket
- 向smtp发送邮件失败
- 向窗口句柄发送字符串
- 向远程计算机发送按键
- dll向exe发送消息
- 排序算法(八)——基数排序
- Volley源码学习笔记_RequestQueue和BasicNetWork
- 第三章Mac系统下安装Vue-cli详细步骤
- Executor并发框架
- es2015
- 向zendDesk发送ticket
- app电量测试
- 187. Repeated DNA Sequences
- caffe1源码解析从入门到放弃1):内存管理syncedmem.hpp / syncedmem.cpp
- 排序算法(九)——八大排序算法总结
- thinkphp3.2.1分页路由
- 快速排序的稳定化实现
- js、jQuery、layer实现弹出层的打开、关闭
- java在list集合指定位置插入对象和js在数组指定位置插入对象的方法