달나라 노트

Python Slack API : Slack Webhook 등록. Slack App 생성하고 설치하기 본문

Python/Python ETC

Python Slack API : Slack Webhook 등록. Slack App 생성하고 설치하기

CosmosProject 2021. 9. 8. 21:55
728x90
반응형

 

 

 

 

 

slack_sdk library와 slack token을 사용해서 slack bot으로 message 보내기 Link

slack_sdk library와 webhook URL을 사용해서 slack bot으로 message 보내기 Link

 

 

 

 

흔히들 사용하는 메신저 앱인 Slack에서도 Python API를 제공합니다.

다만 Slack의 Python API를 사용하기 위해선 Webhook이라는 것을 받아와야하는데 오늘은 한번 이 과정을 알아보겠습니다.

 

 

먼저 슬랙을 설치하고 실행하면 위같은 화면이 나옵니다.

 

저는 개인용 랩탑에서 슬랙을 처음 깔았기 때문에 새 워크스페이스 생성을 하겠습니다.

 

 

 

 

새 워크스페이스 생성을 누르면 위같은 창이 뜹니다.

 

사용하는 이메일을 입력하고 계속 버튼을 누릅시다.

 

 

 

 

 

그러면 입력한 이메일로 코드가 보내지고, 이메일을 확인하여 해당 코드를 입력해줍시다.

 

 

 

 

 

코드 입력을 하면 Slack app 열기라는 메세지가 나올겁니다.

 

Slack app 열기를 눌러주면 위처럼 설치한 Slack desktop app으로 이동되며 팀이름을 입력하라고합니다.

 

원하시는 이름을 입력하면 됩니다.

 

 

 

 

 

 

저는 universe라고 입력하겠습니다.

 

 

 

 

 

 

 

그리고 나서 이런 화면이 뜨는데 적당히 입력해주고 다음을 눌러줍시다.

 

전 저기에다가 apitest라고 입력했습니다.

 

 

 

 

 

 

그러면 슬랙 기본설정이 완료되고 위처럼 슬랙 화면이 뜹니다.

 

apitest는 제가 입력한대로 기본 생성되는 채널이네요.

 

 

 

이렇게 slack workspace가 완성되었습니다.

 

 

 

 

 

 

 

 

이제 본격적으로 Slack Webhook을 받아봅시다.

 

 

https://api.slack.com/messaging/webhooks

 

Sending messages using Incoming Webhooks

Creating an Incoming Webhook gives you a unique URL to which you send a JSON payload with the message text and some options.

api.slack.com

 

 

위 링크로 가면 이런저런 설명이 나오는데 먼저 Slack app을 생성해야 합니다.

 

Slack app이라고 하면 간단하게 Slack 메신저 내에서 심심이나 카카오톡의 플러스친구(지금은 채널이라는 분류에 존재하네요) 처럼

메신저에서 사용할 하나의 bot을 만든다고 생각하면 쉽습니다.

 

 

 

 

위 링크에서 1번 설명을 보면 Create your Slack app이라는 초록 버튼이 있습니다.

 

클릭해줍시다.

 

 

 

 

 

그리고 나오는 화면에서 From scratch를 클릭합니다.

 

 

 

 

 

 

 

 

그러면 App Name을 입력하라고 뜨는데 원하는 이름을 입력해줍시다.

저는 autobot이라고 입력했습니다.

 

그리고 worksapce를 선택하라고하는데 방금 제가 universe라는 workspace를 생성했기 때문에 universe를 선택해줍시다.

 

그리고 Create App 버튼을 클릭합니다.

 

여기까지 하면 Slack app 생성이 끝났습니다.

 

 

 

 

 

 

Slack app 생성을 완료하면 위와 같은 페이지가 뜹니다.

 

왼쪽 상단에 보면 제가 생성한 Slack app의 이름인 autobot이 떠있습니다.

 

앞에서 Webhook을 받을거라고했으니 Incoming Webhooks를 클릭합니다.

 

 

 

 

 

 

그러면 이런 화면이 뜨는데 우측 상단에 off toggle을 클릭해서 on으로 만들어줍시다.

 

 

 

 

Webhook을 on으로 만들면 위같은 화면이 뜰것입니다.

 

왼쪽 하단에 Add New Webhook to Workspace를 누르면 Webhook을 Workspace에 추가하게됩니다.

 

 

 

 

 

 

제가 생성한 autobot이라는 slack app은 universe라는 workspace에 생성되어있습니다.

 

따라서 당연히 autobot slack app은 universe workspace에서 작동하게됩니다.

 

또한 이 autobot이라는 slack app을 universe라는 workspace에 있는 어떤 채널에서 실행시킬지도 선택하게됩니다.

 

위 화면에서 채널 검색을 클릭해봅시다.

 

 

 

 

 

그러면 위처럼 universe workspace에 있는 여러 채널이 뜨는데 저는 #apitest라는 채널을 선택하겠습니다.

 

필요한 경우 slack desktop에서 새로운 채널을 생성하셔도됩니다.

 

 

 

 

 

이렇게 apitest 채널을 선택한 후 허용 버튼 클릭.

 

 

 

 

 

 

 

 

그러면 다시 아까 봤던 Incoming Webhook 설정 초기 화면으로 돌아와집니다.

 

그러나 한 가지 다른건 위 이미지의 빨간색으로 표시된 Webhook URL 부분에 #apitest라는 채널에 Webhook이 추가된 내역이 보이죠.

(Webhook URL 부분에 검은색으로 가려진 곳이 #apitest 채널에 포함된 slack app의 Webhook URL이 적혀있는 부분입니다.)

 

이 상태에서 위 창은 그대로 두고 Slack desktop app으로 가봅시다.

 

 

 

 

 

아까는 분명히 저 혼자였는데 슬랙에 autobot이 추가되었습니다.

 

그리고 apitest 채널에 autobot이 추가된 것을 볼 수 있죠.

 

즉, Slack app autobot이 제대로 생성되었고 정상적으로 universe workspace에 있는 apitest라는 채널에 추가된 것이라고 볼 수 있습니다.

 

 

그러면 이제 테스트를 해봐야겠죠.

 

Slack에 있는 curl 명령어를 이용해서 Webhook이 잘 등록되었고 제대로 작동하는지 확인할겁니다.

 

 

 

 

 

 

 

 

 

다시 Slack Webhook 설정 페이지로 돌아오면 위 이미지에서처럼 빨간색으로 표시된 부분이 보이시나요?

 

이 부분을 그대로 복사해서 terminal에 붙여넣어주면 됩니다.

 

별도로 경로변경 필요없이 terminal 실행 후 그대로 붙여넣어주면 됩니다.

(ok라는 내용이 보이는데 이것은 메세지가 정상적으로 전달되었을 때 반환되는 response text입니다.)

 

 

 

그리고나서 다시 Slack desktop app으로 돌아가봅시다.

 

 

보이시나요?

 

autobot이 #apitest 채널에 Hello, World!라는 메세지를 보냈습니다.

 

제가 autobot이라는 slack app을 생성했고, 이 slack app은 universe라는 workspace의 #apitest 채널에 추가되었습니다.

또한 #apitest 채널에 추가된 autobot이 제대로 메세지를 보내고있네요.

 

 

 

 

 

만약 나의 slack app(autobot)을 현재 채널이 아니라 다른 채널에 추가시키고 싶으면 앱에서 slackbot을 우클릭하고 앱 세부정보 열기를 클릭합니다.

 

 

 

그러면 이렇게 이 앱을 채널에 추가 라는 메뉴가 보이는데 여기서 채널을 선택해서 나의 slack app을 원하는 채널에 참여시킬 수 있습니다.

 

 

 

전 #new_channel에 autobot을 참여시켰는데 위처럼 autobot과 함께 #new_channel에 참여했다는걸 볼 수 있습니다.

 

단, 이렇게되면 원래 채널인 apitest에서는 autobot이 사라집니다.

 

 

 

 

slack_sdk library와 slack token을 사용해서 slack bot으로 message 보내기 Link

slack_sdk library와 webhook URL을 사용해서 slack bot으로 message 보내기 Link

 

 

 

 

 

 

 

 

참고 문서

slackclient library = https://slack.dev/python-slackclient/

slack_sdk library = https://pypi.org/project/slack-sdk/s

slack_sdk library example = https://ichi.pro/ko/slackbot-eul-mandeul-eo-bobsida-45570799171009

 

 

 

 

 

 

 

728x90
반응형
Comments