본문 바로가기
Study/Python

Slack Block Kit 을 사용한 메시지 전송

by Zeromk2 2022. 3. 9.
728x90

Slack은 정말 많은 곳에서 사용하고 있는 커뮤니케이션 도구 중에 하나이죠.

저도 여태까지 다녔던 회사중에 슬랙을 사용하지 않았던 곳은 한 곳 빼고 없었던 것 같습니다.

 

이렇게 많이 사용하고 있는 슬랙에서 메시지를 전송할 때 어떻게 하는지 알아보도록 하겠습니다.

슬랙에서는 여러 API를 제공하고 있는데요. 물론 메시지 전송과 관련된 API도 제공해주고 있습니다.

 

너로 정했다!

 

python코드에서 slack 모듈을 사용해서 보낼수도 있지만, 저는 HTTP 방식으로 사용하도록 하겠습니다.

그래서 requests가 필요하죠.

import requests

 

그리고 채널 ID와 슬랙 토큰이 있으면 전송이 가능합니다.

일단 헤더 부터 정의해줍니다.

charset이 없을 경우 전송이 되지 않으니 꼭 넣어주세요

header = {'Content-type': 'application/json; charset=utf-8', 'Authorization': {slack 토큰}}

 

그리고 data로 보낼 attachments를 지정해줍니다.

 attachments = {
     "channel": {채널ID},
     "thread_ts": {쓰레드로 넣을 경우 ts 값},
     "attachments": [
             {
                 "color": {좌측 bar 색상},
                 "blocks": [
                     {
                         "type": "header",
                         "text": {
                             "type": "plain_text",
                             "text": "{} Result".format(def_name)
                         }
                     },
                     {
                         "type": "section",
                         "fields": [
                             {
                                 "type": "mrkdwn",
                                 "text": "*OS Version:* {}".format('11')
                             }
                         ]
                     },
                     {
                         "type": "section",
                         "text": {
                             "type": "mrkdwn",
                             "text": "*Test Result*\n{}".format({입력 텍스트})
                         }
                     }
                 ]
             }
         ]
     }

 

그리고 이것을 json 객체로 파싱해줍니다. 

attachments = json.dumps(attachments)

 

그리고 전송

requests.post('https://slack.com/api/chat.postMessage', headers=header, data=attachments)

 

댓글