[리원아빠] 파이썬으로 카카오톡 메시지 나에게 보내기

2022. 3. 2. 16:09Python

반응형

카카오톡 메시지 나에게 보내기



파이썬을 통해 키워드 챗봇을 만들었다.

텔레그램이 아닌 카카오톡으로 만들다보니 카카오 인증이 필요했다.

인증은 json으로 처리했는데 처음해봐서 구글링이 필요했다.

 

내가 진행했던 작업 순서는 다음과 같다.

  • 카카오톡 개발자 가입
  • application 생성
  • 자신의 rest api 값 확인
  • 카카오 로그인 설정 및 메시지 보내기 허용
  • code 값 확인
  • 인증 token 발급
  • 메시지 보내기

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

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

 

Kakao Developers

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

developers.kakao.com

 

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

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

 

어플리케이션 이름과 사업자명은 원하는 이름으로 설정한다.

생성한 어플리케이션을 클릭하면 아래와 같은 항목이 확인되는데 rest api 값이 필요하다.

rest api 값은 어플리케이션별로 고유하고 고정되어 있는 값으로 추후 설정에 필요하니 메모장에 적어놓자.

 

rest api 값을 확인했으면 이번에는 카카오 로그인 설정을 해야한다.

(위 이미지에서 값들이 보여야 하나 보안상 삭제처리함)

 

먼저 카카오 로그인 항목으로 가서 활성화 상태를 on으로 설정한다.

그리고 redirect uri는 sample로 제공되는 주소로 설정한다. 

(redirect uri는 원하는 값으로 설정해도 무방함)

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

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

 

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

위의 과정까지 문제없이 되었다면 이젠 자신의 rest api 값을 가지고 code값을 부여받아야 한다.

아래 url에 자신의 rest api 값과 자신이 설정했던 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 파일이 생성되고 해당 파일에는 아래 내용이 포함된다.

 

 

이제 저장되어 있는 토큰 정보를 가지고 메시지를 보내보자.

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시간 정도로 알고 있음)
  • 카카오톡 나에게 보내기는 별도의 알림이 존재하지 않음

 

그럼 끝.

반응형