본문 바로가기
RPA

카카오톡 API로 메세지 보내기(python)

by Sol95 2022. 12. 16.
728x90

RPA 하다 보면 담당자들은 결과를 메일로 주로 받는데 메일 보단 카카오톡으로 결과를 받길 원하는 경우가 있는데  python 통해 API로 보낼 메시지를 입력 후 전송할 수 있을 거 같다 

 

필요 목록

카카오톡 계정, Python3.9 사용 다른 버전 이어도 가능, Pycharm 커뮤니티 버전 사용

https://www.python.org/downloads/

 

Download Python

The official home of the Python Programming Language

www.python.org

Pycharm 다운로드 - 커뮤니티 버전

https://www.jetbrains.com/ko-kr/pycharm/download/#section=windows

 

다운로드 PyCharm: JetBrains가 만든 전문 개발자용 Python IDE

 

www.jetbrains.com

 

1.Kakao Developers 홈페이지 접속

www.developers.kakao.com/

 

Kakao Developers

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

developers.kakao.com

2. 카카오톡 계정 로그인  -> 내 애플리케이션 클릭

3. 애플리케이션 추가하기

테스트해보면서 하나를 이미 생성했습니다

4. 앱 이름과 사업자명 작성

5.REST API 키 값을 메모장 같은 곳에 붙여 넣기 해둔다

6. 카카오 로그인 -> 활성화 상태 ON으로 변경

7. 스크롤을 내려서 Redirect URl 생성하기 클릭

참고 : 아래 URL은 임으로 작성해뒀습니다 따라 해도 되고 바꾸셔도 됩니다

8. 플랫폼 -> Web 등록 -> Redirect URl 입력

9. 팀 관리 -> 팀원 초대 -> 카카오계정(이메일) 작성 -> 앱 권한 : EDITOR

초대 누르면 해당 계정으로 메일 발송돼서 수락을 눌러줘야 합니다

메일에서 가입 수락 누르면 아래와 같이 가입 완료 메시지를 받게 됩니다 이때 네이티브 앱 키, REST API 키, JavaScript 키, Admin 키를 초대받은 팀원도 공유되는 점 참고하세요

10. 동의 항목 -> 닉네임, 카카오 서비스 내 친구 목록, 카카오톡 메시지 전송 설정

닉네임 -> 필수 동의

카카오 서비스 내 친구 목록 -> 이용 중 동의

카카오톡 메시지 전송 -> 이용 중 동의

11. 인증 코드 얻는 방법

기존에 5번 내용 보면 REST API에 대한 키 값이 있습니다 해당 Key값과 7번에서 내가 생성한 Redirect_URl을 아래에 맞게 조합하시면 됩니다

https://kauth.kakao.com/oauth/authorize?client_id=REST_API_KEY&redirect_uri=REDIRECT_URI&response_type=code&scope=talk_message, friends

 

ex) https://kauth.kakao.com/oauth/authorize?client_id=a9a320464853f1ee96aa4c1a16e9558a&redirect_uri=https://message_kakaotalk.com/oauth&response_type=code&scope=talk_message, friends

url을 제대로 입력 안 했을 경우 아래와 같은 화면 발생합니다

(저도 복붙 하다가 띄어쓰기가 중간에 들어가서 아래 화면이 떴네요)

정상적인 화면은 아래와 같습니다

전체 동의하기 체크 후 계속하기 누르면 됩니다

12. 동의하고 계속하기를 누르고 나면 아래와 같은 화면이 뜨게 됩니다

뭔가 잘못 따라 했나 싶을 텐데 정상적으로 따라 하신 겁니다

url상단에 보시면 oauth? code=뒷부분 전부 복사

복사한 값은 메모장에 붙여 넣기

13.Pycharm 프로젝트 생성(Python과 Pycharm 설치가 안되신 분은 맨 위에 링크 접속하셔서 다운로드하시면 됩니다)

14. 첫 번째 줄에 import requests 입력하고 커서를 requests로 이동 -> 빨간 전구 클릭 -> install package requests 클릭

15. import requests 부분 제외하고 붙여 넣기(사전작업 토큰 값 가져오기)

import requests

url = 'https://kauth.kakao.com/oauth/token'
rest_api_key = 'REST API KEY값 입력' # '' <-따옴표 사이에 입력
redirect_uri = 'Redirect_URl 입력' #ex) https://message_kakaotalk.com/oauth
authorize_code = '10번에 복사해둔 빨간색 영역 code=여기 부분 붙여넣기' #code= 제외하고 입력 ex)beuhus38sbefow39hahiwrowuh
data = {
    'grant_type':'authorization_code',
    'client_id':rest_api_key,
    'redirect_uri':redirect_uri,
    'code': authorize_code,
    }

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

# json 파일 저장
import json
#1.
with open(r"C:\RPA_Common\kakao_code.json","w") as fp:  #경로는 편한곳으로 설정 C폴더안에 RPA_Common이 있어서 전 여기로 잡았습니다
    json.dump(tokens, fp)

16. 위 코드 실행하면 해당 경로에 Json 파일 생성된 걸 확인

필요 만약 authorize_code 부분에서 에러 발생 시 9번 항목 한 번 더 실행 후 변경된 코드 값으로 입력 필요

 

17. 또 다른 소스코드 입력(친구 한태 메시지 보내기)

import requests
import json

with open(r"C:\RPA_Common\kakao_code.json","r") as fp:
    tokens = json.load(fp)
    print(tokens)
    print(tokens["access_token"])

friend_url = "https://kapi.kakao.com/v1/api/talk/friends"

# GET /v1/api/talk/friends HTTP/1.1
# Host: kapi.kakao.com
# Authorization: Bearer {ACCESS_TOKEN}

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

result = json.loads(requests.get(friend_url, headers=headers).text)

print(type(result))
print(result)
friends_list = result.get("elements")
print(friends_list)
print(friends_list[0].get("uuid"))
friend_id = friends_list[0].get("uuid")
print(friend_id)

send_url= "https://kapi.kakao.com/v1/api/talk/friends/message/default/send"

data={
    'receiver_uuids': '["{}"]'.format(friend_id),
    "template_object": json.dumps({
        "object_type":"text",   #메시지 형태 타입 
        "text":"PC카톡 종료 한 상태", #입력할 메세지
        "link":{
            ""
        },
        "button_title": "PC카톡 종료 한 상태"  #버튼 텍스트 값
    })
}

response = requests.post(send_url, headers=headers, data=data)
response.status_code

Python 실행하고 나면 아래와 같이 친구 목록을 가져올 수 있다

 

테스트를 하다 보면 친구 목록이 Null 값으로 못 가져오는 경우가 많은데 저도 해당 부분 친구 목록을 가져오지 않아 당황했는데 위에 9번 항목을 친구에게도 보내 동의하게 전송해야 친구 목록에 들어옵니다 동의를 했어도 동의한 즉시 바로 수행해도 되지 않았던 걸로 봐서는 동의한 내용?을 가져오는데 시간이 필요한 거 같습니다

 

최종결과

RPA를 통해 과제가 끝나면 결과에 대한 메시지를 보내주는 용도로 생각을 했는데 걸리는 부분들이 많아 RPA에 사용하기에는 부적합해 보입니다 토큰 값 키와 앱 인증에 대한 부분 또 1대 1로만 메시지를 발송 가능하다는 점이 아쉬운 거 같습니다 최대 5명에게 발송을 1대 1로 가능하며 for문을 통해 5명에게 보낼 수 있다 하여도 프로세스 실패로 인해 재수 행시 문제가 되지 않을까 싶습니다

 

최종 결과 화면

728x90
반응형

댓글