일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Redshift
- hive
- Tkinter
- array
- 파이썬
- Java
- Python
- list
- numpy
- django
- Excel
- Mac
- string
- math
- Google Spreadsheet
- google apps script
- SQL
- Google Excel
- PySpark
- GIT
- Apache
- gas
- Github
- PANDAS
- Kotlin
- matplotlib
- c#
- dataframe
- PostgreSQL
- Today
- Total
달나라 노트
Python Slack API : slack_sdk library와 Webhook URL을 사용해서 slack bot으로 message 보내기 (WebhookClient, Slack API, Slack Webhook URL) 본문
Python Slack API : slack_sdk library와 Webhook URL을 사용해서 slack bot으로 message 보내기 (WebhookClient, Slack API, Slack Webhook URL)
CosmosProject 2021. 9. 30. 22:48
Slack API 등록, Slack Webhook 등록, Slack App 생성, Slack App 설치 Link
slack_sdk library와 slack token을 사용해서 slack bot으로 message 보내기 Link
Slack에 message를 보낼 땐 Slack token이 아닌 Slack webhook url을 사용할 수도 있습니다.
이 방법을 사용하면 token은 필요없습니다.
webhook url은 Slack API 관리페이지에서 왼쪽 navigation bar에서 Incomin Webhooks를 이용하면 각 채널별로 Webhook URL을 찾을 수 있습니다.
from slack_sdk import WebhookClient
from slack_sdk.errors import SlackApiError
webhook_url = 'https://hooks.slack.com/services/AAA'
slack_webhook = WebhookClient(url=webhook_url)
msg = '''
This is test message using slack webhook
line 1
line 2
'''
try:
response = slack_webhook.send(text=msg)
except SlackApiError as e:
print(e)
그리고 코드를 위처럼 적으면 됩니다.
token을 이용할때와 다른 점은 slack_sdk library의 WebhookClient를 사용했다는 것이죠.
위 코드를 실행하면 이처럼 메세지가 잘 전송되는 것을 볼 수 있습니다.
Slack message에 mark down formatting을 적용할 수도 있습니다.
다음 코드를 봅시다.
from slack_sdk import WebhookClient
from slack_sdk.errors import SlackApiError
webhook_url = 'https://hooks.slack.com/services/AAA'
slack_webhook = WebhookClient(url=webhook_url)
mrkdwn_text = '''
This is test message.
> Block quote
*Bold text*
```
code block - line 1
code block - line 2\ncode block - line 3
```
`highlight`
_italicize_
~Strikethrough~
<https://www.google.com|This is link to google.com>
'''
try:
response = slack_webhook.send(
blocks=[
{
'type': 'section',
'text': {
'type': 'mrkdwn',
'text': mrkdwn_text
}
}
]
)
print(response.status_code)
print(response.body)
except SlackApiError as e:
print(e)
위 코드에서 다른 점은 slack_webhook의 send method를 이용해 텍스트를 전송할 때 text가 아니라 blocks를 사용헀습니다.
blocks에서 중요한건 list 안에 dictionary의 형태로 전송할 정보를 넣는다는 것입니다.
또한 text에서 type을 보면 mrkdwn이라고 되어있으며 이것은 markdown을 의미합니다.
그리고 mrkdown_text라는 변수에 슬랙에 전송할 markdown 형태로 적힌 text를 적어놨습니다.
>, |, **, ~~ 등을 이용하면 텍스트를 bold체로 만든다던지 등의 여러 효과가 가능합니다.
<link_url|showing_text>를 이용하면 링크도 걸 수 있죠.
Slack markdown formatting에 대한 자세한 내용은 아래 링크를 참고하면 됩니다.
그리고 위 코드의 결과를 보면 아래 이미지와 같습니다.
원하는대로 markdown formatting이 된 것이 보여지며
그냥 텍스트만 보낼 때 보다 위같은 format들을 이용하면 더 가독성 좋은 메세지를 만들 수 있습니다.
...
print(response.status_code)
print(response.body)
...
위 부분은 slack_sdk를 이용하여 메세지를 보냈을 때 그 결과에 대한 상태값입니다.
필수적인 부분은 아니므로 무시해도 됩니다.
Slack API 등록, Slack Webhook 등록, Slack App 생성, Slack App 설치 Link
slack_sdk library와 slack token을 사용해서 slack bot으로 message 보내기 Link
참고 문서
slackclient library = https://slack.dev/python-slackclient/
slack_sdk library = https://pypi.org/project/slack-sdk/s
slack_sdk library example = https://ichi.pro/ko/slackbot-eul-mandeul-eo-bobsida-45570799171009