2020년 5월 10일 일요일

Slack bot 만들기 (classic 앱 만들기, post message) in python


간단한 slack bot 을 만들도록 하겠습니다.
slackbot 관련 해서 검색해보면 소스는 많지만 뭔가 동작이 안되는 것도 많은것 같고 자료가 예전것이라 동작이 안되는 부분도 많습니다.

시작 하기전 

slack bot - slack app에 대한 개념을 알고 시작하는것이 좋습니다. 
slack에서는 slack app이라는 것이 있으며 그중에 bot을 지원 하는 개념입니다. 또한 수신을 하기 위해서 검색 해보면 RTM이라는것이 있습니다. RTM real time message로서 최근 slack app에서는 지원하지 않습니다. 구글링에 많은 예제들이 RTM기반으로 되어 있습니다. 그렇기 때문에 app을 만들때 classic app으로 생성을 해줘야 합니다.  classic app을 만들었다고 하더라도 아무 버튼을 막 누르다 보면 다시 일반앱으로 업그레이드 되는 경우가 있고 한번 업그레이드가 되면 다시 돌릴 수가 없습니다. 따라서 상세 내용을 읽어보고 업그레이드 하시기 바랍니다.

Goal

특정 채널에 bot이 내용을 출력하는것이 이번 시간 목표입니다. 따라서 RTM을 사용하지 않지만 다음을 위해서 Classic type의 앱을 만들도록 합니다.


Classic 앱 만들기

(Classic 뜨는지 보고 생성할것)



Settings > Basic Information > Bots



Features > App Home > First, add a legacy bot user > Add Legacy Bot User
여기에서는 아래와 같이 추가하였습니다.
Display Name (Bot Name): Tester
Default Name: tester


Settings > Install App > Install App to Workspace
하고 나면 아래와 같은 화면이 나옵니다.

이중에 Bot User OAuth Access Token을 사용할 예정으로 복사해둡니다. (bot 토큰은 xoxb-XXXX 형태로 시작합니다.)
지금까지 Slack Bot은 준비되었습니다.


Bot Program

Python에서 Slacker 를 이용할 예정입니다.
설치는 pip install slacker 입니다.

C:\Users\USER\AppData\Local\Programs\Python\Python37\Scripts>pip install slacker
Collecting slacker
  Downloading slacker-0.14.0.tar.gz (10 kB)
Requirement already satisfied: requests>=2.2.1 in c:\users\user\appdata\local\programs\python\python37\lib\site-packages (from slacker) (2.22.0)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in c:\users\user\appdata\local\programs\python\python37\lib\site-packages (from requests>=2.2.1->slacker) (3.0.4)
Requirement already satisfied: idna<2.9,>=2.5 in c:\users\user\appdata\local\programs\python\python37\lib\site-packages (from requests>=2.2.1->slacker) (2.8)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\user\appdata\local\programs\python\python37\lib\site-packages (from requests>=2.2.1->slacker) (2019.6.16)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in c:\users\user\appdata\local\programs\python\python37\lib\site-packages (from requests>=2.2.1->slacker) (1.25.3)
Installing collected packages: slacker
    Running setup.py install for slacker ... done
Successfully installed slacker-0.14.0
WARNING: You are using pip version 20.0.2; however, version 20.1 is available.
You should consider upgrading via the 'c:\users\user\appdata\local\programs\python\python37\python.exe -m pip install --upgrade pip' command.


작성한 소스 코드

from slacker import Slacker

slack = Slacker('xoxb-XXXXXXX')

# Send a message to #general channel
slack.chat.post_message('#general', 'Hello fellow slackers!')

실행 화면

위 소스는 #general 채널에 문구를 출력하는 소스로 #general 의 경우 기본으로 속해있는 채널입니다.

다음에는 슬랙에서 오는 문구에 따른 동작을 하기 위한 RTM 메세지 처리하는 부분을 진행하도록 하겠습니다.





댓글 없음:

댓글 쓰기