본문 바로가기

TIL/개인공부

[Slack] Incoming Webhook 슬랙봇 메세지 만들기

반응형

회사 Data Engineer팀에서 제공하는 슬랙봇은 기능이 너무 제한적이라서, 직접 만들어보면 어떨까해서 주말동안 작업해보았다. 시간이 굉장히 오래걸릴줄알았는데, 생각보다 slack api가 굉장히 개발을 쉽게할수있게끔 만들어져서 금방만든것같다.

 

먼저 개발은 Python으로 작업했고. 나는 간단하게 특정채널에 메세지만 보내기만 하면되는거라서, webhook slack bot을 사용했다.

다음과 같이 코드를 작성하면된다.

 

제일먼저 Slack에 들어가 'Your App'을 눌러서 'Create New App'을 눌러준다. 그다음 앱에 이름 기타요소를 기입해주면된다.

이후페이지를 보면 위와같이 뜰텐데(Add features and functionallity를 눌러주면 펼쳐진다), 이중 Incoming Webhooks를 눌러준다. 그러면 밑과같은 curl 명령어가 뜨게된다.

자 이제 위의방식을 Python 형식으로 코딩하면 다음과같이 된다.

import requests
import json

url = 'https://hooks.slack.com/services/[webhook api에서 볼수있음]'
headers = {"Content-type": "application/json"}

payload = {
	"blocks": [
		{
			"type": "section",
			"text": {
				"type": "plain_text",
				"text": "This is a plain text section block.",
				"emoji": true
			}
		}
	]
}

r = requests.post(url, headers=headers, data=json.dumps(payload))

위와 같이 코딩하여 코드를 실행시키면 슬랙에는 다음과같이 메세지가 표시된다.

자, 이제 걱정거리는 "어떻게 이 메세지를 꾸며갈것이냐" 인데, 다행히 슬랙에서 제공해주는 툴이 있다.

Block Kit Builder를 사용하면 쉽게 메세지를 꾸밀수가있다. (아래 사이트에 들어가서 Block Kit Builder 으로 들어가면된다)

https://api.slack.com/block-kit

 

Block Kit | Slack

Customize the order and appearance of information and guide users through your app's capabilities by composing, updating, sequencing, and stacking blocks — reusable components that work almost everywhere in Slack.

api.slack.com

들어가게되면 다음과 같은 창이뜨는데. 왼쪽 카테고리에서 자신이 원하는 형태를 클릭으로 추가할수있다. 추가하면 바로 오른쪽에 Payload로 반영되니 나중에 코딩할때 바로 긁어서 복붙하면된다. 슬랙에서 제공하는 다양한 템플릿도 있으니 참고하면 좋을것같다.

기회가되면 다음에는 커맨드를 받고 결과값을 리턴해주는 슬랙봇을 만들어봐야겠다...!!

반응형