“PHP 슬랙 연동” 하기!
PHP 슬랙 연동 , So called- 웹 훅!
프레임워크를 사용하지 않아서, PHP 어디에서든 사용이 가능합니다
웹서비스를 사용하다 보면 노티를 받아야 할 일이 의외로 많다. 어떤 서비스를 하느냐에 따라 천차만별이긴 하겠지만,
크게 세 가지 경우 정도 있을 것으로 생각된다.
- 서비스가 정상적으로 작동하는지 확인할 때 (서버다운, exception 발생 등)
- QNA 등, 실시간으로 사용자에게 응대해야 할 때
- 백그라운드 프로세스가 잘 동작하고 있는지 모니터링
물론 나보다 경험이 많은 사람들은 이 이외에도 노티피케이션 받아야 할 경우가 더 많이 있다는 걸 알 것이다.
근데 지금까지 경험해본 바로는 저 3개 정도가 되는 것 같다.
그렇다면, 어떻게 PHP 코드로 슬랙 웹 훅을 연동할까?
출처 : //api.slack.com/
Prerequisite
- 슬랙 웹훅 연동 서비스 신청 (알림 기본 설정) — 슬랙 자동 알림 기본 설정 방법 (웹 훅)
서비스에 들어가기 전에, 슬랙 웹 훅 서비스를 활성화시켜야 한다. 어떻게 하는지 모르신다면 위의 글을 클릭.
꼭!!!!!!!!!!!!!!
PHP 슬랙 연동 코드 작성하기
슬랙 자동 알림 기본 설정 방법 (웹 훅)를 잘 따라 했다면, URL 하나를 받았을 것이다.
(예 : hooks.slack.com/services/AAAAAAAAA/BBBBBBBBBBB/CCCCCCCCCCCCCCCCCCCC)
1. 받은 URL을 $request_url 변수로 지정
$request_url = "hooks.slack.com/services/AAAAAAAAA/BBBBBBBBBBB/CCCCCCCCCCCCCCCCCCCC"
2. 메시지 데이터 생성 및 설정
$data = array("text" => "Server has been stopped");
$json_data = json_encode($data);
3. CURL-ing
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $request_url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1000);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type:application/json",
));
$response = curl_exec($ch);
curl_close($ch);
여기까지만 하면 슬랙 연동이 되는 것을 확인할 수 있다.
전체 코드 및 함수화 + 클래스화 ( 가져다 쓰세요! )
함수화
public function send_message($msg){
$request_url = "THE GIVEN URL COMES HERE";
$data = array("text" => $msg);
$json_data = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $request_url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1000);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type:application/json",
));
$response = curl_exec($ch);
curl_close($ch);
}
클래스화
// [Slack.php]
<?php
namespace Utils; // optional
class Slack {
const REQUEST_URL = "THE GIVEN URL COMES HERE";
// 컨스트럭트는 필요 없습니다 !
public function send_message($msg){
$data = array("text" => $msg);
$json_data = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, self::REQUEST_URL);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1000);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type:application/json",
));
$response = curl_exec($ch);
curl_close($ch);
}
}
// [Others.php]
<?php
require_once('Slack.php');
Utils\Slack::send_message("Hello world");
?>
클래스화에 나와있는 namespace는 옵션이다. 당연, namespace를 사용하지 않아도 된다.
근데 Slack이라는 이름의 클래스가 웬만하면 하나씩은 있을 거기 때문에 임의로 Utils라는 이름으로 namespace 넣어두었다.
Namespace를 사용하지 않고 함수 콜을 하는 방법은,
[Others.php]
<?php
require_once('Slack.php');
Slack::send_message("Hello world"); // 앞에 Utils 만 빼주면 된다.
?>
'IT Study > 슬랙연동하기' 카테고리의 다른 글
Bash Script 슬랙 연동 – 웹훅 ! (0) | 2020.11.04 |
---|---|
Nodejs 슬랙 연동 – 웹훅 ! (0) | 2020.11.04 |
슬랙 자동 알림 기본 설정 방법 (웹훅) (0) | 2020.11.02 |