개발일지/주식 단타 전략

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

kirion 2022. 10. 24. 16:51
반응형

카카오톡 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로 나에게 알림 메세지를 주는 것까지 구현하였다.

 

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

반응형