Slack 봇 만들기, 메시지 보내기

조성현·2021년 1월 16일
2

정글

목록 보기
12/21

특정 시간이 되면 메시지를 보내는 slack 봇을 만드는 사이드 프로젝트를 진행중이다.

📕 Slack 봇 생성하기

먼저 slack api 에서 app을 생성해 봇을 만든다.
[링크] https://api.slack.com/apps

앱 생성 버튼을 누른다.

앱 이름을 작성하고, 작업환경을 선택한다.

앱의 기능을 Bots으로 선택한다.

Riview Scopes to Add 버튼을 눌러 앱 권한을 설정한다.

스크롤을 내려 scopes 부분에 Add an OAuth Scope 버튼을 눌러 권한을 추가해준다.
[링크] https://api.slack.com/methods 에 가면 각 기능에 대한 설명과 필요 권한이 나와있다.
[링크] https://api.slack.com/methods/chat.postMessage 지금 구현하는 기능은 메시지 보내기 기능으로 필요한 권한은 chat::write 이다.


권한을 선택하면 위에 install to workspace 버튼이 활성화 되고, 활성화시키면 토큰을 얻을 수 있다. 이 Access token은 이후 파이썬에 request를 보낼 때 사용된다.

slack에서 원하는 채널에서 세부정보->더보기->앱 추가 에서 만들어진 앱을 추가해둔다.

📕 Slack 봇으로 메시지 보내기

slack library를 설치해서 메시지를 보낼 수도 있고,
[링크] https://github.com/slackapi/python-slack-sdk

위에서 발급 받은 토큰을 활용하는 slack api를 사용할 수 있다.
[링크] https://api.slack.com/

api를 사용하기 위해서 파이썬에서 json과 request를 import한다.

import json
import requests

발급받은 토큰을 문자열로 저장한다.

slack_token = "발급받은 토큰 주소"

채널 id를 문자열로 저장한다. 채널 id는 slack 채널에서의 url을 보면 알 수 있다.
예를 들어 내가 접속해 있는 채널의 url을 보면,

여기서 T로 시작하는 값이 Team id 이고, C로 시작하는 값이 Channel id이다. 만약 비공개 채널이라면 이곳에 G로 시작하는 Group id가 있을 것이다. 비공개 채널로 메시지를 보내려면 Group id를 입력하면 된다.

channel_id = "메시지를 보낼 채널 주소(그룹 주소)"

입력할 메시지를 문자열로 저장한다.

message = "메시지"

위 정보들을 json 형식으로 저장한다.

data = {'Content-Type': 'application/x-www-form-urlencoded',
        'token': slack_token,
        'channel': channel_id, 
        'text': message
        } 

json 데이터를 url에 request 한다. url주소와 보내야할 json 데이터들은 링크에 나와있다.
[링크] https://api.slack.com/methods/chat.postMessage

URL = "https://slack.com/api/chat.postMessage"
res = requests.post(URL, data=data)

profile
Jazzing👨‍💻

0개의 댓글