[PHP] 그누보드5 게시글 등록 텔레그램 Push 알림 플러그인
지난 주에 작성한 포스트를 바탕으로 그누보드5에서 게시글 등록 때 Telegram(텔레그램)에 Push 알림을 보내는 플러그인을 만들었다. 게시글 등록 때는 관리자에게 알림이 전송되고 댓글은 게시글 작성자에게 알림이 전송된다. 이 플러그인을 활용해서 그누보드5 메모 수신 등의 알림을 텔레그램으로 전송할 수 있는데 이것은 플러그인의 수정이 필요하다. 텔레그램으로 메세지를 전송하는 Class 는 아래와 같다.
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
/**
* Author : chicpro (https://chicpro.dev)
*
* https://chicpro.dev/13536
* https://chicpro.dev/13541
* https://core.telegram.org/bots
* https://core.telegram.org/bots/api#sendmessage
**/
class TELEGRAM
{
private $apiURL;
private $chatID;
private $token;
private $text;
private $parseMode;
public function __construct($token) {
$this->token = $token;
$this->apiURL = 'https://api.telegram.org/bot';
$this->parseMode = 'Markdown';
}
public function setChatID($chatID) {
$this->chatID = $chatID;
}
public function setText($text) {
$this->text = $text;
}
public function setParseMode($mode) {
$this->parseMode = $mode;
}
public function sendMessage() {
$url = $this->apiURL . $this->token . '/sendmessage?chat_id=' . $this->chatID . '&text=' . $this->text;
if($this->parseMode && ($this->parseMode == 'HTML' || $this->parseMode == 'Markdown'))
$url .= '&parse_mode=' . $this->parseMode;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
}
Telegram 플러그인 : telegram.push.zip
플러그인을 사용하기 위해서는 첨부된 파일을 다운로드 후 압축을 해제하여 각 디렉토리에 파일을 복사한다. config.php 파일을 열어 TELEGRAM_TOKEN 값을 설정해야 하는데 이것은 Push 알림을 전송할 메세지봇의 토큰이다. 봇의 토큰을 확인하는 것은 이전 포스트 https://chicpro.dev/13536 에 설명되어 있다. 또한 알림을 수신하기 위해서는 텔레그램 Chat ID를 확인해야 하는데 Chat ID는 포스트 https://chicpro.dev/13541 를 참고하면 된다. write_update.tail.skin.php, write_comment_update.tail.skin.php 파일을 사용하는 게시판 스킨 디렉토리에 복사하면 Push 알림이 전송된다. 회원별 Chat ID는 member 테이블의 mb_10 필드에 저장된 것으로 설정돼 있으며 config.php 파일에서 G5_TELEGRAM_CHAT_ID 값을 변경할 수 있다. 그리고 관리자 외에 사이트 방문자가 텔레그램 알림을 수신하기 위해서는 텔레그램에서 메세지봇을 검색한 후 아래 이미지와 같이 hello 등의 간단한 대화를 해야만 그 다음부터 알림이 수신된다.