티스토리 뷰

반응형

1. kakao developers 사이트 참조 (https://developers.kakao.com/docs/latest/ko/message/rest-api#send-friend)

 

친구에게 기본 메시지를 보내기 위해서는 나에게 메시지 보내기와 달리 메시지를 받을 친구의 카카오톡  uuid를 receiver_uuids 파라미터로 필수 전달해야 한다. (2/3 포스팅 내용 참조:친구 목록 가져오기)

 

[Python] 카카오톡 : 메시지 (2/3 - 친구 목록 가져오기)

1. 팀 관리에 사용자 추가 우선 카카오톡에서 친구에게 메시지를 보내는 방법은 2가지가 있다.  카카오톡 메시지 API 를 이용하는 방법과 카카오링크 API를 이용하는 방법이 있다. (관련 링크:https:

cocoabba.tistory.com

앞선 포스팅과 같이 template_object 파라미터로 메시지 만들기 내용을 구성하고, 전송/응답은 JSON 형식으로 구성한다.

문서 > 메시지 >REST API : 친구에게 기본 메시지 보내기

2. 메시지 구성

 

전달하기위한 메시지 보내기 본문은 아래와 같이 구성한다.

curl -v -X POST "https://kapi.kakao.com/v1/api/talk/friends/message/default/send"
    -H
"Authorization: Bearer {USER_ACCESS_TOKEN}"
    -d
'receiver_uuids=["abcdefg0001"]'
    -d
'template_object=
         {
           "object_type": "text", "text": "텍스트 영역입니다. 최대 200자 표시 가능합니다.",
           "link": { "web_url": "https://developers.kakao.com",
           "mobile_web_url": "https://developers.kakao.com"
         },  
         "button_title": "바로 확인" 
     }'

 

여기에서 고려해야 할 점은 친구의 uuids 를 String 리스트(배열) 타입으로 전달해야 하는 것이다.

보통 첫번째 테스트를 위해서 한명의 친구를 등록하고 테스트를 하기 때문에 String으로 넣고 테스트 하는 오류를 피할 수 있다. 

 

앞 포스팅에서도 언급했지만, 필요한 데이터는 uuid 이다. (id 가 아니다.

 

또한 이번에는 데이터 헤더에 들어가는 값이 receiver_uuids, template_object 값 2개를 전달해야 한다. 

때문에 실제 전달하는 데이터의 형태는 request.post의 data 내용이 아래와 같이 구성되어야 한다. 

 

{
   'receiver_uuids': '["Q3JAcUV0R...xxxxxx...FfUp6T3sd"]',
   'template_object': '
         {
               "object_type": "text",
               "text": "Hello, This is KaKao Message Test!!(sendToFrie...",
               "link": 
                    {
                        "web_url":"https://....",
                        "mobile_web_url":"https://...",
                    },
               "button_title":"\\ubc14\\ub85c \\ud655\\uc778"
         }'
    }

text 형태로 이 구조를 만들수도 있지만, python dictionary 타입을 활용하여 연결할 수 있다. 

dictionary에서는 두 dic 타입을 연결하기 위해 update 메소드를 사용할 수 있다.

(정확히 말하자면, 메소드명에서 알 수 있듯이 update 이지만, key 값이 다를 경우 append의 기능을 한다.)

 

3. 시행착오 Case

 

추가적으로 개인적으로 삽질을 했던 부분은 String 배열로 되어 있던 receiver_uuids 값을 반드시 json 형식으로

변경해줘야 한다는 것이다. String 배열내에 있는 값을 싱글 쿼더(')로 감싸는지 더블 쿼터(")로 감싸는지에 따라 메시지를 보내지 못하는 경우가 있었다.

(생각보다 예민하게 반응한다. 지금은 쉽게 얘기하지만, 사실 한 시간 넘게 이 버그를 찾았던 기억이 난다.)

uuidsData = {"receiver_uuids": json.dumps(friends_id)}

post = {
"object_type": "text",
"text": text,
"link": {
"web_url": "https://developers.kakao.com",
"mobile_web_url": "https://developers.kakao.com"
},
"button_title": "바로 확인"
}

data = {'template_object': json.dumps(post)}

 

uuidsData.update(data)

{'receiver_uuids': ['Q3JAcU....xxxxxx.....6T3sd']} 

error message => {"msg":"failed to parse parameter. name=receiver_uuids, stringToParse=-, paramString=-, paramStringAlias=null","code":-2}

 

{'receiver_uuids': ["Q3JAcU....xxxxxx.....6T3sd"]} ==> 메시지 전송 성공!!

 

본 포스팅을 통해 도움이 되셨음 좋겠다.

 

 

반응형
댓글
댓글쓰기 폼