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