백엔드 개발자
[#1 MatterMost 알림봇 만들기] with Python 본문
ssafy 생활 중 아주 중요한 것이 있다.
바로 입퇴실 체크이다
정해진 입실 퇴실 시간에 맞춰 잘 출석체크를 해야 교육지원금을 온전히 다 받을 수 있는데
우리반에 친구가 이 시간을 놓쳐 지각을 3번 넘게 한 이후로 그 친구는 Mattermost 알림봇을 만들었다.
그리고 내가 이것을 만들게 된 것은 이 친구가 인턴을 합격하여 퇴소를 하게되었기 때문이다.
일요일에 그 친구가 알림봇을 중단한다는 글을 올렸고
나는 월요일부터 알림이 끊기질 않길 바랐기 때문에 자기소개서 작성을 미루고 급하게 만들게 되었다.
## 스타트
사실 알림봇을 만드는 과정은 아주 간단하다.
mattermost와 연결될 webhook을 만들고, webhook을 통해 알림이 갈 수 있도록 연결된 프로그램을 만들어 주면 된다.
나는 python을 이용하여 만들어 줄 것이다.
# webhook 만들기
mattermost(데스크탑) 에서 알림을 주고 싶은 채널로 이동한다.
선택한 채널에서 위에 메뉴 -> 통합을 누른다.
Incoming Webhook을 선택하고 Incoming Webhook 추가를 누른다.
여기서 제목은 webhook을 구분하기 위한 이름을 지정하면되고,
원하는 채널을 선택 후 저장한다.
그럼 이렇게 webhook url 이 생성되었다!
이제 이 url 과 연결하여 알람을 전송하는 프로그램을 만들면 된다.
## python 코드
import requests
from datetime import datetime, timedelta
print("test")
def send_mattermost_message(webhook_url, message):
payload = {
'text': message
}
response = requests.post(webhook_url, json=payload)
if response.status_code == 200:
print('Message sent successfully to Mattermost!')
else:
print('Failed to send message to Mattermost.')
def schedule_multiple_notifications(webhook_url, messages, times):
scheduler = BlockingScheduler()
for i, message in enumerate(messages):
time = times[i]
scheduler.add_job(send_mattermost_message, 'cron', day_of_week='mon-fri', hour=time.hour, minute=time.minute, args=[webhook_url, message])
scheduler.start()
# Mattermost 웹훅 URL 및 전송할 메시지, 반복 시간 설정
webhook_url = '[이곳에 만든 webhookurl을 붙여넣으세요]' #예시 'http://www.www'
messages = ['@here 입실 체크 하세요', '@here 퇴실 체크 하세요']
times = [datetime.strptime(time, '%H:%M') for time in ['08:50','18:00']]
schedule_multiple_notifications(webhook_url, messages, times)
이 코드는 오전 8시 50분, 오후 6시에 각각 '@here 입실 체크 하세요', '@here 퇴실 체크 하세요'
라는 알림을 보내는 코드이다.
day_of_week='mon-fri' 는 평일만 가도록 해놓은 것이고 주말까지 하고싶으면 0-6으로 바꿀 수 있다.
# 오류
urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with LibreSSL 2.8.3
urllib3가 openssl 1.1.1+ 만 지원한다고 한다.
그래서 urllib 버전을 다시 설치해 주었다.
그리고 pip install urllib3==1.26.6
'SSAFY' 카테고리의 다른 글
[#2 Mattermost 알림봇 만들기] -서버연결 (0) | 2023.06.27 |
---|---|
[SSAFY] 9기 코딩테스트, 면접(인터뷰) 후기, 추가합격!! (3) | 2023.01.05 |