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

쪽지 수신.발신 시 텔레그램 함수를 사용하여 알람을 받으려고 합니다. 채택완료

재미니다 1년 전 조회 1,920

안녕하세요.

현재 루트/lib/common.lib.php에 텔레그램 함수를 저장해 놓고 회원가입 및 게시물 작성 시 함수를 호출하여 알람을 받고있는 상태인데요.

이 함수를 이용하여 관리자가 받은 쪽지, 관리자가 보낸 쪽지 알람을 텔레그램 메시지로 받으려고 합니다.

 

어느 파일을 살펴봐야 쪽지 수신, 발신 관련 코드가 있는지, 어떤식으로 호출하면 수신, 발신이 나뉘는지 알려주시면 감사하겠습니다.

 

아래는 common.lib.php에 저장한 텔레그램 함수이며, 회원가입 시 알람 받는 코드입니다.

</p>

<p>function fnTelegramNotice($msg){</p>

<p>    $token = '토큰';</p>

<p>    $chat_id = '챗 아이디';</p>

<p> </p>

<p>    $url = '<a href="https://api.telegram.org/bot'.$token.'/sendMessage';" target="_blank" rel="noopener noreferrer">https://api.telegram.org/bot'.$token.'/sendMessage';</a></p>

<p>    $data = array('chat_id' => $chat_id, 'text' => $msg);</p>

<p> </p>

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

<p> </p>

<p>    curl_setopt($ch, CURLOPT_URL, $url."?".http_build_query($data));</p>

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

<p>    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);</p>

<p>    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);</p>

<p>    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");</p>

<p> </p>

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

<p>    $result_array = json_decode($result, true);</p>

<p>   </p>

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

<p> </p>

<p>}</p>

<p>

 

회원가입 시 알람 받는 코드

</p>

<p>$mb = get_member($mb_id);</p>

<p>   </p>

<p>    $notemsg = "";</p>

<p>    switch($mb['mb_level']){</p>

<p>        case 2:</p>

<p>            $notemsg = '[일반 회원가입] '.$mb['mb_nick'].'('.$mb['mb_id'].')';</p>

<p>        break;</p>

<p>        case 3:</p>

<p>            $notemsg = '[업체 회원가입] <'.$mb['mb_3'].'> '.$mb['mb_nick'].'('.$mb['mb_id'].')';</p>

<p>        break;</p>

<p>    }</p>

<p>    fnTelegramNotice($notemsg);</p>

<p>

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

답변 2개

채택된 답변
+20 포인트

답변에 대한 댓글 4개

재미니다
1년 전
배르만님 답변 감사합니다.
알려주신 링크를 살펴보고 제 나름 추측하여 아래처럼 삽입은 했습니다.
[code]
// 실시간 쪽지 알림 기능
$sql = " update {$g5['member_table']} set mb_memo_call = '{$member['mb_id']}', mb_memo_cnt = '".get_memo_not_read($recv_mb_id)."' where mb_id = '$recv_mb_id' ";
sql_query($sql);

if (!$is_admin) {
insert_point($member['mb_id'], (int)$config['cf_memo_send_point'] * (-1), $recv_mb_nick.'('.$recv_mb_id.')님께 쪽지 발송', '@memo', $recv_mb_id, $me_id);
// 현재 로그인된 사용자의 아이디 얻기
$mb_id = $member['mb_id']; // $member는 현재 로그인된 사용자 정보를 담고 있는 변수일 것입니다.

// 사용자 아이디를 기반으로 멤버 정보 가져오기
$mb = get_member($mb_id);
$notemsg = "";
$notemsg = "[쪽지 받음] {$mb['mb_nick']}({$mb['mb_id']})";
fnTelegramNotice($notemsg);
}
}

if ($member_list) {

$redirect_url = G5_HTTP_BBS_URL."/memo.php?kind=send";
$str_id_list = implode(',', $member_list['id']);
$str_nick_list = implode(',', $member_list['nick']);

run_event('memo_form_update_after', $member_list, $str_nick_list, $redirect_url, $_POST['me_memo']);
alert($str_nick_list." 님께 쪽지를 전달하였습니다.", $redirect_url, false);
$notemsg = "[쪽지 보냄] {$str_nick_list}({$str_id_list})";
fnTelegramNotice($notemsg);
} else {

$redirect_url = G5_HTTP_BBS_URL."/memo_form.php";

run_event('memo_form_update_failed', $member_list, $redirect_url, $_POST['me_memo']);

alert("회원아이디 오류 같습니다.", $redirect_url, false);
}
[/code]
회원이 운영자에게 보내는 쪽지는 알람이 잘 옵니다만 운영자가 회원에게 쪽지보낼 시에는 알람이 오질 않네요..

아래처럼 수정하게 되면 운영자가 보낼 때는 정상적으로 알람이 잘 옵니다만 회원이 보낼 때는 알람이 받은 쪽지, 보낸 쪽지 두개가 동시에 옵니다.
[code]
$notemsg = "[쪽지 보냄] {$str_nick_list}({$str_id_list})";
fnTelegramNotice($notemsg);
alert($str_nick_list." 님께 쪽지를 전달하였습니다.", $redirect_url, false);
[/code]

어떻게 처리해야 될지 도움을 청합니다.(__)
배르만
1년 전
다음 부분을 유지하고
[code]
$notemsg = "[쪽지 보냄] {$str_nick_list}({$str_id_list})";
fnTelegramNotice($notemsg);
alert($str_nick_list." 님께 쪽지를 전달하였습니다.", $redirect_url, false);
[/code]

다음 부분은 주석처리 하면 될것 같습니다.
[code]
if (!$is_admin) {
insert_point($member['mb_id'], (int)$config['cf_memo_send_point'] * (-1), $recv_mb_nick.'('.$recv_mb_id.')님께 쪽지 발송', '@memo', $recv_mb_id, $me_id);
// 현재 로그인된 사용자의 아이디 얻기
//$mb_id = $member['mb_id']; // $member는 현재 로그인된 사용자 정보를 담고 있는 변수일 것입니다.

// 사용자 아이디를 기반으로 멤버 정보 가져오기
//$mb = get_member($mb_id);
//$notemsg = "";
//$notemsg = "[쪽지 받음] {$mb['mb_nick']}({$mb['mb_id']})";
//fnTelegramNotice($notemsg);
}
[/code]
재미니다
1년 전
알려주신 방식은 수신.발신을 나누는 것이 안 되네요ㅠㅠ
수신:관리자 / 발신:회원 이렇게 나누어 알람을 받아야 해서요..
어떻게 처리를 해야 될까요?
재미니다
1년 전
조건문을 추가해서 해결 했네요.
감사합니다!

[code]
if ($is_admin) {
$notemsg = "[쪽지 보냄] {$str_nick_list}({$str_id_list})";
fnTelegramNotice($notemsg);
}
alert($str_nick_list." 님께 쪽지를 전달하였습니다.", $redirect_url, false);
[/code]

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

그누위즈

bbs/memo_form_update.php

파일에 쪽지를 주고받는 파일입니다.

insert 되는 쪽에 해당 코드를 추가하시면 될듯합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

재미니다
1년 전
그누위즈님 답변 감사드립니다!!
위에 배르만님의 댓글을 참조하여 실시간 쪽지 알람 기능 부분에 추가했는데요.
저기가 아닌 insert쪽에 삽입해야 되는 건가요?

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

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

로그인