이전 시간에 배운 schedule 모듈을 활용하면 매일 아침 특정 시간에 웹 데이터를 수집하거나 엑셀 보고서를 자동으로 생성하도록 스케줄러를 가동할 수 있습니다. 하지만 프로그램이 알아서 돌아가는 동안 작업이 정상적으로 끝났는지, 혹은 크롤링 중 에러가 발생하여 멈추지는 않았는지 불안해서 모니터를 계속 확인해야 한다면 완전한 자동화라고 보기 어렵습니다.
수집이 끝나거나 에러가 터졌을 때, 혹은 일일 리포트 요약본이 완성되었을 때 내가 가장 자주 사용하는 메신저로 실시간 알림을 보내주는 기능이 결합되어야 진정한 무인 자동화 시스템이 완성됩니다.
저 역시 초기에는 자동화 스크립트를 켜두고 외출했다가, 인터넷 연결이 중간에 끊기는 바람에 수집이 멈춘 사실을 밤늦게야 확인하고 난감했던 경험이 있습니다. 오늘은 국내 직장인과 개인 사용자들이 가장 많이 사용하는 카카오톡(KakaoTalk)과 슬랙(Slack)으로 메시지를 자동 발송하는 2가지 핵심 기술을 정리해 드립니다.
1. 업무용 협업 툴의 정석: 슬랙(Slack) 웹훅(Webhook) 알림 연동
회사 업무나 개인 프로젝트 팀원들과 소통할 때 슬랙을 사용 중이라면 수신용 웹훅(Incoming Webhook) 기능을 활용하는 것이 가장 쉽고 강력한 방법입니다.
복잡한 OAuth 로그인 인증이나 사용자 승인 절차 없이, 슬랙에서 발급해 준 전용 보안 URL로 파이썬 requests 모듈을 통해 메시지를 쏘아 보내기만 하면 지정한 슬랙 채널로 즉시 알림이 발송됩니다.
슬랙 웹훅 알림 구현 3단계
슬랙 워크스페이스 앱 설정 페이지에서 'Incoming WebHooks' 앱을 추가합니다.
알림을 받아볼 전용 채널(예:
#bot-alert)을 선택하고 Webhook URL을 발급받습니다.파이썬 코드에서
requests.post()로 JSON 형태의 메시지를 전송합니다.
import requests
import json
# 슬랙에서 발급받은 본인만의 Webhook URL
SLACK_WEBHOOK_URL = "https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
def send_slack_message(message_text):
# 슬랙 전송 규격에 맞는 페이로드(Payload) 작성
payload = {
"text": message_text
}
# POST 요청을 통해 메세지 전송
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})")
# 사용 예시: 크롤링 완료 또는 에러 발생 시 알림 전송
send_slack_message("🚀 [자동화 알림] 오늘자 일일 매출 데이터 수집 및 엑셀 합치기가 완료되었습니다!")
2. 나에게 보내는 친숙한 알림: 카카오톡 나에게 보내기 API
개인용으로 알림을 받아보고 싶다면 국민 메신저인 카카오톡의 '나에게 보내기' API를 활용하는 것이 가장 효과적입니다.
카카오 개발자 센터(Kakao Developers)를 통해 내 앱을 등록하고 액세스 토큰(Access Token)을 발급받으면, 카카오톡 내 단톡방이나 나와의 채팅방으로 실시간 메시지를 전달할 수 있습니다.
카카오톡 나에게 보내기 실전 코드
import requests
import json
# Kakao Developers에서 발급받은 액세스 토큰
KAKAO_ACCESS_TOKEN = "your_kakao_access_token_here"
def send_kakao_me_message(text_content):
url = "https://kapi.kakao.com/v2/api/talk/memo/default/send"
headers = {
"Authorization": f"Bearer {KAKAO_ACCESS_TOKEN}"
}
# 카카오톡 메시지 템플릿 구조 (텍스트형)
template_data = {
"object_type": "text",
"text": text_content,
"link": {
"web_url": "https://example.com",
"mobile_web_url": "https://example.com"
},
"button_title": "자세히 보기"
}
payload = {
"template_object": json.dumps(template_data)
}
response = requests.post(url, headers=headers, data=payload)
if response.status_code == 200:
print("카카오톡 메시지 전송 성공!")
else:
print(f"카카오톡 메시지 전송 실패: {response.json()}")
# 사용 예시
send_kakao_me_message("📢 [경고] 웹 크롤링 중 403 에러 발생! 스크립트 상태를 확인하세요.")
3. 스케줄러와 결합하여 완벽한 모니터링 시스템 만들기
이제 이전 시간에 배운 schedule 스케줄러와 오늘 배운 메신저 알림 기능을 결합하면 사람이 모니터 앞을 지키지 않아도 되는 스마트한 무인 모니터링 시스템이 완성됩니다.
import schedule
import time
from datetime import datetime
def automated_job_with_alert():
now_str = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
try:
# 1. 실제 자동화 로직 수행 (예: 크롤링, 엑셀 파일 정제 등)
print("데이터 정제 작업을 시작합니다...")
# ... 데이터 처리 코드 ...
# 2. 작업 성공 알림 전송
success_msg = f"✅ [{now_str}] 일일 자동화 리포트 생성이 정상 완료되었습니다."
send_slack_message(success_msg)
except Exception as e:
# 3. 작업 실패 및 예외 발생 시 비상 알림 전송
error_msg = f"🚨 [{now_str}] 자동화 작업 중 에러 발생!\n오류 내용: {str(e)}"
send_slack_message(error_msg)
# 매일 저녁 6시에 자동 실행 등록
schedule.every().day.at("18:00").do(automated_job_with_alert)
while True:
schedule.run_pending()
time.sleep(1)
이 구조를 갖추어 두면 프로그램이 정상 작동했을 때는 깔끔한 성공 완료 메시지를, 중간에 파일이 없거나 인터넷이 끊겨 실패했을 때는 에러 로그가 담긴 비상 알림 메시지를 스마트폰으로 즉시 받아볼 수 있어 즉각적인 대처가 가능해집니다.
핵심요약
파이썬 메신저 알림 연동은 모니터링 없이도 프로그램의 정상 작동 및 에러 발생 유무를 실시간으로 파악하게 해줍니다.
슬랙(Slack)은 Incoming Webhook URL을 활용해
requests.post()한 줄만으로 채널 메시지 자동화가 가능합니다.카카오톡은 개발자 센터 API와 액세스 토큰을 활용해 '나에게 보내기' 형태로 개인 맞춤형 알림 시스템을 구축할 수 있습니다.


0 댓글