슬랙에 메세지를 보내기 위해서는 슬랙에서 제공하는 api를 이용하는데, 지난번의 기상청 api와 마찬가지로 슬랙 api 를 이용하기 위해서는 인증토큰을 가지고 있어야 한다. 이번에는 인증 토큰을 받는것 부터 python을 이용하여 메세지를 보내는 것까지 해보려고 한다.
기본적인 슬랙 가입 및 채널 생성에 관련한 내용은 패스.
슬랙 api 토큰 받기
위 사이트로 들어가 로그인을 하고 Create an app 버튼을 클릭하여 챗봇에 사용될 bot을 만들어준다.
from scrach 를 누르고 다음 화면에서 내가 사용할 bot의 이름과 bot을 사용할 workspace를 선택해준다. 앱을 생성하고 나면 왼쪽 메뉴중 OAuth & Permissions 메뉴를 들어간다.
내리다 보면 Scope 라는 메뉴가 있는데, 이는 메뉴에서 bot 이 가지게 될 권한을 주게 된다.
원래 사용중인 bot의 권한 화면이라 이미 추가되어 있지만, 다른 권한 없이 chat:write 만 주면 메세지를 보내고 챗봇을 만드는데 충분하다.
최상단으로 올라가 install to workspace 를 눌러 진행하면 가장 필요한 bot user token을 얻게 된다. 이 값을 잘 저장해준다.
이제 워크스페이스로 돌아가 방금 만든 봇을 워크스페이스에 추가해준다.
위에서 만들었던 봇을 추가해주면 슬랙에서 설정할 것은 끝난다.
슬랙
슬랙에서 준 토큰은 외부에 노출이 되면 안되기 때문에, git 을 통해 자료가 공유되는 경우를 대비하여 secrets.json 파일로 만들어 관리하기로 한다. secrets.json 파일은 gitignore에 추가하여 공유되지 않도록 주의한다.
#secrets.json
{
"Token": "xoxb-...."
}
# slack.py
import json
import os
path = os.path.dirname(os.path.abspath(__file__))
def get_token():
try:
secret_file = path + "\secrets.json"
with open(secret_file) as f:
secrets = json.loads(f.read())
myToken = secrets["Token"]
return myToken
except:
return False
slack.py 파일을 만들고 secrets.json 파일을 같은 폴더에 두었다. get_token 함수를 통해 json 파일을 읽어 토큰을 가져오게 된다.
slack에 메세지를 보내는 방법은 slack 라이브러리를 이용하거나 slack_sdk 라이브러리를 이용하는 방법 등이 있지만, 따로 라이브러리 없이 requests만 이용해도 메세지를 보내는 것이 충분히 가능하다.
# slack.py
import requests
# 채널명, 내용을 입력받고, 토큰을 파일로부터 획득하여 해당 채널에 내용을 post
def to_slack(text, channel="#일반"):
myToken = get_token()
if not myToken:
return "No secret key! Message Failed."
response = requests.post(
"https://slack.com/api/chat.postMessage",
data={"token": myToken, "channel": channel, "text": text},
)
if response.status_code == 200:
return "Sucessfully Sent!"
else:
return "Message Failed while Posting.."
위와 같이 코드를 입력해준다. 아까 작성했던 get_token 함수로 토큰을 받아와주고, 슬랙에 보낼 text와 토큰, 그리고 메세지를 보낼 채널 이름을 data로 하여 post 해주면 메세지 보내기 성공이다.
편의를 위해 메세지가 보내졌는지 그렇지 않은지를 문장으로 return 해주었다.
정리
슬랙에 메세지를 보내는 법을 확인해보았다. 이제 채팅창에 입력되는 메세지를 구독하고, 메세지를 입력받아 적절한 대응을 메세지해주면 기본적인 챗봇 구성이 완료될 것 같다.
내용 관련하여 도움이나 조언 언제든 환영합니다!
'코딩 > PYTHON & DJANGO' 카테고리의 다른 글
[Python] 날씨 알림 슬랙 챗봇 만들기5 - 메시지를 인식하여 대답 보내기 (0) | 2022.07.07 |
---|---|
[Python] 날씨 알림 슬랙 챗봇 만들기4 - Django를 이용하여 채팅창 구독 (0) | 2022.07.07 |
[Python] 날씨 알림 슬랙 챗봇 만들기2 - 날씨 정보 받아오기(기상청 API) (0) | 2022.07.06 |
[Python] 날씨 알림 슬랙 챗봇 만들기1 - 날씨 정보 받아오기(기상청 API) (0) | 2022.07.06 |
Django REST framework 튜토리얼 따라하기 (0) | 2021.04.13 |
최근댓글