PHP 2020. 6. 15. 16:26


반응형

PC/모바일 에서 아이디로 로그인후에 사용합니다.

https://telegram.me/botfather 주소로 접속합니다.

@botfather
/help 명령입니다.

과거 BBS하는거 같죠?

봇이름을 입력을 기다리고 있습니다.
봇의 사용자 이름을 입력합니다.
HTTP API 아래 부분이 토큰값입니다.
t.me/finejinbot 클릭후에 시작을 하게 되면 이렇게 됩니다. 다른 이름은 @finejinbot 입니다.

/start 를 두번~ 세번 해주세요.

https://api.telegram.org/bot1156614402:AAEkQsIV22U0NF_qtEaytva3ot2pc5b8cuM/getUpdates

위주소를 처음 접속하게 되면 아무런 메세지가 없습니다.

Result 값이 비어 있습니다.
메세지를 입력해주세요. "안녕하세요"
일부에  from 에 id 116372418을 기억해주세요.

 

여기서 잠시  위 내용에서 매번 이렇게 사용자를 받아야 하나요?

-> 메시지에서 특정 문자가 들어 왔을때 대화 하는 코드를 넣어 주시면 됩니다.

즉 "addid" 일경우 자동으로 message 사용자의 id를 받는 사람으로 등록하도록 하는것

삭제는 "deleteid" 처럼 하게 되면 등록 삭제를 할수 있습니다.

이런 부분을 대화로 풀면 챗봇이 됩니다. 문장을 이해 하는 것은 형태소 분석이나 키워드 조합하여 지식 DB 서치 하는 방식이거나

아이들놀이처럼 스무고개로 문제를 해결하면 멋진 챗봇 프로그램이 완성 되겠습니다.

주의 사항: 알림으로 할경우 동일한 매세지를 모든 사용자에게 보내는것과 대화 모드에서 프로그램과 그 사용자와 대화는 구조가 다릅니다. 간혹 비밀 메세지처럼 보내질거라고 생각하고 사용을 주의해주세요.

<?php
 
//받은 토큰값
define('BOT_TOKEN', '565256823:AAF-kLlJzCtHYh6VbmuKkcOl7u4A0ISSRus');
define('API_URL', 'https://api.telegram.org/bot'.BOT_TOKEN.'/');
 
 //메세지 받을 사용자 아이디값
$_TELEGRAM_CHAT_ID = array('222820526');
 
function telegramExecCurlRequest($handle) {
 
    $response = curl_exec($handle);
 
    if ($response === false) {
        $errno = curl_errno($handle);
        $error = curl_error($handle);
        error_log("Curl returned error $errno: $error\n");
        curl_close($handle);
        return false;
    }
 
    $http_code = intval(curl_getinfo($handle, CURLINFO_HTTP_CODE));
    curl_close($handle);
 
    if ($http_code >= 500) {
        // do not wat to DDOS server if something goes wrong
        sleep(10);
        return false;
    } 
    else if ($http_code != 200) {
 
        $response = json_decode($response, true);
 
        error_log("Request has failed with error {$response['error_code']}: {$response['description']}\n");
 
        if ($http_code == 401) {
            throw new Exception('Invalid access token provided');
        }
 
        return false;
    } 
    else {
 
        $response = json_decode($response, true);
 
        if (isset($response['description'])) {
            error_log("Request was successfull: {$response['description']}\n");
        }
 
        $response = $response['result'];
    }
 
    return $response;
}
 
function telegramApiRequest($method, $parameters) {
 
    if (!is_string($method)) {
        error_log("Method name must be a string\n");
        return false;
    }
 
    if (!$parameters) {
        $parameters = array();
    } 
    else if (!is_array($parameters)) {
        error_log("Parameters must be an array\n");
        return false;
    }
 
    foreach ($parameters as $key => &$val) {
        // encoding to JSON array parameters, for example reply_markup
        if (!is_numeric($val) && !is_string($val)) {
            $val = json_encode($val);
        }
    }
 
    $url = API_URL.$method.'?'.http_build_query($parameters);
 
    $handle = curl_init($url);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($handle, CURLOPT_TIMEOUT, 60);
 
    return telegramExecCurlRequest($handle);
}
 
// 메시지 발송 부분
foreach($_TELEGRAM_CHAT_ID AS $_TELEGRAM_CHAT_ID_STR) {
 
    $_TELEGRAM_QUERY_STR    = array(
        'chat_id' => $_TELEGRAM_CHAT_ID_STR,
        'text'    => "안녕 반가워요.\nhttp://daum.net",
        //<- url일경우 타입을 지정하면 자동으로 보인다.
        //자세한 내용은 api를 참조
        "entities"=> array( 
            "offset"=> 0,
            "length"=> 15,
            "type"=> "url"
          )
    );
 
    telegramApiRequest("sendMessage", $_TELEGRAM_QUERY_STR);
}
?>

 

모든 길은 만든 곳의 도큐먼트에 존재 한다. 

 

https://core.telegram.org/api

 

Telegram APIs

We offer two kinds of APIs for developers. The Bot API allows you to easily create programs that use Telegram messages for…

core.telegram.org

 

https://core.telegram.org/bots/samples

 

Bot Code Examples

If you want to learn more about Telegram bots, start with our Introduction to Bots » Check out the FAQ, if you have questions.…

core.telegram.org

https://core.telegram.org/bots/samples/hellobot

 

Hellobot

This sample PHP bot demonstrates the basics of the Telegram Bot API. If you have questions, try our FAQ or check out this…

core.telegram.org

 

반응형

'PHP' 카테고리의 다른 글

Laravel HTTP 세션  (0) 2020.06.16
Laravel flysystem-aws-s3-v3 확장  (0) 2020.06.16
PHP Composer 설치 및 사용법  (0) 2020.06.05
라라벨 orm query log 남기기  (0) 2020.05.21
posted by 파인진
: