시작하기전
이번에는 양심껏 0.0.1만 올렸습니다 ㅎㅎ. 이번에는 간단한 기능 한개만 추가했는데, 다른 글에 자세하게 설명되어 있어 딱히 설명할 것이 없다.
Ver 3.0.1
Ver 3.0.1 특징
- 날씨 정보 카카오톡 친구에게 보내기 추가
- 코드 리팩토링
- 버그 수정
1. 날씨 정보 친구에게 카카오톡 보내기
저번 3.0.0에서 나에게 보내기를 구현했었고, 이번에는 나 뿐만 아니라 내가 지정한 사용자에게도 보낼 수 있도록 기능을 추가해봤다. 우선 이 방법 또한 미리 사전 세팅이 필요하며, 지정해놓은 사람한테만 보낼 수 있다.
아래 링크에서 세팅법과 적용법을 알면 될 것 같고, 카카오톡 api 또한 access 토큰은 금방 만료되기 때문에 비교적 유효기간이 긴 recess토큰으로 계속 access token을 갱신하는 방법으로 api를 호출하였다.
api는 역시 api_token_list.py라는데다가 저장해놨다.
우선 지금은 내가 kakao developer에 팀원으로 지정해놓은 친구 모두에게 보내기로 설정해놨는데, 이건 미리 보내게될 사람을 추가해놓은 다음에 api호출할 때 friend_names를 받아오고, 비서를 호출할 때 누구누구한테 보내줘 이런식으로 추후에 구현할 수도 있을 것 같다. (지금은 부모님과 여자친구만 저장해놔서 굳이)
더보기
import json
import requests
from utils.api_token_list import access_token
def get_friend_info(kheaders):
url = "https://kapi.kakao.com/v1/api/talk/friends?limit=3&order=asc" #친구 목록 가져오기
result = json.loads(requests.get(url, headers=kheaders).text)
friends_list = result.get("elements")
freind_names=[i.get('profile_nickname') for i in friends_list]
friend_ids=[i.get('uuid') for i in friends_list]
return freind_names,friend_ids
def weather_kakako(weather_list):
kcreds = {"access_token" : access_token}
kheaders = {"Authorization": "Bearer " + kcreds.get('access_token')}
url_mine = "https://kapi.kakao.com/v2/api/talk/memo/default/send"
url_friend ="https://kapi.kakao.com/v1/api/talk/friends/message/default/send"
weather_url = "https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query=용인 동백 날씨"
friend_names,friend_ids = get_friend_info(kheaders)
# 메세지 내용
text = f"""\
# 동백 날씨 정보
기온 : {weather_list[0]}
습도 : {weather_list[1]}
바람 : {weather_list[2]}
"""
template = {"object_type": "text","text": text,
"link": {"web_url": weather_url,"mobile_web_url": weather_url},
"button_title": "날씨 상세보기"}
data_mine = {"template_object" : json.dumps(template)}
res = requests.post(url_mine, data=data_mine, headers=kheaders)
if res.json().get('result_code') == 0: print('나에게 전송 성공.')
else: print('나에게 전송 실패. Error : ' + str(res.json()))
data_friend = {'receiver_uuids': json.dumps(friend_ids) , "template_object" : json.dumps(template)}
res2 = requests.post(url_friend, data=data_friend, headers=kheaders)
if len(res2.json().get('successful_receiver_uuids'))>=1 : print("친구들에게 전송 성공")
else: print("친구들에게 전송 실패. error: " + str(res2.json()))
요약
- 카카오톡 api를 이용해서 날씨 정보 친구에게 보내기
- 코드 리팩토링, 버그 수정
728x90
반응형
'프로젝트 > 음성비서' 카테고리의 다른 글
업데이트 할 내용(Latest. Ver 4.0.1) (0) | 2023.11.03 |
---|---|
Voice secretary 버전 4.0.1 (1) | 2023.11.03 |
Voice secretary 버전 3.0.0 (2) | 2023.11.02 |
Voice secretary 버전 2.0.0 (0) | 2023.11.02 |
KT GenieLabs api 이용하기 (0) | 2023.11.02 |