728x90

사용자 토큰을 발급받지 않으신 분은 반드시 친구 1편을 수행해주세요!

www.novice-engineers.tistory.com/13

 

[Python] 10분 만에 카카오톡 메시지 보내기 친구편 - (1. 설정 & 사용자 토큰 발급)

지금부터는 파이썬을 활용한 친구에게 카카오톡 메시지 보내기를 해보겠습니다. 이해를 위해 메시지 보내기 1편을 꼭 해보시고 진행해 주세요! www.novice-engineers.tistory.com/9?category=908185 [Python] 10분

novice-engineers.tistory.com

1. 카카오톡 소셜 REST API 확인

0123

위 슬라이드 쇼를 참고해 주세요.

1. 상단 메뉴에서 문서 클릭

2. [Ctrl + F] 누른 후 '카카오톡 소셜' 입력

3. [카카오톡 소셜 박스 안에 있는 REST API 클릭]

4. 왼쪽 메뉴바에서 '친구 목록 가져오기' 클릭

5. 스크롤 밑으로 내린 후 URL 확인

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

=> https://kapi.kakao.com/v1/api/talk/friends 이러한 주소가 됩니다.  

 

2. 친구 목록 가져오기

import requests
import json

#1.
with open(r"C:\Users\user\Desktop\PythonWorkspace\kakao_test\kakao_code.json","r") as fp:
    tokens = json.load(fp)
#2.
with open("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("=============================================")
print(result)
print("=============================================")
friends_list = result.get("elements")
print(friends_list)
# print(type(friends_list))
print("=============================================")
print(friends_list[0].get("uuid"))
friend_id = friends_list[0].get("uuid")
print(friend_id)

위 코드를 그대로 Visual Studio Code에 입력해 주세요.

디렉토리 여부에 따라 #1. 또는 #2. 중 하나만 선택하여 사용하시면 됩니다.

# 간단한 코드 설명

1번에서 얻은 url을 friend_url에 저장합니다.

headers에 인증 키를 Bearer {ACCESS_TOKEN} 형태로 저장합니다.

응답은 JSON 객체로 받기 때문에 json.loads로 result에 저장합니다. (result는 dictionary 타입입니다.)

print는 값들이 정상적으로 출력되는지 확인하기 위한 코드입니다.

result는 dictionary 형태이기 때문에 필요한 정보가 담긴 elements의 value들을 friends_list에 저장합니다.

이후 메시지에 보낼 때 필요한 값은 uuid라는 값이기 때문에  friend_id에 friends_list[0] 번째에 있는 uuid를 저장합니다.

제가 테스트하는 과정에서는 친구를 1명만 넣기 때문에 friends_list[0]으로 표기했는데 여러 명의 친구에게 테스트하실 때는 for문으로 실행하시면 됩니다.

# 실행 결과

출력결과

3. 친구에게 메시지 보내기 REST API 확인

0123
이동 경로

위 슬라이드 쇼를 참고해 주세요.

1. 상단 메뉴에서 문서 클릭

2. [Ctrl + F] 누른 후 '메시지' 입력

3. [메시지 박스 안에 있는 REST API 클릭]

4. 왼쪽 메뉴바에서 '친구에게 기본 메시지 보내기' 클릭

5. URL 확인

POST /v1/api/talk/friends/message/default/send HTTP/1.1
Host: kapi.kakao.com
Authorization: Bearer {ACCESS_TOKEN}

=>https://kapi.kakao.com/v1/api/talk/friends/message/default/send 이러한 주소가 됩니다.

 

4. 친구에게 메시지 보내기

import requests
import json

with open(r"C:\Users\user\Desktop\PythonWorkspace\kakao_test\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("=============================================")
print(result)
print("=============================================")
friends_list = result.get("elements")
print(friends_list)
# print(type(friends_list))
print("=============================================")
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":"성공입니다!",
        "link":{
            "web_url":"www.daum.net",
            "web_url":"www.naver.com"
        },
        "button_title": "바로 확인"
    })
}

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

위 코드를 전체 복사 후 붙여 넣기 해주세요.

# 간단한 코드 설명

3번에서 얻은 url을 send_url에 저장합니다.

data에 REST API에서 제공하는 텍스트 형태로 저장합니다.

이후 메시지를 보내는 과정입니다.

# 결과

메시지를 확인해 보시면 카카오톡 메시지 보내기 친구편에 성공하셨습니다!

3번에서 스크롤을 밑으로 조금더 내려보시면 Sample이라고 나오는데 피드, 리스트, 위치, 커머스, 텍스트의 형태를 확인 가능합니다.

위 코드에서 data형태를 바꾼다면 텍스트 뿐만 아니라 다양한 메시지를 보내실 수 있습니다!

 

감사합니다.

728x90

+ Recent posts