Slack API를 활용하면 Slack 워크스페이스와 연동하여 다양한 기능을 수행할 수 있다.
이 글에서는 Slack API 중 Incoming Webhooks을 사용하여 Python으로 Slack 채널에 메시지를 보내는 방법을 간단하게 소개하겠다.
1. Slack에서 Incoming Webhook URL 생성하기
먼저, Slack에서 Incoming Webhook URL을 생성해야 한다.
- Slack 워크스페이스에 로그인: Slack에 로그인한 후 Slack API 페이지로 이동한다.
- 앱 생성: "Create New App" 버튼을 클릭하여 새로운 앱을 만든다.
- Incoming Webhooks 활성화: 앱을 만든 후 "Incoming Webhooks" 기능을 활성화한다.
- Webhook URL 생성: "Add New Webhook to Workspace" 버튼을 클릭하고 메시지를 보낼 채널을 선택한다. 그러면 Slack이 생성해주는 Webhook URL을 얻을 수 있다.
이 Webhook URL은 https://hooks.slack.com/services/XXXX/YYYY/ZZZZ 형태로 제공되며, 이 URL을 통해 Python 코드로 Slack 채널에 메시지를 보낼 수 있다.
2. Python 코드로 Slack에 메시지 보내기
import requests
import json
# api.slack.com 에서 Incoming Webhooks 에서 생성한 Webhook URL (자기꺼)
slack_url = "https://hooks.slack.com/services/~~~/!!!/@@@"
headers = {"Content-type":"application/json"}
data = {"text":"파이썬 테스트입니다."}
response = requests.post(slack_url, headers=headers, data=json.dumps(data))
# 상태코드가 200이면 성공
if response.status_code == 200 :
print("잘 보냈습니다.")
else:
print("오류 발생")
slack01.py
슬랙 워크스페이스에 자동으로 메시지 전달하는 코드이다.
슬랙 webhook을 함수로 정의하게 되면 다음과 같다.
import requests
import json
slack_url = "https://hooks.slack.com/services/~~~/!!!/@@@"
def sendSlackWebhook(strText):
headers = {"Content-type":"application/json"}
data = {"text":strText}
response = requests.post(slack_url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
return "잘 보냈습니다."
else:
return "오류 발생"
print(sendSlackWebhook("테스트입니다.!!"))
slack02.py
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
# Slack channel to send the message to
SLACK_API_TOKEN = "https://hooks.slack.com/services/~~~/!!!/@@@"
def sendSlackWebhook(file_path):
client = WebClient(token=SLACK_API_TOKEN)
try:
response = client.files_upload(
channels="#python_test01",
file=file_path,
title=f"테스트입니다."
)
print(f"정상적으로 보냄")
except SlackApiError as e:
print(f"오류 발생 {e}")
output_path = "result.xlsx"
sendSlackWebhook(output_path)
slack03.py
Slack API를 사용하여 #python_test01이라는 Slack 채널에 result.xlsx 파일을 업로드하는 코드이다.
slack_sdk 라이브러리를 사용하여 Slack과 통신하며, SlackApiError 라이브러리는 Slack API 요청 중 발생하는 예외를 처리하기 위해 사용된다.
- client = WebClient(token=SLACK_API_TOKEN) : Slack API 클라이언트를 초기화한다.
- client.files_upload() : 지정된 Slack 채널(channels)에 파일을 업로드한다. 여기서 file은 업로드할 파일 경로, title은 파일의 제목이다.
'대외활동 > SK Shieldus rookies' 카테고리의 다른 글
[인프라 활용을 위한 파이썬] #4 FTP 서비스 연결 및 자동화 (0) | 2024.03.12 |
---|---|
[인프라 활용을 위한 파이썬] #3 엑셀파일 자동화 (0) | 2024.03.10 |
[인프라 활용을 위한 파이썬] #2 웹 크롤링 및 자동화 (0) | 2024.03.07 |
[인프라 활용을 위한 파이썬] #1 파일&디렉토리, 메일 자동화 (2) | 2024.03.07 |