카카오 api를 이용해서 나에게 메시지를 보내보자 ^o^
우선 여기에 접속 하고 로그인을 한다.
내 애플리케이션에 들어간다음 애플리케이션 추가하기를 누른다.
그럼 이제 이런 화면이 뜨는데 잘 적어준다.
앱키들은 내 정보들이니까 잘 보호를 하자.
이제 access_token을 얻어보자.
https://localhost:3000
메뉴에 보면 카카오 로그인이 있는데 이걸 눌러줘서 이렇게 바꿔줬다.
카카오 로그인 > 동의항목에가서 카카오 메시지 전송 설정을 해준다.
이후 이용 중 동의를 누르고 동의 목적을 적어주면 된다.
이제 기본 설정도 다 했으니 access_token을 얻기만 하면된다. (이게 제일 중요!)
(access_token은 서버에 요청을 해야 얻을 수 있는거 같다...)
https://kauth.kakao.com/oauth/authorize?client_id={REST API 키}
&redirect_uri=https://localhost:3000&response_type=code&scope=talk_message
그대로 따라했다면 , 이제 위에 링크를 복붙하면 된다.
그리고 {REST API 키}라고 되어있는 부분만 본인 REST API키로 적어주면 된다.
그러면 이렇게 뜨는데 동의하고 계속하기 눌러주면 된다.(내 code를 요청함)
그러면 이런 화면이 뜨는데 당황하지 말고 위에 url을 보면된다.
code= ????? ... 이렇게 뜨는데, 그 코드를 그대로 복사하면 된다.
이제 진짜 거의 다 끝났다... !
jupyter notebook 실행하고 ( 다른 IDE도 당연히 가능)
import requests
import json
기본 라이브러리 호출한다.
url = "https://kauth.kakao.com/oauth/token"
data = {
"grant_type" : "authorization_code",
"client_id" : "{REST API KEY}",
"redirect_url" : "https://localhost:3000",
"code" : "{CODE}"
}
response = requests.post(url, data=data)
tokens = response.json()
print(tokens)
이제 client_id에는 본인의 REST API KEY를 넣고 , code에는 위에 복사한 코드를 그대로 복붙하면된다.
이렇게 출력이 되면 잘 된 것이다.
with open("kakao_code.json", "w") as fp:
json.dump(tokens, fp)
그리고 토큰 json 파일로 저장을 해주고
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Bearer ${access_token}',
}
data = {
'template_object' : json.dumps({
"object_type": "text",
"text": "텍스트 영역입니다. 최대 200자 표시 가능합니다.",
"link": {
"web_url": "https://www.google.com/",
"mobile_web_url": "https://www.google.com/"
},
"button_title": "바로 확인"
})
}
requests.post('https://kapi.kakao.com/v2/api/talk/memo/default/send', headers = headers, data = data)
if response.json().get('result_code') == None:
print('메시지를 성공적으로 보냈습니다.')
else:
print('메시지를 성공적으로 보내지 못했습니다. 오류메시지 : ' + str(response.json()))
Authorization에 access_token만 위에 호출해온 코드로 바꿔주면된다.
내용은 template_object에서 수정하면된다.
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Bearer ${access_token}',
}
template = {
"object_type" : "list",
"header_title" : "Google",
"header_link" : {
"web_url" : "www.google.com",
"mobile_web_url" : "www.google.com"
},
"contents" : [
{
"title" : "구글",
"description" : "chrome",
"image_url" : " ",
"image_width" : 50, "image_height" : 50,
"link" : {
"web_url" : "https://www.google.com/",
"mobile_web_url" : "https://www.google.com/"
}
},
{
"title" : "네이버",
"description" : "naver",
"image_url" : "",
"image_width" : 50, "image_height" : 50,
"link" : {
"web_url" : "https://www.naver.com",
"mobile_web_url" : "https://www.naver.com"
}
}
],
"buttons" : [
{
"title" : "버튼",
"link" : {
"web_url" : "www.google.com",
"mobile_web_url" : "www.google.com"
}
}
]
}
data = {
"template_object" : json.dumps(template)
}
requests.post('https://kapi.kakao.com/v2/api/talk/memo/default/send', headers = headers, data = data)
if response.json().get('result_code') == None:
print('메시지를 성공적으로 보냈습니다.')
else:
print('메시지를 성공적으로 보내지 못했습니다. 오류메시지 : ' + str(response.json()))
만일 리스트 형식으로 메시지를 보내고 싶으면 object_type을 list를 바꾸고 위와 같은 양식으로 원하는 것을 꾸며주면 된다.
그러면 이런 식으로 나에게 메시지를 보낼 수 있다.
(참고)
https://developers.kakao.com/docs/latest/ko/message/rest-api#default-template-msg-me
여기 문서를 꼭 참조하자.
한번 읽어보면 post 방식으로 위의 url로 post하면 된다.
그리고 사전 설정은 플랫폼 등록/카카오 로그인 활성화/ 동의 항목으로 위에 다 해놓을 상태이다.
본문에는 template_object가 object 타입으로 꼭 필수라 지정되어 있다.
그리고 마지막에 result_code를 통해 전송 성공 유무를 알 수 있다.
밑에 예제가 있는데 curl 형식으로 보여준다.
import os
import requests
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Bearer ' + os.getenv('ACCESS_TOKEN', ''),
}
data = {
'template_object': '{\n "object_type": "text",\n
"text": "텍스트 영역입니다. 최대 200자 표시 가능합니다.",\n
"link": {\n "web_url": "https://developers.kakao.com",\n
"mobile_web_url": "https://developers.kakao.com"\n },\n
"button_title": "바로 확인"\n }',
}
response = requests.post('https://kapi.kakao.com/v2/api/talk/memo/default/send',
headers=headers, data=data)
이럴 경우 아래의 웹사이트 들어가서 curl 형식을 파이썬으로 바꿔주면된다. (curl은 은근 자주 나온다...)
-메시지 템플릿으로 작성해보기
위에 내용들은 사실 구글에 치면 엄청 많이 나온다.
(사실 이 포스터도 이 메시지 템플릿 작성법을 공유하기 위해 쓴 것....)
메시지 템플릿으로 작성은 굉장히 쉽다 ㅎㅎ... (이게 뭐라고 나는 그렇게 헤맸던거지!)
내 어플리케이션 > 해당 어플리케이션 클릭 > 메시지 > 메시지 템플릿 빌더 바로가기
위에 순서를 그대로 따라오면 위와 같은 화면이 뜬다.
이후 +템플릿 만들기에 들어간다.
템플릿은 많은데 아무거나 선택해준다.
여기 템플릿 이용해서 내가 원하는대로 커스텀 할 수 있다.
(약간 블로그 만드는 느낌...?) 그다지 어렵지 않으니 관심있으면 해보자.
어차피 테스트용이니 나는 기본 템플릿으로 선택해 나에게 보내 볼 것이다.
그냥 있는 템플릿 그대로 저장 !
그러면 옆에 이 ID가 뜨는데 이 String들을 기억하자.
다시 주피터로 들어간다.
url = "https://kapi.kakao.com/v2/api/talk/memo/send"
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
"Authorization": "Bearer " + "{access_token}"
}
data={
"template_id" : "99719"
}
response = requests.post(url, headers=headers,data=data )
if response.json().get('result_code') == 0:
print('메시지를 성공적으로 보냈습니다.')
else:
print('메시지를 성공적으로 보내지 못했습니다. 오류메시지 : ' + str(response.json()))
그러고 url 주소를 바꿔주고 data 딕셔너리에는 template_id만 넣어주면 된다.
짜잔 ^6^
내가 뻘짓했던거는 url을 기본 템플릿 보내는 url과 같은걸로 했던것 ...
그리고 문서를 잘 안 읽어 기본값이 뭔지도 몰랐다는 점 ㅠㅠ
template_object안에 template_id를 넣고 막 난리나부렸다 ....
(이것 저것 구글링했는데 파이썬으로 template_id로 하는 코드는 없었던거 같다)
그렇기 때문에 문서를 꼭 읽어 보는걸 추천 !!
(문서)
https://developers.kakao.com/docs/latest/ko/message/rest-api#custom-template-msg-me
읽어보면 그다지 어렵지않다.
전에꺼랑 비교하면 default가 있고 없고의 차이가 있다.
헤더는 동일하고,
본문은 template_id와 template_args가 있다.
template_id는 필수라 되어있으니 꼭 값을 넣어줘야한다.
template_args는 변수를 전달해 메시지를 변수에 따라 다르게 출력해주는 것 같다.
나머지는 기본 메시지 보내기랑 똑같다.
'Open API' 카테고리의 다른 글
[Python] 병원명으로 위도와 경도 나타내기 (Open API 네이버 검색) (1) | 2024.04.02 |
---|---|
[Python] 공공데이터 가져오기 (공공데이터포털 - 전국 응급의료기관 정보) (1) | 2024.03.27 |