IT/SW Dev.

쉬운 AI Coding - Slack(incoming webhooks) 메세지 전송 Python 코드 작성 예시

부티형 2025. 2. 13. 20:25
반응형

 

 

적당한 프롬프트 입력으로  아래와 같은 코드를 생성할 수 있지만  코드의 품질이나 실제 작동하는지 등

개발자가 스스로 판단해야 하는 것들이 아직 많다.

그러나, 처음 부터 모든 코드를 작성하지 않아도 되는 점은 확실히 큰 장점인 것 같다

 

질문>

"슬랙 incoming webhooks 를 사용하여 파이썬 코드로 슬랙 채널에 메시지를 보낼 수 있는 몇가지 예시를 보여 줘"

 

답변>

Slack의 Incoming Webhooks을 사용하여 Python 코드로 메시지를 보내는 방법을 몇 가지 예제로 보여드릴게요.


1. 기본적인 메시지 보내기

먼저, Slack의 Incoming Webhooks URL을 발급받아야 합니다.
(워크스페이스 설정에서 Webhooks을 활성화한 후, 특정 채널에 대한 Webhook URL을 생성해야 합니다.)

예제 1: 간단한 메시지 보내기

import requests
import json

# Slack Webhook URL (본인의 Webhook URL로 변경하세요)
SLACK_WEBHOOK_URL = "https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXX"

# 보낼 메시지 데이터
payload = {
    "text": "Hello, Slack! 🖐 This is a test message from Python."
}

# 요청 보내기
response = requests.post(SLACK_WEBHOOK_URL, data=json.dumps(payload), headers={'Content-Type': 'application/json'})

# 응답 확인
if response.status_code == 200:
    print("메시지가 성공적으로 전송되었습니다!")
else:
    print(f"메시지 전송 실패: {response.status_code}, {response.text}")

2. 메시지에 사용자 태그하기

Slack에서 특정 사용자를 태그하려면 <@사용자ID> 형식으로 작성하면 됩니다.

예제 2: 특정 사용자 태그해서 메시지 보내기

payload = {
    "text": "Hey <@U12345678>, please check this message!"
}

response = requests.post(SLACK_WEBHOOK_URL, data=json.dumps(payload), headers={'Content-Type': 'application/json'})

(여기서 U12345678은 태그할 Slack 사용자의 ID입니다. Slack에서 /whois @username 명령어를 사용하면 확인할 수 있습니다.)


반응형

3. 블록 스타일 메시지 (더 구조적인 메시지)

Slack의 블록(Blocks) 포맷을 사용하면 더 다양한 형식의 메시지를 보낼 수 있습니다.

예제 3: 블록 스타일 메시지

payload = {
    "blocks": [
        {
            "type": "section",
            "text": {
                "type": "mrkdwn",
                "text": "*Hello, Slack!* 🎉\nThis is a structured message with blocks."
            }
        },
        {
            "type": "divider"
        },
        {
            "type": "section",
            "text": {
                "type": "mrkdwn",
                "text": "Here is a button you can click:"
            },
            "accessory": {
                "type": "button",
                "text": {
                    "type": "plain_text",
                    "text": "Click Me"
                },
                "url": "https://www.slack.com"
            }
        }
    ]
}

response = requests.post(SLACK_WEBHOOK_URL, data=json.dumps(payload), headers={'Content-Type': 'application/json'})

4. 이모지 및 사용자 프로필 변경하기

Webhook 메시지에서 사용자 프로필 이미지나 이름을 커스텀할 수도 있습니다.

예제 4: 사용자 프로필 및 이모지 변경

payload = {
    "username": "Python Bot",  # 보낼 메시지의 사용자 이름 변경
    "icon_emoji": ":robot_face:",  # 메시지의 아이콘 변경
    "text": "I am a Python bot sending messages to Slack! 🤖"
}

response = requests.post(SLACK_WEBHOOK_URL, data=json.dumps(payload), headers={'Content-Type': 'application/json'})

5. 첨부 파일을 포함한 메시지

Slack에서는 attachments 필드를 사용하여 메시지에 색상을 추가하거나 여러 정보를 포함할 수 있습니다.

예제 5: 첨부 파일을 포함한 메시지

payload = {
    "attachments": [
        {
            "fallback": "This is an important update!",
            "color": "#36a64f",  # 녹색
            "title": "System Alert",
            "text": "CPU usage is over 90%! ⚠️",
            "footer": "Monitoring System",
            "ts": 1647096820  # 타임스탬프 (선택 사항)
        }
    ]
}

response = requests.post(SLACK_WEBHOOK_URL, data=json.dumps(payload), headers={'Content-Type': 'application/json'})

6. 멀티라인 메시지 보내기

Slack에서는 \n을 사용하면 줄바꿈이 가능합니다.

예제 6: 여러 줄 메시지 보내기

payload = {
    "text": "🔥 *Server Alert* 🔥\n- CPU: 95%\n- Memory: 80%\n- Disk: 70%\n\nPlease take action immediately!"
}

response = requests.post(SLACK_WEBHOOK_URL, data=json.dumps(payload), headers={'Content-Type': 'application/json'})

이제 Slack의 Incoming Webhooks을 이용하여 다양한 방식으로 메시지를 보낼 수 있습니다!
어떤 방식이든 requests.post()를 이용해 쉽게 슬랙 메시지를 보낼 수 있으니, 원하는 스타일로 커스텀해보세요.

반응형