slack은 클라우드 기반 팀 커뮤니케이션과 협업을 위한 툴입니다. 오늘은 slack bot 을 하나 만들고 python을 활용해 간단한 메시지 보내는 법에 대해서 알아보려고 합니다.
1. slack 가입 및 워크스페이스 만들기
우선 회원가입부터 해야겠죠? 구글 계정이 있다면 연동해서 사용할 수 있습니다. 저도 새로운 워크스페이스를 생성해 볼게요. 회사 또는 팀 이름을 입력 -> 진행하는 프로젝트 -> 소통을 위한 대상자 추가하는 과정을 거치게 됩니다.
저는 MySpace 라는 이름으로 워크스페이스를 생성했습니다. 자, 이제 워크스페이스 생성은 마쳤고, 메시지 전송을 위한 단계로 넘어가 보죠.
2. slack api
이번에는 slack api 사이트로 이동합니다. 아래 보이는 화면에서 "Create an app"으로 이동할게요.
녹색 버튼 "Create an app" 클릭!
"From scratch" 클릭!
이제 App Name 과 아까 생성해둔 워크스페이스로 선택하고 앱 생성을 마무리 하시죠. "Create App" 클릭!
3. 메시지 전송을 위한 설정
1. Incoming Webhooks 활성화
Off(디폴트) -> On 으로 변경해줍니다. 변경 후 화면 맨 아래 보이는 "Add New Webhook to Workspace" 클릭!
지금 만들고 있는 App은 처음에 생성해둔 autobot 채널로 게시하기 위한 연결 작업을 해줍니다. "허용" 클릭!
2. OAuth & Permission
아래 생성된 토큰(Token) 값을 확인 할 수 있습니다.
화면을 조금 스크롤 해서 내려보면, Scopes 라고 있는데요. 메시지를 보내기 위해서는 "Add an OAuth Scope"를 눌러 "chat:write"를 추가해줍니다.
permission scope 변경 후 reinstall app 을 해줍니다. 화면 상단으로 스크롤 이동해 "Reinstall to Workspace" 클릭!
"허용" 클릭하면 이제 워크스페이스와 app 에 대한 설정이 모두 완료 되었습니다.
3. app 설정
이제 간단한 app 설정만 해주면 끝납니다. 워크스페이스 화면으로 이동해보죠. 빨간색 땡땡이 네모 박스를 클릭하면
"이 앱을 채널에 추가" 버튼 클릭 후 채널 선택해줍니다.
"허용" 클릭!
4. 채널 app 추가 확인
위 과정을 거친 후 채널로 이동하면 아래와 같이 App 이 정상적으로 추가 되었다는 메시지가 찍혀 있을거에요.
4. 메시지 전송 코드
이제 Python을 활용해서 slack 워크스페이스 채널로 메시지를 날려봐요.
import requests
import json
def post_message(channel, text):
# 본인이 발급받은 토큰값으로 대체
SLACK_BOT_TOKEN = "xoxb-????????????-?????????????-????????????????????????"
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + SLACK_BOT_TOKEN
}
payload = {
'channel': channel,
'text': text
}
r = requests.post('https://slack.com/api/chat.postMessage',
headers=headers,
data=json.dumps(payload)
)
if __name__ == '__main__':
#첫번째 param : 채널명 / 두번째 param : 메시지
post_message("#autobot", "Hello World!")
5. 메시지 전송 결과
Hello World! 가 성공적으로 전송이 되었네요!
'SW개발 > python' 카테고리의 다른 글
[python] 딕셔너리 Dictionary 구조 활용 (0) | 2021.11.17 |
---|---|
[python] pandas pivot_table 데이터프레임을 다루는 방법 (0) | 2021.11.07 |
[python] PyQt5 그래프 그리기(feat. plotly, matplotlib) (0) | 2021.09.10 |
[python] 연도, 월별 손쉬운 for loop 생성 방법 (0) | 2021.07.29 |
[python] 비밀번호 입력 기능 (0) | 2021.06.22 |