Skip to content

CHICPRO

  • Life Log
  • Cycling Log
  • Photo Log
    • Portrait
    • Landscape
    • Flower
    • Etc
  • Coding Log
  • Information

[PHP] 그누보드5 게시글 등록 텔레그램 Push 알림 플러그인

2022-05-26 by 편리

지난 주에 작성한 포스트를 바탕으로 그누보드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 등의 간단한 대화를 해야만 그 다음부터 알림이 수신된다.

텔레그램에서 표시되는 알림은 아래 이미지와 같다.

플러그인에서는 메세지 타입을 Markdown 형식에 맞춰 보낸다. HTML 형식으로 보내려면 아래 문서를 참고하면 된다. 텔레그램에서는 아래 문서에 나열된 태그외 다른 태그가 있을 경우 메세지 전송이 되지 않는 것으로 보인다.

메세지타입 : https://core.telegram.org/bots/api#sendmessage

플러그인 Git Repo : https://github.com/chicpro/youngcart5/commits/telegram

Post navigation

Previous Post:

Telegram(텔레그램) Chat ID 확인

Next Post:

Ubuntu 16.04에서 ngx_pagespeed 모듈을 포함한 nginx deb 패키지 컴파일

5 Commments

  1. 서형준 says:
    2017-12-05 at 11:07

    안녕하세요!!
    감사하게 알려주신대로 설정을 끝냈는데요.
    글쓸때마다 접속자에 +1 씩 계속늘어나는데 상관없이 그냥 사용하면되나요?.
    접속자보면 같은아이피에 봇?인거같은데요.
    좋은 지식 감사합니다.!

    Reply
    1. 편리 says:
      2017-12-05 at 12:29

      접속자수가 증가하는 것과 이 플러그인은 관련이 없을 것입니다.
      다른 문제가 있는 것이 아니라면 그냥 사용하시면 될 것 같습니다.

      Reply
      1. 서형준 says:
        2017-12-05 at 18:14

        답변감사합니다! 정말 죄송하지만 하나만 더여쭤보겠습니다..!!
        알람작동이 잘되다가 시간이 좀지나면 봇이 접속자에 사라져서 없게되면 글작성할때 알람이 오지않는거 같습니다.
        글한번 작성후 접속자에 봇아이피가 나타나게 되면 그때부터 다시 글작성하면 알람이 제대로 오는데요.
        제가 지금 생긴 문제점이 (1. 시간이 지나고 나서 글 다시 작성시 봇 알람이 오지 않음, 2. 첫번째 글 작성후 두번째 글 부터 제대로 봇 알람이 작동함)
        염치없지만 어떤 문제인지 힌트좀 주시면 감사하겠습니다..!

        Reply
        1. 편리 says:
          2017-12-06 at 11:33

          제 테스트 계정에서 게시글을 계속해서 작성해보니 아무 이상없이 알림이 전송됩니다.
          이 플러그인은 사이트에 접속하는 봇과는 관련이 없고 게시글이 작성됐을 때 텔레그램 API 서버로 알림내용을 보내고 API 서버에서 알림 내용을 텔레그램으로 전송하는 것입니다. 알림이 오지 않는다면 알림 내용을 텔레그램 API에서 제한하는 태그 등이 포함되어 있지 않은지 확인해 보시거나 API 서버와의 통신 후 리턴되는 값을 확인하셔서 오류를 직접 확인해 보셔야 합니다.

          Reply
          1. 서형준 says:
            2017-12-06 at 12:01

            답변 해주셔서 감사합니다 알려주신대로 참고해서 해보겠습니다!
            다시한번 좋은 지식 공유 감사합니다 (_ _)

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent Posts

  • SK 세븐모바일 유심 셀프교체
  • php 배열 연산에서 + 와 array_merge 의 차이
  • pcntl_fork 를 이용한 다중 프로세스 실행
  • 아이폰 단축어를 이용하여 주중 공휴일엔 알람 울리지 않게 하기
  • 구글 캘린더 전체일정 재동기화
  • OpenLiteSpeed 웹서버에 HTTP 인증 적용
  • OpenLiteSpeed 웹어드민 도메인 연결
  • WireGuard를 이용한 VPN 환경 구축
  • Ubuntu 22.04 서버에 OpenLiteSpeed 웹서버 세팅
  • 맥 vim 세팅

Recent Comments

  • 편리 on 업무관리용 그누보드 게시판 스킨
  • 임종섭 on 업무관리용 그누보드 게시판 스킨
  • 캐논 5D 펌웨어 | Dslr 펌웨어 업그레이드 방법 82 개의 베스트 답변 on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • Top 5 캐논 5D 펌웨어 Top 89 Best Answers on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • 편리 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 임팀장 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 편리 on Notepad++ NppFTP 플러그인 수동 설치
  • paul-j on Notepad++ NppFTP 플러그인 수동 설치
  • YS on Windows 10 iCloud 사진 저장 폴더 변경
  • 편리 on Docker를 이용한 Centos7 + httpd + php 5.4 개발환경 구축

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
© 2025 CHICPRO | Built using WordPress and SuperbThemes