[PHP] Slack 채널로 메세지 전송
Slack은 지금 회사에 이직하면서 접했고 지금은 업무 처리에 많은 부분을 담당하고 있다. 최근의 서비스들이 그렇듯 Slack 역시 다양한 API를 제공하고 있는데 chat.postMessage 를 이용해 특정 채널로 메세지를 전송해보자. 아래 class를 사용하기 위해서는 Slack API에 사용될 Legacy token을 발급받아야 한다. Token은 https://api.slack.com/custom-integrations/legacy-tokens 페이지를 방문해 발급받을 수 있다.
<?php
/*
https://api.slack.com/methods/chat.postMessage
Token 생성 : https://api.slack.com/custom-integrations/legacy-tokens
*/
class SLACK
{
private $token;
private $channel;
private $username;
private $message;
public function __construct($token, $username='Slack Bot') {
$this->token = $token;
$this->username = $username;
}
public function setChannel($channel) {
$this->channel = $channel;
}
public function setUsetName($username) {
$this->username = $username;
}
public function setMessage($message) {
$this->message = $message;
}
public function send() {
$postData = array(
'token' => $this->token,
'channel' => $this->channel,
'username' => $this->username,
'text' => $this->message
);
$ch = curl_init("https://slack.com/api/chat.postMessage");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
}
위 class를 이용해 메세지를 발송하는 코드는 아래와 같다.
<?php
require_once './slack/slack.class.php';
$token = 'your token';
$slack = new SLACK($token);
$slack->setChannel('#general');
$slack->setMessage('Hi, chicpro '.date('Y-m-d H:i:s'));
$result = $slack->send();
print_r($result);
?>
#general 은 실제 채널로 변경해야 한다.
자료
- https://api.slack.com/methods/chat.postMessage
- https://api.slack.com/custom-integrations/legacy-tokens