1. ref
- slack api app: https://api.slack.com/apps
- Web API methods: https://api.slack.com/methods
- chat.postMessage 문서: https://api.slack.com/methods/chat.postMessage
- slack message block template 생성 사이트: https://app.slack.com/block-kit-builder
2. slack bot 설정
https://api.slack.com/apps
Create New App -> From scratch
App Name: test-bot
// bot이 배포될 workspace명 확인 필요.
Pick a workspace to develop your app in: "workspace 명" 선택
Create App
- app 설정
app 설정화면에서.- Add features and functionality: Bots 선택
Bots app이 생성되고.
Feature -> App Home 화면으로 자동 이동함. - bot이 사용할 수 있는 권한을 Scopes에서 부여한다.
Review Scopes to Add 선택
OAuth & Permissions 화면 표시됨. - bot이 사용할 수 있는 권한을 Scopes에서 부여한다.
// OAuth로 로그인 한 경우 사용할 권한.
Add an OAuth Scope 선택 후 필요한 권한 추가
chat:write // Send messages as test-bot - OAuth Tokens for Your Workspace
Install to Workspace 선택
bot이 동작할 workspace에서 test-bot이 접근하기 위한 권한을 허가할 지 확인하다. -> 허용.
다시 test-bot app 화면으로 돌아오고
Bot User OAuth Token: xoxb-XXXXXXX 이 표시된다.
이 token은 bot 사용자가 bot을 사용할 때 활용된다.
- Add features and functionality: Bots 선택
- slack에 로그인 하면 생성한 bot(test-bot)이 보인다.
bot을 선택 후 testbot v를 선택해서 test-bot이 활동할 채널을 추가해 준다.
해당 채널에 bot 추가 메시지가 표시된다.
test-bot 앱
XXX님에 의해 test-channel에 추가되었습니다.
1. python에서 bot을 이용 slack 채널로 단순 메시지 보내기
- slack Bot OAuth Token 확인
https://api.slack.com/ -> Your apps -> bot 선택(test-bot) -> OAuth & Permissions(Features) -> Bot User OAuth Token 확인. xoxb-XXXXXX - channel ID 확인
slack에서 test-bot이 추가된 channel을 열고 맨 위에 '채널명 v'를 누르면 창이 뜨는데 맨 하단에서 채널 ID 확인. CXXXXXXXXX - python 환경에 slack_sdk 설치
- slack sdk를 활용하여 bot을 이용한 channel 메시지 남기기.
pip install slack_sdk
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
slack_token = "xoxb-XXXXXXXXXXXXXXXXXX" # Bot OAuth Token
client = WebClient(token=slack_token)
try:
response = client.chat_postMessage(
channel="CXXXXXXX",
text="hello slack world"
)
except SlackApiError as e:
assert e.response["error"]
1. slack 메시지 가공
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
slack_token = "xoxb-XXXXXXXXXXXXXXXXXX" # Bot OAuth Token
client = WebClient(token=slack_token)
block = [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": '내용1',
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "내용2",
}
},
]
try:
response = client.chat_postMessage(
channel="CXXXXXXX",
blocks=block,
)
except SlackApiError as e:
assert e.response["error"]
이외에도 https://app.slack.com/block-kit-builder 에서 다양한 template을 생성할 수 있다.