파이썬에서 slack에 메시지 전달하기 (slack bot)
안녕하세요~ 오늘은 파이썬을 이용에 slack에 메시지 전달하는 방법을 알아보도록 할 건데요
slack은 각각의 주제에 맞는 채널을 생성해 팀간의 소통을 도와주는 역할을 하고 있습니다. 저 같은 경우에는 팀워크가 아니더라도 개인 공간으로서 제 포트폴리오를 도와주는 역할을 해주고 있습니다. 슬랙 채널을 생성하기 위해서는 slack에 회원가입을 해야겠죠.
아래 링크를 따라가면 slack api 웹 페이지로 이동합니다. 이 곳에서 여러 api들을 확인하고 설정할 수 있으니 요긴하게 사용하시길 바랍니다.
우선 웹페이지 중앙에 있는 초록 버튼 'Start Building'을 클릭해 App을 생성하겠습니다.
Create a Slack App 에서 App 이름을 정하고 Workspace를 지정해주면 됩니다. 채널을 만들기 전 Workspace를 생성해야 채널을 생성할 수 있습니다. 이름을 짓고 자신의 workspace를 선택해주세요
저는 이미 존재하기 때문에 이 Workspace를 이용하겠습니다.
Create App 버튼을 누르면 아래와 같이 여러 기능들을 추가할 수 있습니다. 우선 Permissions를 클릭해 접근 권한을 가질 수 있도록 eccess token을 생성하도록 합니다.
아래와 같은 창이 뜨는데 Install to Workspace라는 버튼을 클릭할 수 없습니다.
아래의 Scopes의 bot Token에서 chating token을 생성하면 이 버튼을 클릭할 수 있는데 아래의 token을 생성하고 Install to Workspace 버튼을 클릭해주면 됩니다.
char:write를 클릭합니다.
token을 생성하고 Install to Workspace 버튼을 클릭해주면 됩니다. 버튼을 클릭하면 아래와 같이 키가 생성됩니다. 이 token을 복사해서 추후에 파이썬에 token 값을 주고 채널에 이벤트를 보낼 수 있습니다.
슬랙 채널에 생성하려면 Add channels를 클릭해 생성하면 됩니다.
아래와 같이 채널이 생성됐습니다.
방금 만든 app을 클릭해 넣어줍시다. 저 같은 경우는 미리 적용된 test_service가 보입니다. 여기서 자신의 App을 검색해 설정하면 됩니다.
파이썬에서
저는 두개의 파일을 생성해 토큰 키를 따로 관리할 생각입니다. 물론 그 프로젝트에는 slacker를 다운로드해야겠죠
파이썬에서 실행하기 전에 slacker라는 프로젝트를 다운로드하도록 합니다. 간단하게 Pycharm에서 file -> setting에 들어가서 설치할 수 있으니 아래의 방법을 참고해주세요.
Python Interpreter를 들어가면 현재 설치된 패키지들이 보입니다. 저는 이미 slacker를 설치해서 추가가 된 모습입니다. 패키지를 설치하려면 현재 Python Interpreter에서 왼쪽 하단 +를 클릭하면 됩니다.
slacker를 검색한후 왼쪽 하단 Install Package를 클릭하면 설치가 됩니다.
그런 다음 아래 두개의 파일을 생성합니다. 하나의 파일은 이벤트를 보내고 나머지 하나의 파일은 단순하게 token key를 관리할 생각입니다.
slack_message.py
token.py
slack_message.py
# slcak_message.py
from slacker import Slacker
from datetime import datetime
import token
token = token.eccess_token
def send_slack_message(msg, error=''):
full_msg = msg
if error:
full_msg = msg + '\n에러 내용:\n' + str(error)
today = datetime.now().strftime('%Y-%m-%d %H:%M:%S ')
slack = Slacker(token)
#채널 이름 적기
slack.chat.post_message('#test_bot_service', today + full_msg, as_user=True)
if __name__ == "__main__":
# 일부러 에러가 발생하도록 함.
try:
a = 1/0
except Exception as e:
send_slack_message('테스트', e)
in_token.py
# in_token.py
eccess_token = '자신의 토큰 입력'
원래 token.py 파일로 생성했는데 token이라는 이름으로 설정하고 실행하니까 이런 오류가 뜨더라고요.
그래서 in_token.py로 이름을 변경했습니다.
이렇게 메세지가 생성된 걸 볼 수 있습니다.
테스트 파일에는 오류를 이용해 이벤트를 전달했지만 다양한 방법을 통해 슬랙에 메시지를 보낼 수 있습니다. 자신이 원하는 프로그램을 생성하여 이벤트를 보내 bot처럼 사용한다면 매력적이겠죠.