채택완료

qa게시판 텔레그램 연동 질문드립니다.

2021-03-29 (월) 22:33:56 2,911

안녕하세요.

현재 회원가입/새글/쪽지 등을 텔레그램과 연동하여 알람을 받고 있는데요.

다른 게시판에서는 새글 올라오면 [게시판명] 에 [닉네임] 변수를 받아서 잘 뿌려줍니다.

그런데 qa게시판에 새글이 올라오면 [] 에 [] 이런식으로 변수없이 공백으로 뿌려주네요..

/bbs/qawrite_update.php 하단에

Copy
// 텔레그램 PUSH 코드 실행(gnuwiz)

@include_once(G5_BBS_PATH . '/telegram_class.php');

$telegram_msg = new telegram_msg();

$res = $telegram_msg->send();

이렇게 추가하였고..

/bbs/telegram_class.php 코드는 아래와 같습니다.

Copy
<?php

class telegram_msg {

    

    private $chat_id            = ''; // id 값

    private $bot_token          = ''; // token 값

 

    public function __construct() {

        

    }

 

    function send() { 

        

        $msg      = $this->set_msg();

 

        $headers = array();

        $headers[] = 'Content-type: Application/json';

 

        $url = 'https://api.telegram.org/bot'.$this->bot_token.'/sendMessage?chat_id='.$this->chat_id.'&text='.$msg;

 

        $curl = curl_init();

        curl_setopt($curl, CURLOPT_URL, $url);

        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

        curl_setopt($curl, CURLOPT_ENCODING, "");

        curl_setopt($curl, CURLOPT_MAXREDIRS, 10);

        curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

        $result = curl_exec($curl); 

        curl_close($curl);

 

        return $result;

    } 

 

    function set_msg() { 

        

        global $config, $board, $bo_table, $w, $wr_id, $wr_name, $mb_nick, $recv_mb_nick, $qa, $qa_table;

 

        $warr = array( ''=>'입력', 'u'=>'수정', 'r'=>'답변', 'c'=>'댓글 ', 'cu'=>'댓글 수정' );

        $str = $warr[$w];

 

        // 게시판 글작성 완료

        if(stripos($_SERVER['SCRIPT_NAME'], 'write')) {

            $telegram_msg = ''.$board['bo_subject'].'에 '.$wr_name.'의 '.$str.'글이 등록 됨.';

        }

 

        // 회원가입 완료

        if(stripos($_SERVER['SCRIPT_NAME'], 'register')) {

            $telegram_msg = '회원가입 : '.$mb_nick .'';

        }

 

        // 쪽지 전송 완료

        if(stripos($_SERVER['SCRIPT_NAME'], 'memo')) {

            $telegram_msg = "쪽지가 수신 됨.";

        }

 

        return $telegram_msg;

    }

}

 

?>

/bbs/telegram_class.php 코드에 qa게시판 테이블명을 추가하여 넣으면 될거같은데 생각처럼 안되네요^^;

어떻게 해야 qa게시판에서도 정상적으로 알람을 받아 볼 수 있을까요?

답변 1개 / 댓글 3개

채택된 답변
+20 포인트
2021-03-30 (화) 06:52:49

qa게시판은 일반 게시판이 아니어서

        if(stripos($_SERVER['SCRIPT_NAME'], 'write')) {
            $telegram_msg = ''.$board['bo_subject'].'에 '.$wr_name.'의 '.$str.'글이 등록 됨.';
        }

이 부분의 $board나 $wr_name은 값이 비어 있습니다.

        if(stripos($_SERVER['SCRIPT_NAME'], 'write')) {
            $telegram_msg = 'QA 게시판에 '.$member['mb_nick'].'의 '.$qa_subject.'글이 등록 됨.';
        }

"qawrite_update.php"에서 사용하는 변수를 참고하셔서 msg 내용을 만드시면 됩니다.

답변에 대한 댓글 3개

엑스엠알님 답변 감사드립니다.^^
적어주신대로 해보니 $member['mb_nick'] / $qa_subject 이 변수들은 아직 공백으로 출력됩니다만..
qawrite_update.php에서 어느 변수를 참고해야 할까요?
$qa_nick 이라든가 다 넣어봐도 출력이 안되네요.
$sql = " insert into {$g5['qa_content_table']}
set qa_num = '$qa_num',
mb_id = '{$member['mb_id']}',
qa_name = '".addslashes($member['mb_nick'])."',
qa_email = '$qa_email',
qa_hp = '$qa_hp',
qa_type = '$qa_type',
qa_parent = '$qa_parent',
qa_related = '$qa_related',
qa_category = '$qa_category',
qa_email_recv = '$qa_email_recv',
qa_sms_recv = '$qa_sms_recv',
qa_html = '$qa_html',
qa_subject = '$qa_subject',
qa_content = '$qa_content',
qa_status = '$qa_status',
qa_file1 = '{$insert_qa_file1}',
qa_source1 = '{$insert_qa_source1}',
qa_file2 = '{$insert_qa_file2}',
qa_source2 = '{$insert_qa_source2}',
qa_ip = '{$_SERVER['REMOTE_ADDR']}',
qa_datetime = '".G5_TIME_YMDHIS."',
qa_1 = '$qa_1',
qa_2 = '$qa_2',
qa_3 = '$qa_3',
qa_4 = '$qa_4',
qa_5 = '$qa_5' ";
sql_query($sql);

이 sql에 사용된 변수들을 검토해 보세요.
엑스엠엘님 답변 감사감사합니다!
어느정도 이해한 것 같습니다^^

답변을 작성하려면 로그인이 필요합니다.