티스토리 뷰

웹/그누보드

텔레그램 주문 알림

krfreedevlife 2024. 1. 12. 07:30
반응형

텔레그램

그누보드 영카트에서 텔레그램으로 전송하는 경우로 검색하면 대강 아래와 같은 코드들이 나오는데

sns 공유하기와

게시물작성 혹은 주문완료에서 알림을 넣고 싶을때 참조하면 좋습니다.

/bbs/sns_send.php 위치에서

    case 'telegram' :
        header("Location:https://telegram.me/share/url?url=".$short_url."&text=".$title);
        break;


$telegram_sns_send  = G5_BBS_URL.'/sns_send.php?longurl='.urlencode('https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
$telegram_sns_send .= '&title='.urlencode(utf8_strcut(get_text($view['subject']),140));
$telegram_sns_send .= '&title='.$sns_msg;    ?>



$url=urlencode( 'https://주소/bbs/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id);
curl_tele_sent('[System] '.$wr_name.'님의 문의 글이 등록됐습니다.'.$url)



$menu['menu100'][] = array('100800', '텔레그램 플러그인 설정', G5_ADMIN_URL.'/telegram_setting.php', 'cf_service');


CREATE TABLE IF NOT EXISTS `telegram_setting` (
  `idx` int(255) NOT NULL,
  `bot_api_code` varchar(255) NOT NULL,
  `bot_chat_id` varchar(255) NOT NULL,
  KEY `bot_api_code` (`bot_api_code`),
  KEY `bot_chat_id` (`bot_chat_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- 테이블의 덤프 데이터 `telegram_setting`
--
INSERT INTO `telegram_setting` (`idx`, `bot_api_code`, `bot_chat_id`) VALUES
(1, '', '');




<?php
if (!defined('_GNUBOARD_')) exit;
function curl_tele_sent($text){
   
 if(!$text){
        exit("No Data!!");
    } // end
    
    $row = sql_fetch(" select bot_api_code, bot_chat_id from telegram_setting where idx = 1 ");
    
    if(!$row['bot_api_code'] && !$row['bot_chat_id']){
        exit();
    }
    
    $ch = curl_init();
    $api_code = $row['bot_api_code']; // 900~
    $chat_id = $row['bot_chat_id']; // 822~~
    $curl_url = "https://api.telegram.org/bot{$api_code}/sendMessage?chat_id={$chat_id}&text={$text}";
    @curl_setopt($ch, CURLOPT_URL, $curl_url);
    @curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);     
    @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);      
    @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);   
    $exec = curl_exec($ch);
    
    
} // curl_tele_sent end 
?>

텔레그램주문은

orderform.update.php에서 sms보내는 부분에서 처리하면 됩니다.

 

PHP 버전 5.2.0 이하에서는 json_encode 함수가 지원되지 않아 발생한 문제입니다.

function json_encode2($data) {
  switch (gettype($data)) {
    case 'boolean':
      return $data?'true':'false';
    case 'integer':
    case 'double':
      return $data;
    case 'string':
      return '"'.strtr($data, array('\\'=>'\\\\','"'=>'\\"')).'"';
    case 'array':
      $rel = false; // relative array?
      $key = array_keys($data);
      foreach ($key as $v) {
        if (!is_int($v)) {
          $rel = true;
          break;
        }
      }

      $arr = array();
      foreach ($data as $k=>$v) {
        $arr[] = ($rel?'"'.strtr($k, array('\\'=>'\\\\','"'=>'\\"')).'":':'').json_encode2($v);
      }

      return $rel?'{'.join(',', $arr).'}':'['.join(',', $arr).']';
    default:
      return '""';
  }
}

그리고 json_encode2 를 json_encode 로 바꿔서 사용. 머 이런식으로도 버전에 따른 json 문제도있네요

어짜피 코드는 거기서 거기인데 문제는

작업할 사이트의 환경이 어떨지 모르는것이죠-_-

텔레그램봇 을 php curl로 바로 꽂아서 사용하는 방법이 있는데

js 에서 

<!DOCTYPE html>
<html lang="en">

    
    
<body>

<form>
<input type="text" id="fname" name="fname" placeholder="fullname">
<input type="text" id="country" name="country" placeholder="country">
  <button id="myBtn" type="submit">Send</button>
</form>
    
    <script>
    document.getElementById("myBtn").addEventListener("click", function(e) {
    e.preventDefault(); 
    
    var fname = document.querySelector('input[name="fname"]').value;
    var country = document.querySelector('input[name="country"]').value;
    
    var message = "<html><br>| Fullname: ${fname} <br> | Country: ${country} <br></html>";
    
    var token = "1750418914:AAGvauViE8H7CT7heYWqjDS00000000";
    var chat_id = -1001400000000;
    var url = 'https://api.telegram.org/bot${token}/sendMessage?chat_id=${chat_id}text=${message}&parse_mode=html';
    
    var oReq = new XMLHttpRequest();
    oReq.open("GET", url, true);
    oReq.send();
    
    alert("Message sent");
    }); 
    </script>
</body>
</html>

이런식으로 클릭 이벤트로 처리할 수도있겠지만..

주문이다 보니 내부적으로 처리되야할것들이 많아서 주문서 처리 후에 메세지 전송이 이루어져야하는데

주문후 메세지를 보내면 민감한 정보들이 오가는 경우가 생길테니

추천하지는않네요

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함