Slack API를 활용한 슬랙 메시지 전송
들어가며
파이썬을 활용한 자동화 프로그램을 실행할 때, 슬랙 API를 통해 실시간으로 진행 상황을 확인할 수 있습니다. 예를 들어, 비트코인 자동 매매 프로그램에서 매수/매도에 대한 메시지를 전송하여 현황을 파악할 수 있습니다.
이 글에서는 슬랙 API를 활용하여 슬랙 메시지를 전송하는 방법을 소개합니다.
앱 생성 w/ 슬랙 API
slack api 페이지에서 Your apps를 클릭합니다.
앱 생성을 위한 Create New App을 클릭합니다.
From scratch를 선택합니다.
From scratch는 처음 앱을 만들고 설정할 때, 더 직관적이고, GUI로 설정을 추가할 수 있습니다.
앱 이름(App Name)과 워크스페이스를 설정합니다.
OAuth & Permissions에서 Scopes 아래에 Add an OAuth Scope를 클릭합니다.
다음과 같이 Bot Token Scopes에 메시지를 보낼 수 있는 권한인 chat:write를 추가합니다.
Install to project-bot을 클릭하여 앱을 설치합니다.
다음과 같이 메시지 전송을 위한 권한 요청을 허용합니다.
앱 설치가 정상적으로 완료되면, 다음과 같이 Bot User OAuth Token을 받을 수 있습니다. 파이썬을 통해 메시지를 전송하려면 해당 토큰이 반드시 필요하므로, 유의하시기 바랍니다.
슬랙에서는 봇이 초대되지 않은 채널에는 메시지를 전송할 수 없습니다. 다음과 같이 입력하여 봇을 채널에 초대합니다.
파이썬을 활용한 슬랙 메시지 전송
위에서 받은 OAuth Token을 활용하여 파이썬으로 메시지를 전송하는 방법은 다음과 같습니다. 단계별 상세 설명은 아래에 첨부합니다.
import requests
def slack_send_message(token, channel, text):
## 메시지 구조 정의
message = {
'channel': channel,
'text': text,
}
## HTTP 헤더 설정
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json; charset=utf-8',
}
## 메시지 전송 API 호출
response = requests.post('https://slack.com/api/chat.postMessage', json=message, headers=headers)
## 결과 확인
if response.json().get('ok'):
print("메시지 전송 성공!")
else:
print("에러:", response.json())
위의 slack_send_message 함수 사용 예시입니다. 필요한 토큰, 채널ID, 메시지를 입력한 후 실행 결과는 다음 이미지와 같습니다.
## 메시지 전송
SLACK_TOKEN = 'xoxb-YOUR_BOT_TOKEN'
CHANNEL_ID = 'YOUR_CHANNEL_ID' # 메시지를 보낼 채널 ID
MESSAGE = '슬랙 메시지 전송 완료!'
slack_send_message(SLACK_TOKEN, CHANNEL_ID, MESSAGE)
1. 메시지 구조 정의
슬랙 API는 메시지를 보낼 때 채널(channel)과 텍스트(text) 내용을 JSON 형태로 전달해야 합니다. message 딕셔너리 구조는 다음과 같습니다.
## 메시지 구조 정의
message = {
'channel': channel,
'text': text,
}
2. HTTP 헤더 설정
위에서 발급받은 Token은 슬랙 서버에 요청의 발신자를 인증하는 데 사용됩니다. Content-Type 헤더는 요청 본문이 JSON 형식임을 나타냅니다.
## HTTP 헤더 설정
headers = {
'Authorization': f'Bearer {token}',
'Content-Type': 'application/json; charset=utf-8',
}
3. 메시지 전송 API 호출
슬랙 API의 chat.postMessage 엔드포인트에 POST를 요청합니다. 위에서 작성한 message를 JSON 형태로 인증 헤더와 함께 전송합니다.
## 메시지 전송 API 호출
response = requests.post('https://slack.com/api/chat.postMessage', json=message, headers=headers)
4. 결과 확인
JSON으로 받은 응답 결과인 'ok'값이 True면 전송 성공입니다. 실패 시, 에러 메시지를 출력합니다.
## 결과 확인
if response.json().get('ok'):
print("메시지 전송 성공!")
else:
print("에러:", response.json())
'Python' 카테고리의 다른 글
[파이썬] 데이터프레임 행 반복 처리 - iterrows, itertuples (0) | 2025.04.24 |
---|---|
[파이썬] 토이 프로젝트 - 테니스 코트 정보 확인(날씨 예보, 주차 등) (2) | 2025.04.23 |
[파이썬] 파이썬을 활용한 좌표 변환 - pyproj (0) | 2025.04.20 |
[파이썬] 지진 데이터 지도 시각화 - 히트맵, 클러스터링, folium (6) | 2025.04.17 |
[파이썬] matplotlib을 활용한 지식 그래프 Knowledge Graph 시각화 (4) | 2025.04.15 |