백엔드 개발자

[#1 MatterMost 알림봇 만들기] with Python 본문

SSAFY

[#1 MatterMost 알림봇 만들기] with Python

임잠탱 2023. 6. 27. 01:02

ssafy 생활 중 아주 중요한 것이 있다.

 

바로 입퇴실 체크이다

정해진 입실 퇴실 시간에 맞춰 잘 출석체크를 해야 교육지원금을 온전히 다 받을 수 있는데

 

우리반에 친구가 이 시간을 놓쳐 지각을 3번 넘게 한 이후로 그 친구는 Mattermost 알림봇을 만들었다.

 

그리고 내가 이것을 만들게 된 것은 이 친구가 인턴을 합격하여 퇴소를 하게되었기 때문이다.

일요일에 그 친구가 알림봇을 중단한다는 글을 올렸고 

나는 월요일부터 알림이 끊기질 않길 바랐기 때문에 자기소개서 작성을 미루고 급하게 만들게 되었다.

## 스타트

사실 알림봇을 만드는 과정은 아주 간단하다.

mattermost와 연결될 webhook을 만들고, webhook을 통해 알림이 갈 수 있도록 연결된 프로그램을 만들어 주면 된다.

나는 python을 이용하여 만들어 줄 것이다.

 

# webhook 만들기

 

mattermost(데스크탑) 에서 알림을 주고 싶은 채널로 이동한다.

선택한 채널에서 위에 메뉴 -> 통합을 누른다.

Incoming Webhook을 선택하고 Incoming Webhook 추가를 누른다.

여기서 제목은 webhook을 구분하기 위한 이름을 지정하면되고,

원하는 채널을 선택 후 저장한다.

그럼 이렇게 webhook url 이 생성되었다!

 

이제 이 url 과 연결하여 알람을 전송하는 프로그램을 만들면 된다.


## python 코드

from apscheduler.schedulers.blocking import BlockingScheduler
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

 

 

이렇게 코드를 실행하면 테스트 성공!!!
 
연습할땐 test채널에서 해주고 성공하면 실제 알림봇을 설정할 채널의 webhook을 다시 연결해 주면 된다.
 
 
근데 이렇게 끝이 나면 좋겠지만 우리의 프로그램을 계속 노트북에서 실행시킬 순 없기에.. (가능은 하다)
서버에 올려서 관리해 주기로 했다.
 
그럼 다음편에서는 서버에 올리는 것을 포스팅 해보겠다 안녕~~
 

 

 

 

 

 

 

 

Comments