Zendesk.class.php
3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?
namespace SH;
use Zendesk\API\Client as ZendeskAPI;
class Zendesk
{
private $client;
static function getInstance() {
static $instance;
if(!isset($instance)) {
$instance = new self();
}
return $instance;
}
private function __construct() {
spl_autoload_register(function($class) {
if(strpos($class, 'Zendesk') !== 0) return;
include BASE_PATH . '/lib/zendesk_api_client_php/src/'.preg_replace('#\\\|_(?!.+\\\)#','/',$class).'.php';
});
$subdomain = 'stroyhouse';
// $username = "st4you@yandex.ru";
$token = "P9EBid3f7GE7ny3WeEefPjigRpeBoKjzduPXQKNi";
$username = 'tyrbass@gmail.com';
// $password = 'sdfhFR$G43vc@';
$this->client = new ZendeskAPI($subdomain, $username);
$this->client->setAuth('token', $token);
// $this->client->setAuth('password', $password);
}
function createNewTicket($subject, $body, $hiddenBody, $phone, $email, $userName) {
$submitterId = $this->genZendeskUserId($phone, $email, $userName);
// $userFields = array();
// if($userName) {
// $userFields['name'] = $userName;
// }
// if($email) {
// $userFields['email'] = $email;
// }
// if($phone) {
// $userFields['phone'] = $phone;
// }
$newTicket = $this->client->tickets()->create(array(
'subject' => $subject,
'comment' => array(
'body' => $body
),
'custom_fields' => array(
22782113 => $phone,//Контактный телефон
),
'priority' => 'normal',
// 'submitter_id' => $submitterId,
'requester_id' => $submitterId,
// 'requester' => $userFields
));
// AddMessage2Log('created $newTicket ' . print_r($newTicket->ticket->id, true), 'zendesk');
if($hiddenBody && $newTicket && $newTicket->ticket && $newTicket->ticket->id) {
$tickedId = $newTicket->ticket->id;
$changedTicket = $this->client->ticket()->update(array(
'id' => $tickedId,
'comment' => array(
'public' => false,
'body' => $hiddenBody
)
));
}
return $newTicket;
}
function genZendeskUserId($phone, $email, $userName) {
$userId = false;
if($phone) {
$result = $this->client->users()->search(array('query' => $phone));
if($result && !empty($result->users)) {
$userId = $result->users[0]->id;
}
}
if(!$userId && $email) {
$result = $this->client->users()->search(array('query' => $email));
if($result && !empty($result->users)) {
$userId = $result->users[0]->id;
}
}
if(!$userId) {
$userFields = array(
'verified' => true
);
if($userName) {
$userFields['name'] = $userName;
}
if($email) {
$userFields['email'] = $email;
}
if($phone) {
$userFields['phone'] = $phone;
}
$result = $this->client->users()->create($userFields);
if ($result) {
$userId = $result->user->id;
}
}
return $userId;
}
}