서버에서 카카오톡 메시지 보내기 - seobeoeseo kakaotog mesiji bonaegi

안녕하세요.

파이썬과 카카오톡 Open API를 활용하여 나에게 자동으로 메시지를 보내는 방법에 대해서 포스팅하도록 하겠습니다.

첫 번째로는,

https://developers.kakao.com/

Kakao Developers

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

developers.kakao.com

KaKao Developers에서 메시지 문서 보기를 눌러주세요.

서버에서 카카오톡 메시지 보내기 - seobeoeseo kakaotog mesiji bonaegi

두 번째로는,  애플리케이션을 추가합니다.

서버에서 카카오톡 메시지 보내기 - seobeoeseo kakaotog mesiji bonaegi

세 번째로는,  REST API 키를 활용하여 메시지를 자동으로 보낼 것입니다.

서버에서 카카오톡 메시지 보내기 - seobeoeseo kakaotog mesiji bonaegi

네 번째로는,  카카오 로그인 활성화 설정을 'ON'으로 변경해줍니다.

서버에서 카카오톡 메시지 보내기 - seobeoeseo kakaotog mesiji bonaegi

다섯 번째로는,  카카오톡 메시지 전송을 '이용 중 동의'로 변경해줍니다.

서버에서 카카오톡 메시지 보내기 - seobeoeseo kakaotog mesiji bonaegi

여섯 번째로는,  허용 서버 IP 주소를 자신의 IP를 입력해줍니다.

서버에서 카카오톡 메시지 보내기 - seobeoeseo kakaotog mesiji bonaegi

마지막으로 소스코드는

import requests
import json
from datetime import datetime

token="발급받은 엑세스 키 값"
url = "https://kapi.kakao.com/v2/api/talk/memo/default/send"
header = {
    "Content-Type": "application/x-www-form-urlencoded", 
    "Authorization": 'Bearer ' + token}

post = {
        "object_type": "text",
        "text": "Test "+ str(datetime.now().strftime("%Y-%m-%d")),
        "link": {
            "web_url": "https://www.naver.com",
            "mobile_web_url": "https://www.naver.com"
        },
        "button_title": "확인"      
    }
data = {"template_object": json.dumps(post)}
returnValue=requests.post(url, headers=header, data=data)
서버에서 카카오톡 메시지 보내기 - seobeoeseo kakaotog mesiji bonaegi

AWS Lambda와 같이 자동으로 반응해줄 수 있는 방안이 있다면 다양한 시도를 해볼 수 있겠네요.

감사합니다.

공통 내부 실패 결과 코드발생구분StatusError textDesc공통T900알수 없는 에러 코드알 수 없는 에러 코드 수신공통T997내부 파싱에러시스템 내부 원인으로 파싱 에러공통T998내부 발송 취소시스템 내부 원인으로 발송 취소공통T999내부 발송 실패 시스템 내부 원인으로 발송 실패공통T910내부 FAILOVER처리 실패내부 FAILOVER 처리 실패

KAKAO 전송 결과 코드

KAKAO 전송 결과 코드StatusError textDesc0000-정상 발송1001NoJsonBodyRequest Body가 Json형식이 아님1002InvalidHubPartnerKey파트너 키가 유효하지 않음1003InvalidSenderKey발신 프로필 키가 유효하지 않음1004NoValueJsonElementRequest BODY(Json)에서 name을 찾을 수 없음1005SenderNotFound발신프로필을 찾을 수 없음1006DeletedSender삭제된 발신 프로필1007StoppedSender차단 상태의 발신 프로필1011ContractNotFound계약 정보를 찾을 수 없음1012InvalidUserKeyException잘못된 형식의 유저 키 요청1013InvalidAppLink유효하지 않은 app연결1014InvalidBizNum유효하지 않은 사업자번호1015TalkUserIdNotFonud유효하지 않은 app user id 요청1016BizNumNotEqual사업자등록번호 불일치1020InvalidReceiveUserException올바른 유저 식별자 값이 하나도 없는 경우1021BlockedProfile차단 상태의 카카오톡 채널
(카카오톡 채널 운영툴에서 확인)1022DeactivatedProfile닫힘 상태의 카카오톡 채널
(카카오톡 채널 운영툴에서 확인)1023DeletedProfile삭제된 카카오톡 채널
(카카오톡 채널 운영툴에서 확인)1024DeletingProfile삭제대기 상태의 카카오톡 채널
(카카오톡 채널 운영툴에서 확인)1025SpammedProfile메시지차단 상태의 카카오톡 채널
(카카오톡 채널 운영툴에서 확인)1026UnableUseMessageType해당 msg_type에서 사용할 수 없는 response_method로 요청
(이미지알림톡(AI)는 realtime으로 발송 불가)1030InvalidParameterException잘못된 파라메터 요청1033-템플릿 타입과 메시지타입 불일치2003FailedToSendMessageByNoFriendshipException메시지 전송 실패
(테스트 서버에서 카카오톡 채널을 추가하지 않은 경우)2004FailedToMatchTemplateException템플릿 일치 확인 시 오류 발생 (카카오 내부 오류)2006FailedToMatchSerialNumberPrefixPattern시리얼넘버 형식 불일치3000UnexceptedExcetpion예기치 않은 오류 발생3005AckTimeoutException메시지를 발송 했으나, 수신확인 안됨 (성공 불 확실)3006FailedToSendMessageException카카오 내부 시스템 오류로 메시지 전송 실패3008InvalidPhoneNumberException전화번호 오류3010JsonParsseExcetpionJson 파싱 오류3011MessageNotFoundException메시지가 존재하지 않음3012SerialNumberDuplicatedException메시지 일련번호가 중복됨
- 메시지 일련 번호는 고유의 값이 부여되어야 함3013MessageEmptyException빈 메시지3014MessageLengthOverLimitException메시지 길이 제한 오류
(텍스트 타입 1000자 초과, 이미지 타입 400자 초과)3015TemplateNotFoundException템플릿을 찾을 수 없음3016NoMatchedTemplateException메시지 내용이 템플릿과 일치하지 않음3018NoSendAvailableException메시지를 전송할 수 없음3020SeenInfoNotFoundException메시지 확인 정보를 찾을 수 없음3022NoSendAvailableTimeException메시지 발송 가능한 시간이 아님
(친구 톡/마케팅 메시지는 08시~ 20시까지 발송 가능)3024MessageInvaildImageException메시지에 포함된 이미지를 전송할 수 없음3025ExceedMaxVariableLengthException변수 글자수 제한 초과3026Button chat_extra(event)-InvalidExtra(EventName)Exception '([A-Za-z0-9_]{1,50})'상담/봇 전환 버튼 extra, event 글자수 제한 초과3027NoMatchedTemplateButtonException메시지 버튼/바로연결이 템플릿과 일치하지 않음3028NoMatchedTemplateTitleException메시지 강조 표기 타이틀이 템플릿과 일치하지 않음3029ExceedMaxTitleLengthException메시지 강조 표기 타이틀 길이 제한 초과 (50자)3030NoMatchedTemplateWithMessageTypeException메시지 타입과 템플릿 강조유형이 일치하지 않음3031NoMatchedTemplateHeaderException헤더가 템플릿과 일치하지 않음3032ExceedMaxHeaderLengthException헤더 길이 제한 초과(16자)3033NoMatchedTemplateItemHighlightException아이템 하이라이트가 템플릿과 일치하지 않음3034ExceedMaxItemHighlightTitleLengthException아이템 하이라이트 타이틀 길이 제한 초과(이미지 없는 경우 30자, 이미지 있는 경우 21자)3035ExceedMaxItemHighlightDescriptionLengthException아이템 하이라이트 디스크립션 길이 제한 초과(이미지 없는 경우 19자, 이미지 있는 경우 14자)3036NoMatchedTemplateItemListException아이템 리스트가 템플릿과 일치하지 않음3037ExceedMaxItemDescriptionLengthException아이템 리스트의 아이템의 디스크립션 길이 제한 초과(23자)3038NoMatchedTemplateItemSummaryException아이템 요약정보가 템플릿과 일치하지 않음3039ExceedMaxItemSummaryDescriptionLengthException아이템 요약정보의 디스크립션 길이 제한 초과(14자)3040InvalidItemSummaryDescriptionException아이템 요약정보의 디스크립션에 허용되지 않은 문자 포함(통화기호/코드, 숫자, 콤마, 소수점, 공백을 제외한 문자 포함)4000ResponseHistoryNotFoundException메시지 전송 결과를 찾을 수 없음4001UnKnownMessageStatusError알수 없는 메시지 상태5000InvalidTestUser(테스트 발송) 관리자 혹은 일회성 인증을 받은 사용자가 아님5001DailyTestLimitExceeded(테스트 발송) 일일 발송량 초과7011-시리얼 넘버 패턴 에러7014-메시지 유효 시간 초과 에러8512-수신자 타입 찾을 수 없음8514-request_id 찾을 수 없음8520-지원하지 않는상품 타입 오류8521-지원하지 않는 메시지 타입 오류8522-지원하지 않는 텍스트 유형 오류8523-지원하지 않는 response method 오류8530-수신자 목록 사이즈 오류8999-내부 서버 오류9998현재 서비스를 제공하고 있지 않습니다.시스템에 문제가 발생하여 담당자가 확인하고 있는 경우9999시스템에 알수 없는 문제 발생, 담당자 확인중시스템에 문제가 발생하여. 담당자 확인중

KAKAO 전송 결과 코드(Polling)

KAKAO 전송 결과 코드(Polling)타입StatusDesc정상MS03수신 완료(사용자 휴대폰이 메시지를 수신) (성공 / 과금)에러ME09사용자에게 메시지를 발송했으나 수신여부 불투명 (성공불확실 / 비과금)

MT Failover 접수 실패 코드

http://www.ibizplus.co.kr/technical/datacenter/rest#api03 API Response 결과 코드 및 API Response 수신번호 별 결과코드 참고