테스트 사이트 - 개발 중인 베타 버전입니다

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

재미니다 4년 전 조회 2,736

안녕하세요.

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

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

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

 

/bbs/qawrite_update.php 하단에

</p>

<p>// 텔레그램 PUSH 코드 실행(gnuwiz)</p>

<p>@include_once(G5_BBS_PATH . '/telegram_class.php');</p>

<p>$telegram_msg = new telegram_msg();</p>

<p>$res = $telegram_msg->send();</p>

<p>

이렇게 추가하였고..

 

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

</p>

<p><?php</p>

<p>class telegram_msg {</p>

<p>    </p>

<p>    private $chat_id            = ''; // id 값</p>

<p>    private $bot_token          = ''; // token 값</p>

<p> </p>

<p>    public function __construct() {</p>

<p>        </p>

<p>    }</p>

<p> </p>

<p>    function send() { </p>

<p>        </p>

<p>        $msg      = $this->set_msg();</p>

<p> </p>

<p>        $headers = array();</p>

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

<p> </p>

<p>        $url = '<a href="https://api.telegram.org/bot'.$this->bot_token.'/sendMessage?chat_id='.$this->chat_id.'&text='.$msg;" target="_blank" rel="noopener noreferrer">https://api.telegram.org/bot'.$this->bot_token.'/sendMessage?chat_id='.$this->chat_id.'&text='.$msg;</a></p>

<p> </p>

<p>        $curl = curl_init();</p>

<p>        curl_setopt($curl, CURLOPT_URL, $url);</p>

<p>        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);</p>

<p>        curl_setopt($curl, CURLOPT_ENCODING, "");</p>

<p>        curl_setopt($curl, CURLOPT_MAXREDIRS, 10);</p>

<p>        curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);</p>

<p>        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);</p>

<p>        $result = curl_exec($curl); </p>

<p>        curl_close($curl);</p>

<p> </p>

<p>        return $result;</p>

<p>    } </p>

<p> </p>

<p>    function set_msg() { </p>

<p>        </p>

<p>        global $config, $board, $bo_table, $w, $wr_id, $wr_name, $mb_nick, $recv_mb_nick, $qa, $qa_table;</p>

<p> </p>

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

<p>        $str = $warr[$w];</p>

<p> </p>

<p>        // 게시판 글작성 완료</p>

<p>        if(stripos($_SERVER['SCRIPT_NAME'], 'write')) {</p>

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

<p>        }</p>

<p> </p>

<p>        // 회원가입 완료</p>

<p>        if(stripos($_SERVER['SCRIPT_NAME'], 'register')) {</p>

<p>            $telegram_msg = '회원가입 : '.$mb_nick .'';</p>

<p>        }</p>

<p> </p>

<p>        // 쪽지 전송 완료</p>

<p>        if(stripos($_SERVER['SCRIPT_NAME'], 'memo')) {</p>

<p>            $telegram_msg = "쪽지가 수신 됨.";</p>

<p>        }</p>

<p> </p>

<p>        return $telegram_msg;</p>

<p>    }</p>

<p>}</p>

<p> </p>

<p>?></p>

<p>

 

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

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

 

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

답변 1개

채택된 답변
+20 포인트

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개

재미니다
4년 전
엑스엠알님 답변 감사드립니다.^^
적어주신대로 해보니 $member['mb_nick'] / $qa_subject 이 변수들은 아직 공백으로 출력됩니다만..
qawrite_update.php에서 어느 변수를 참고해야 할까요?
$qa_nick 이라든가 다 넣어봐도 출력이 안되네요.
엑스엠엘
4년 전
$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에 사용된 변수들을 검토해 보세요.
재미니다
4년 전
엑스엠엘님 답변 감사감사합니다!
어느정도 이해한 것 같습니다^^

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

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

로그인