Initial commit
This commit is contained in:
commit
35cca5dfa0
|
@ -0,0 +1 @@
|
|||
tags
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"name": "bit/slask",
|
||||
"description": "Slack simple posting utils",
|
||||
"homepage": "https://git.bit5.ru/bit/slack",
|
||||
"require": {
|
||||
"php": ">=7.4"
|
||||
},
|
||||
"autoload": {
|
||||
"classmap": ["slack.inc.php"]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,124 @@
|
|||
<?php
|
||||
define("SLACK_REPLY_MAX_LEN", 3072);
|
||||
|
||||
function _slack_init($token, $chan_id, array $fields, $channel_field_name = 'channel')
|
||||
{
|
||||
if(!isset($fields['token']))
|
||||
$fields['token'] = $token;
|
||||
if(!isset($fields[$channel_field_name]))
|
||||
$fields[$channel_field_name] = $chan_id;
|
||||
return $fields;
|
||||
}
|
||||
|
||||
function _slack_curl_exec($ch, $debug)
|
||||
{
|
||||
curl_setopt($ch, CURLOPT_VERBOSE, $debug);
|
||||
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
|
||||
if($debug)
|
||||
{
|
||||
echo "SLACK RAW RESP BEGIN\n";
|
||||
var_dump($result);
|
||||
echo "SLACK RAW RESP END\n\n";
|
||||
}
|
||||
|
||||
$resp = json_decode($result, true);
|
||||
|
||||
if($debug)
|
||||
{
|
||||
echo "SLACK PARSED JSON RESP BEGIN\n";
|
||||
var_dump($resp);
|
||||
echo "SLACK PARSED JSON RESP END\n";
|
||||
}
|
||||
|
||||
return $resp;
|
||||
}
|
||||
|
||||
function slack_send_file($token, $chan_id, $post_text, $file_path, $mime, $fields = array(), $debug = false)
|
||||
{
|
||||
$file_name = basename($file_path);
|
||||
$file = new \CurlFile($file_path, $mime, $file_name);
|
||||
|
||||
$header = array();
|
||||
$header[] = 'Content-Type: multipart/form-data';
|
||||
|
||||
$fields = _slack_init($token, $chan_id, $fields, 'channels');
|
||||
$fields['file'] = $file;
|
||||
$fields['filename'] = $file_name;
|
||||
$fields['title'] = $file_name;
|
||||
$fields['initial_comment'] = $post_text;
|
||||
$fields['filetype'] = pathinfo($file_path, PATHINFO_EXTENSION);
|
||||
|
||||
$ch = curl_init("https://slack.com/api/files.upload");
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
|
||||
curl_setopt($ch, CURLOPT_MAX_SEND_SPEED_LARGE, 10*1024*1024);
|
||||
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
|
||||
|
||||
return _slack_curl_exec($ch, $debug);
|
||||
}
|
||||
|
||||
function slack_send_message($token, $chan_id, $message, $fields = array(), $debug = false)
|
||||
{
|
||||
$ch = curl_init("https://slack.com/api/chat.postMessage");
|
||||
$fields = _slack_init($token, $chan_id, $fields);
|
||||
$fields["text"] = $message;
|
||||
|
||||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
||||
|
||||
return _slack_curl_exec($ch, $debug);
|
||||
}
|
||||
|
||||
function slack_send_reply($token, $chan_id, $thread_ts, $message, $fields = array(), $debug = false)
|
||||
{
|
||||
$fields["thread_ts"] = $thread_ts;
|
||||
return slack_send_message($message, $fields, $debug, $token, $chan_id);
|
||||
}
|
||||
|
||||
function slack_send_thread_with_replies($token, $chan_id, $message, array $replies, $fields = array(), $debug = false)
|
||||
{
|
||||
$slack_orig_resp = slack_send_message(
|
||||
$token,
|
||||
$chan_id,
|
||||
$message,
|
||||
$fields,
|
||||
$debug,
|
||||
);
|
||||
|
||||
if(!isset($slack_orig_resp['ts']))
|
||||
{
|
||||
echo "Failed to post to Slack: response contains no 'ts' value to post thread replies\n";
|
||||
return null;
|
||||
}
|
||||
|
||||
$ts = $slack_orig_resp['ts'];
|
||||
|
||||
foreach($replies as $reply)
|
||||
{
|
||||
slack_send_reply(
|
||||
$ts,
|
||||
$reply,
|
||||
$fields,
|
||||
$debug,
|
||||
$token,
|
||||
$chan_id
|
||||
);
|
||||
}
|
||||
|
||||
return $ts;
|
||||
}
|
||||
|
||||
function slack_trim_reply($reply, $len = SLACK_REPLY_MAX_LEN)
|
||||
{
|
||||
if(strlen($reply) < $len)
|
||||
return $reply;
|
||||
return substr($reply, 0, $len - 3) . "...";
|
||||
}
|
||||
|
Loading…
Reference in New Issue