forked from ilhamrizqi/whmcs-hook-slack
/
slack.php
121 lines (99 loc) · 3.07 KB
/
slack.php
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
117
118
119
120
<?php
/**
* Slack notification hook
*
* @package Slack
* @author Ilham Rizqi Sasmita <irs@sandiloka.com>
* @copyright Copyright (c) Ilham Rizqi Sasmita
* @license MIT License
* @version $Id$
* @link https://github.com/ilhamrizqi/whmcs-hook-slack
*/
if (!defined("WHMCS"))
die("This file cannot be accessed directly");
function get_client_name($clientid)
{
$client = "";
$command = "getclientsdetails";
$adminuser = "ilham";
$values["clientid"] = $clientid;
$values["pid"] = $pid;
$results = localAPI($command,$values,$adminuser);
$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, $results, $values, $tags);
xml_parser_free($parser);
$data = array();
if($results["result"] == "success")
{
$client = $results["firstname"]." ".$results["lastname"];
$client = trim($client);
$company = $results["companyname"];
if($company != "")
{
$client .= " (".$company.")";
}
}
else
{
$client = "Error";
}
return $client;
}
function slack_post($text)
{
$json = file_get_contents(dirname(__FILE__) ."/slack.json");
$config = json_decode($json, true);
$url = $config['hook_url'];
$payload = array
(
"text" => $text,
"username" => $config["username"],
"icon_emoji" => $config["emoji"],
"channel" => $config["channel"]
);
$data = "payload=".json_encode($payload);
logActivity("Send slack notification:".$text);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
}
function hook_slack_ticketopen($vars)
{
$ticketid = $vars['ticketid'];
$userid = $vars['userid'];
$deptid = $vars['deptid'];
$deptname = $vars['deptname'];
$subject = $vars['subject'];
$message = $vars['message'];
$priority = $vars['priority'];
$name = get_client_name($userid);
$text = "[ID: ".$ticketid."] ".$subject."\r\n";
$text .= "User: ".$name."\r\n";
$text .= "Departemen: ".$deptname."\r\n";
//$text .= "Priority: ".$priority."\r\n";
$text .= $message."\r\n";
slack_post($text);
}
function hook_slack_ticketuserreply($vars)
{
$ticketid = $vars['ticketid'];
$userid = $vars['userid'];
$deptid = $vars['deptid'];
$deptname = $vars['deptname'];
$subject = $vars['subject'];
$message = $vars['message'];
$priority = $vars['priority'];
$name = get_client_name($userid);
$text = "[ID: ".$ticketid."] ".$subject."\r\n";
$text .= "User: ".$name."\r\n";
$text .= "Departemen: ".$deptname."\r\n";
//$text .= "Priority: ".$priority."\r\n";
$text .= $message."\r\n";
slack_post($text);
}
add_hook("TicketOpen", 1, "hook_slack_ticketopen");
add_hook("TicketUserReply", 1, "hook_slack_ticketuserreply");