본문 바로가기
개발일지/주식 단타 전략

4. 주식 단타 전략 모니터링 시스템 - 카카오톡 API 나에게 메세지 보내기

by kirion 2022. 10. 24.
반응형

카카오톡 API 나에게 메세지 보내기

 

앞서 단기 기술적 지표로 수익이 단기 매매의 가능성을 확인해보았다.

 

그럼 이제 실시간으로 어떤 종목이 기준 지표를 돌파하는지 감지를 해야 하는데

내가 하나하나 지켜볼 수 없기 때문에 돌파하는 종목을 카카오톡으로 메세지를 보내 알려주려 한다.

 

카카오톡 API를 사용하기 위해선 카카오톡 개발자에 가입해야 한다.

 

간략히 순서를 말하자면

application 생성 - rest api 값 확인 - 카카오 로그인 설정 및 메세지 보내기 허용 - code 값 확인 - 인증 token 발급이다.

 

하나하나 보면서 진행해보자.

 

우선 카카오 developers 가입

https://developers.kakao.com/ 

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

 

내 애플리케이션 클릭 후 애플리케이션 추가하기

 

REST API 키 확인

 

동의항목 - 카카오톡 메세지 전송 - 설정

동의로 변경

 

플랫폼 - Web 플래폼 등록 - 사이트 도메인 입력

일단 www.google.co.kr 이든 www.naver.com 이든 입력

 

 

카카오 로그인 - 활성화 설정 - ON으로 변경

 

아래쪽 Redirect URI 입력

 

 

https://kauth.kakao.com/oauth/authorize?client_id=자신의 REST 키값&redirect_uri=REDIRECT로 설정했던값&response_type=code 

 

제대로 입력했다면 해당 화면이 뜨는데 그럼 code값 부분 복사한다.

 

이제 python으로 카카오톡을 사용하기 위한 준비는 되었다.

 

 

 

import requests
import json

 

# 카카오톡 메시지 API
url = "https://kauth.kakao.com/oauth/token"

data = {
    "grant_type" : "authorization_code",
    "client_id" : "REST API 키",
    "redirect_url" : "등록한 redirect_url",
    "code" : "복사한 code값",
}
response = requests.post(url, data=data)
tokens = response.json()
print(tokens)

 

저장한 키값과 code값을 이용해 토큰을 발행한다.

밑줄 친 부분을 수정하면 된다.

 

# kakao_code.json 파일 저장

with open("kakao_code.json", "w") as fp:
    json.dump(tokens, fp)

 

# kakao_code.json 파일 불러오기

with open("kakao_code.json", "r") as fp:
    tokens = json.load(fp)

 

# 토큰 재발행

def refreshToken(refresh_token):
    REST_API_KEY = "본인의 REST_API_KEY"
    REDIRECT_URI = "본인의 REDIRECT_URI"

    data = {
        "grant_type": "refresh_token",
        "client_id":f"{REST_API_KEY}",
        "refresh_token": refresh_token 
    }    
 
    resp = requests.post(REDIRECT_URI , data=data)
    print(resp)
    new_token = resp.json()

    return new_token['access_token']

 

카카오톡 API 토큰은 사용기간이 짧기 때문에 주기적으로 재발행해주어야 한다.

재발행을 위한 코드는 위의 함수로 구현하였다.

재발행 함수도 밑줄 친 부분을 수정하면 된다.

 

 

# 메세지 보내기

url = "https://kapi.kakao.com/v2/api/talk/memo/default/send"

headers = {
    "Authorization": "Bearer " + tokens["access_token"]
}

# 보내고자 하는 data 입력
data = {"template_object" : json.dumps({ "object_type" : "text",
                                                        "text" : "매수사인"+"\n" + 
                                                        "매수종목 : " + "삼성전자 " ,
                                                        "link" : None  })
           }

 

response = requests.post(url, headers=headers, data=data)

# 메세지 전송
if response.json().get('result_code') == 0:
    print('메시지를 성공적으로 보냈습니다.')
else:
    print('메시지를 성공적으로 보내지 못했습니다. 오류메시지 : ' + str(response.json()))

    tokens["access_token"] = refreshToken(tokens["refresh_token"])

    headers = {"Authorization": "Bearer " + tokens["access_token"]}

# 메세지가 전송이 안되면 토큰의 기한이 다 되었다는 뜻이기 때문에 재발행을 받은 후 headers의 tokens값을 경신해준다.

 

 

이렇게 하면 카카오톡으로 메세지 보내기를 할 수 있다.

 

단점은 소리로 알람이 따로 오지 않는다는 점이다.

 

 

이렇게 카카오톡 API로 나에게 알림 메세지를 주는 것까지 구현하였다.

 

다음부터는 실시간으로 감지해 보내는 글을 작성하겠다.

반응형

댓글