상세 컨텐츠

본문 제목

[파이썬] 카카오톡으로 나에게 메시지를 보내보자

코딩

by 땡감 2021. 12. 29. 16:06

본문

반응형

파이썬으로 사이트 키워드 챗봇을 만들고 있다.

가장 흔하게 쓰는 텔레그램이 아닌 카카오톡으로 하다보니 인증 방법부터 Json으로 처리하는 방법까지 알아야했다.

아직 내가 목표로 하는 프로그램은 테스트 중이지만 간단하게 파이썬으로 카카오톡 메시지를 보내는 방법을 먼저 공유한다.

대략적인 순서는 다음과 같다.

  • 카카오톡 개발자 가입
  • 메시지를 보낼 줄 어플리케이션 생성
  • 자신의 REST API 키 확인
  • 카카오 로그인 설정 및 메세지 보내기 허용
  • Code 값 확인
  • 인증 Token 발급
  • 메시지 보내기

아래 url에 들어가서 시작하기를 눌러 가입을 한다.

url : https://developers.kakao.com/

 

Kakao Developers

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

developers.kakao.com

로그인 후 내 어플리케이션 항목을 눌러 화면을 이동한 후 애플리케이션 추가하기를 누른다.

(필자는 이미 추가가 되어 있는 상태다)

앱이름과 사업자명은 자신이 원하는 이름으로 해도 무방하다.

다시 생성된 애플리케이션을 클릭하면 아래와 같은 항목이 확인되는데 REST API 값이 필요하다. (메모장에 적어놓자)

참고로 REST 값은 애플리케이션별로 고유하고 고정되어 있는 값이다.

(모든 값들이 보여야 하나 보안상 삭제했다)

REST API 값까지 확인이 되었으면 이번에 카카오 로그인 설정을 해야한다.

먼저 카카오 로그인 항목에 가서 활성화 상태를 ON으로 변경한다.

그리고 Redirect URI는 Sample로 제공되는 주소로 설정한다. (해당 부분은 원하는 값으로 사용해도 무방하다)

필자는 가장흔하게 사용되는 https://example.com/oauth 로 설정했다. 

그 뒤 그 아래항목인 동의항목으로 들어가 접근권한의 카카오톡 메시지 전송 항목을 선택동의로 변경한다.

이제 각 개인마다 고유한 값이 발급되는 항목이므로 좀 더 집중해서 따라해보도록하자.

위의 과정까지 문제없이 되었다면 이젠 자신의 REST 키 값을 가지고 Code 값을 부여 받어야 한다.

아래 URL에 자신의 REST 키값과 자신이 설정했던 Redirect URI 값을 넣고 새로운 인터넷창을 열어 입력하자.

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

최초 수행시에는 카카오 로그인 창이 뜨면서 동의 여부를 물으므로 동의를 한다.

만약 필자처럼 Redirect UrI를 https://example.com/oauth 설정하고 수행했다면 다음과 같은 화면을 볼 수 있다.

여기서 파란새 부분으로 줄을 쳐 놓은 code= 다음 값들이 필요하다. 

해당 값은 위의 과정을 수행할 때마다 새로 발급되므로 마지막 최신값만 유효하다. (해당 값도 메모장에 적어놓자)

이제 파이썬 코드를 통해 카카오톡에 메시지를 보낼 수 있는 인증 토큰을 받고, 그 토큰을 이용해 카카오톡에 메시지를 보내보자.

먼저 토큰을 발급 받아 json 형태로 저장하는 부분이다.

import requests
import json

url = 'https://kauth.kakao.com/oauth/token'
client_id = '자신의 REST 키값'
redirect_uri = 'https://example.com/oauth'
code = '자신의 CODE 값'

data = {
    'grant_type':'authorization_code',
    'client_id':client_id,
    'redirect_uri':redirect_uri,
    'code': code,
    }

response = requests.post(url, data=data)
tokens = response.json()

#발행된 토큰 저장
with open("token.json","w") as kakao:
    json.dump(tokens, kakao)

만약 정상적으로 수행이 되었다면 아래처럼 token.json 파일이 생성되고 해당 파일에는 아래 내용이 포함되어야 한다.

그리고 다시 저장되어 있는 token 정보를 가지고 메시지를 보내는 부분이다.

import requests
import json

#발행한 토큰 불러오기
with open("token.json","r") as kakao:
    tokens = json.load(kakao)

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

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

data = {
       'object_type': 'text',
       'text': '테스트입니다',
       'link': {
           'web_url': 'https://developers.kakao.com',
           'mobile_web_url': 'https://developers.kakao.com'
       },
       'button_title': '키워드'
   }
   
data = {'template_object': json.dumps(data)}
response = requests.post(url, headers=headers, data=data)
response.status_code

간단하지만 카카오톡에 메시지가 잘 도착한것을 확인 할 수 있다.

만약 카카오톡 메시지 보내기를 수행했는데 IP 관련 오류가 발생할 경우 애플리케이션에서 IP를 허용해줘야 한다.

 

좀 더 테스트도 하고 공부도 해봐야지만 텔레그램이 아닌 카카오톡으로 연결시 내가 느낀 단점은 아래와 같다.

  • 토큰을 주기적으로 갱신해야 한다. (토큰은 유효시간이 12시간 정도로 알고 있다)
  • 나에게 보내기 메시지는 알람이 울리지 않는다.
반응형

관련글 더보기

댓글 영역