Tools

파이썬에서 slack에 메시지 전달하기 (slack bot)

Imaspear 2020. 12. 26. 22:39
728x90

 

안녕하세요~ 오늘은 파이썬을 이용에 slack에 메시지 전달하는 방법을 알아보도록 할 건데요 

 

slack.com/intl/ko-kr/

 

새 HQ에 오신 것을 환영합니다.

Slack은 여러분의 팀과 소통할 새로운 방법입니다. 이메일보다 빠르고, 더 조직적이며, 훨씬 안전합니다.

slack.com

slack은 각각의 주제에 맞는 채널을 생성해 팀간의 소통을 도와주는 역할을 하고 있습니다. 저 같은 경우에는 팀워크가 아니더라도 개인 공간으로서 제 포트폴리오를 도와주는 역할을 해주고 있습니다. 슬랙 채널을 생성하기 위해서는 slack에 회원가입을 해야겠죠.

 

아래 링크를 따라가면 slack api 웹 페이지로 이동합니다. 이 곳에서 여러 api들을 확인하고 설정할 수 있으니 요긴하게 사용하시길 바랍니다. 

api.slack.com/

 

새 HQ에 오신 것을 환영합니다.

Slack은 여러분의 팀과 소통할 새로운 방법입니다. 이메일보다 빠르고, 더 조직적이며, 훨씬 안전합니다.

slack.com

 

 

우선 웹페이지 중앙에 있는 초록 버튼 'Start Building'을 클릭해 App을 생성하겠습니다.

 

slack api 채널에 들어간 후 Start Building 클릭하면 Slack App을 만들 수 있습니다. 

 

 

 

 

 

 

 

Create a Slack App 에서 App 이름을 정하고 Workspace를 지정해주면 됩니다. 채널을 만들기 전 Workspace를 생성해야 채널을 생성할 수 있습니다.  이름을 짓고 자신의 workspace를 선택해주세요

 

 

저는 이미 존재하기 때문에 이 Workspace를 이용하겠습니다. 

없으면 새로 만들면 됩니다. 

 

 

 

 

Create App 버튼을 누르면 아래와 같이 여러 기능들을 추가할 수 있습니다. 우선 Permissions를 클릭해 접근 권한을 가질 수 있도록 eccess token을 생성하도록 합니다. 

 

Permissions을 들어가 접근 권한 키를 생성합니다.

 

 

 

 

 

 

 

아래와 같은 창이 뜨는데 Install to Workspace라는 버튼을 클릭할 수 없습니다. 

아래의 Scopes의 bot Token에서 chating token을 생성하면 이 버튼을 클릭할 수 있는데 아래의 token을 생성하고 Install to Workspace 버튼을 클릭해주면 됩니다. 

 

 

위와 같은 창이 뜨는데 아래의 Scopes의 bot Token

 

 

 

char:write를 클릭합니다.

 

 

 

 

 

token을 생성하고 Install to Workspace 버튼을 클릭해주면 됩니다. 버튼을 클릭하면  아래와 같이 키가 생성됩니다.  이 token을 복사해서 추후에 파이썬에 token 값을 주고 채널에 이벤트를 보낼 수 있습니다. 

 

 

 

 

 

 

슬랙 채널에 생성하려면 Add channels를 클릭해 생성하면 됩니다. 

 

 

 

 

아래와 같이 채널이 생성됐습니다. 

 

 

방금 만든 app을 클릭해 넣어줍시다. 저 같은 경우는 미리 적용된 test_service가 보입니다. 여기서 자신의 App을 검색해 설정하면 됩니다. 

 

자신의 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처럼 사용한다면 매력적이겠죠.