사실 연동방법은 쉽지만, 텔레그램의 chat_id를 가져오는 방법이 쉽지않아서 바로 적용은 어렵습니다만..

 

소규모 커뮤니티 혹은 쇼핑몰 운영시 새글알림이나 댓글 확인을 할때 유용하긴 하더라구요

 

그런부분도 sms로 할필요는 없으니깐요.

 

텔레그램의 botfather 에서 /newbot 으로 자신이 생성할 텔레그램봇을 만들어줍니다.

 

여기서 bot_api를 얻을수 있습니다.

 

그러면 알림센터에서 알림이 발생했을때 알림을 텔레그램으로 보내주면 되는데요

 

ncenterlite.controller.php 에서

 

_insertnotify함수에서 보면

 

else if($logged_info)
{
// 익명 노티가 아닐 때 로그인 세션의 회원정보 넣기
$args->target_member_srl = $logged_info->member_srl;
$args->target_nick_name = $logged_info->nick_name;
$args->target_user_id = $logged_info->user_id;
$args->target_email_address = $logged_info->email_address;
//텔레그램 변경
  $oAppModuleModel = &getModel('ncenterlite');
  $oAppModuleModel->getPushMessage($args);

}

 

저 익명노티가 아닐때.. 이부분을 찾아서 아래에 텔레그램 코드를 넣어줍니다.

 

 

그리고 아래 함수를 ncenterlite.model.php에 추가해줍니다.

function getPushMessage($v){

switch($v->type)
{
case 'D':
$type = "글";
break;
case 'C':
$type = "댓글";
break;
// 메시지. 쪽지
case 'E':
$type = "쪽지";
break;
}
 
switch($v->target_type)
{
case 'C':
$str = sprintf('%s님이 회원님의 %s에 "%s" 댓글을 남겼습니다.', $v->target_nick_name, $type, $v->target_summary);
break;
case 'M':
$str = sprintf('%s님이 "%s" %s에서 회원님을 언급하였습니다.', $v->target_nick_name,  $v->target_summary, $type);
break;
// 메시지. 쪽지
case 'E':
$str = sprintf('%s님이 회원님에게 쪽지를 보냈습니다', $v->target_nick_name);
case 'P':
$str = sprintf('%s님이 새글 %S 를 작성했습니다.', $v->target_nick_name,$v->target_summary);
break;
}

$msg = $v->target_summary;
$url2 = $v->target_url;
$oMemberModel = &getModel('member');
$member_info = $oMemberModel->getMemberInfoByMemberSrl($v->member_srl);
$email = $member_info->email_address;

$str=$str.urlencode("\r\n".$url2);

$chat_id = '11111';
$bot_id = "botfather가 알려준 api";
$url = 'https://api.telegram.org/bot' . $bot_id . '/sendMessage?text='.$str.'&chat_id='.$chat_id;

$result = file_get_contents($url);




}

 

그러면 이제 준비완료인데요.

 

가장중요한 chat_id를 확인해야겠죠. chat_id는 얻는 방법이 좀 이상해요

일단 텔레그램에서 친구추가로 자신의 bot을 추가한다음 /start 를 해줍니다.  이것을 안해주면 안됩니다.

만약 이것을 안하면 그전에 했던 사람의 id가 나옵니다. ㅡㅡ;;

 

그런다음

 

https://api.telegram.org/bot/bot_api/getUpdates?offset=0

 

*bot_api 는 위에서 얻은 api를 입력하시면 됩니다.

를 브라우저에 입력해주거나 , 해당부분을  curl등으로 값을 리턴받으면 알수 있습니다.

 

원래 처음 계획은 텔레그램으로 개별 사용자들이 푸쉬메시지를 받게 하는 게 목적이었는데, 이 chat_id를 바로 알수 있는 방법이 없어서 힘들더군요. 지금은 운영자들 끼리만 사용하고 있습니다.

 

다음번엔 없어진 알림센터의 새글알림 코드를 되살려서 운영자만 새글알림을 텔레그램으로 받는 방법을..올려보도록 하겠습니다.

 

 

이 내용은 제 블로그에도 같이 올라갑니다... 오늘도 이렇게 10점 벌어갑니다 ㅎㅎㅎ

 

약사이다

profile
XE 이용 어언..3년입니다.
안되는 거 붙잡고 어뜩하든 되게 해볼려고 머리 굴리고 있습니다. ^^;
  • profile
    오 이건 모듈을 별도로 만들어서 트리거를 걸면 알림센터 업데이트와 상관없이 잘 작동할듯해요.
    심지어 복잡하지도 않군요!
  • profile profile
    네 사실 전에 저도 그렇게 생각은 해봤는데.. 실력이 딸려서 ㅎㅎ

    알림센터에서 알림발생시 트리거가 있나요 ? 몰랐네~
  • profile profile

    ncenterlite.controller.php 파일의

    950 라인쯤에 보셔요

  • profile
    chat_id 는 별도 모듈쪽에서 유저들에게 입력받도록 하는 스킨 화면이 하나 있으면 될 것 같아요.
    디비에 member_srl 과 함께 저장하면 누구의 chat_id 인지 구분이 되겠지요 :)
  • ?
    더 대단한건 이분...약사님이시네요.. ㄷ ㄷ ㄷ
  • ? profile
    그점은 닉넴에서도 확실히 밝히고 있습니다. ^^;

    어줍잖은 공대출신 약삽니다.
  • profile
    우워~~~~ 공돌이가 세상을 바꾼다!
    대단하십니다!

    많은 사람들이 사용하는 카톡으로 보낼수 있다면 더 좋지만... 카톡에서 제공을 안하니..
    만약 회원의 챗아이디를 불러오거나 등록할수 있다면 텔레그램을 통해서 모든 알림을 받을 수 있는!
    매우 좋은 푸시 기능이 되겠어요!
  • profile profile
    최신 댓글 위젯에서 "곰돌이가 세상을 바꾼다"는 줄 알고 뭔가 해서 클릭했네요.
    곰무룩ㅠ
  • profile profile
    ㅋㅋㅋㅋ 귀여우셔욬ㅋㅋㅋ
  • profile profile
    ㅋㅋㅋㅋ
    저도 체형만 보면 곰입니다 ㅋ
  • ?
    오... 카톡이나 라인도 API 가 있으면 좋을텐데 돈이 되는지 무료 개방은 안되어있는거 같더라구요.
    어줍짢은 약대생입니다. 반갑습니다!☺

    PS. 라고 생각했는데 있었네요.  https://developers.kakao.com/docs/restapi#푸시-알림 오호...
  • ? profile
    아.카톡이 된다구요 ? 생각도 못했네요

    제가 어줍잖은 이라고 한건 공대출신이란게.. 1년 6개월 다녀서.. 많이 어줍잖은 공대출신이죠 ㅎㅎ
  • profile ?
    자세히 읽어봐야 알 것 같지만, 스윽 보기로는 카톡 아이디가 있으면 알림이 가는 구조 같아요.. 자세히 읽어봐야 할 것 같습니다 ㅎㅎ
    화이팅!!
  • ? profile
    푸시 부분을 컴터로 잘 봐봐야 겠네요.
    카톡으로 푸시할 수 있으면 유용하니까요.
  • profile
    알림센터랑 카카오/텔레그램 트리거 연동하면 좋겠네요.
  • profile ?
    오 카톡이랑.. 굿이네요
  • profile
    =_=b
  • profile
    푸시기능 자체는 Model.보다는 차라리 Controller에 가깝다 봐야할 것 같습니다.
    get이라는건..가져온다는 함수이니.. 뭔가 좀 억암이 틀려지는거같아요.
    insertPushMessage() 이러한 메소드로 controller에 저코드를 넣으면 될듯,.
    그리고..

    $oAppModuleModel = &getModel('ncenterlite');
    $oAppModuleModel->getPushMessage($args);
    이코드를 지워버리고,
    $this->insertPushMessage($args); 형태로 하면될듯해요.
  • ?
    오, 이렇게 XE가 더 좋아지는군요 ^^
  • profile
    으흠.. 이거, 문제가 잇는게..
    각각의 유저에게 맞게 줘야하는데 그 방식이 구현이 안되네요.
    api읽어들여서 각각의 유저정보를 가져올 수 잇는 방법을 간구 해봤지만.. 흑.. 마땅히 생각나는 방법도 없고;ㅁ;
    맴버모듈의 회원정보의 확장변수를 통해서 어떻게 알아볼 수 잇는 방법이 있는지부터 좀 보고, 그걸 각각 개인에게 쏠 수 잇는 방법으로 알아봐야할 것 같아요.

    (chat_id 자체가, 가져오는 방식이 좀 그렇네요 ㅋㅋ)..
  • profile profile
    chat_id 가져오는 게 영 그렇습니다...
  • ?
    텔레그렘 후덜덜 어려워요
  • ?
    와 감사합니다. 관리자라도 알림을 받으면 편할 것 같네욬
  • ?
    ncenterlite.model.php에 추가해주는 함수는 정확히 어디에 넣는건가요?
    작동을 하지 않네요.. 다른건 제대로 된 것같은데
  • ? profile
    음.. 새로운 함수라 아무데나 넣어주시면 됩니다.
  • profile ?
    호스팅사에서 file_get_contents 이 부분을 허용하지 않는거같습니다 ㅠ.ㅠ
    아쉽지만 다음 기회로 흑
  • ? profile
    curl은 허용할까요 ? curl로도 가능합니다만
  • profile ?
    혹시 괜찮으시면 curl에 대한 설명 조금 부탁드려도 될까요?
  • ? profile
    <?
    echo phpinfo();
    ?>

    요렇게 파일하나 만들어서 올려보시고

    해당주소로 들어가서 ctrl+f 하시고 curl을 검색해보셔서 있으면 설치되어 있는겁니다.

    호스팅은 지원안할수도 있겠네요..
  • ?
    이런 방법이 있었군요! 좋은 팁 정말 감사합니다^^
  • ?
    2년가까이 된 글이긴한데 지금도 잘 작동하는지요?
  • ? profile
    현재도 잘 쓰고 있습니다.
  • profile ?

    else if($logged_info)
    {
    // 익명 노티가 아닐 때 로그인 세션의 회원정보 넣기

    -------------------------------------------------------------------
    이 부분이 많이 다른데요, 어디부분을 바꿔야하나요?
    XE 1.8.42를 쓰고있습니다.

     

    1.png

  • ? profile
    xe가 문제가 아니고, 알림센터가 업데이트가 많이 되어서 그런거 같네요.
    저는 알림센터를 업데이트 안하고 그대로 유지하고 있어서요.

    아마도 1054번줄 else if(context::get('is_logged') 이부분이 아닌가 싶습니다.

    제가 사용하지 않아서 확실하지는 않습니다.