Web에서 일어나는 이벤트(회원 가입, 문의 등)를 Slack에서 이벤트로 받아보고 싶을 수 있다. (그래야만 한다. 안 궁금하면 어쩔 수 없고...) 한번 해보자
Slack
Slack Webhook 생성하기
1. 우선 App을 생성하자
2. 해당 화면에서 From scrath를 선택하자
From an app manifest는 Slack 공식 문서에선 다음과 같이 설명한다.
매니페스트는 Slack 앱용 YAML 또는 JSON 형식의 구성 번들입니다. 매니페스트를 사용하면 UI 또는 API를 사용하여 사전 정의된 구성으로 앱을 만들거나 기존 앱의 구성을 조정할 수 있습니다.
매니페스트를 공유하고 재사용할 수 있으므로 프로덕션 앱의 개발 복제본을 만드는 간단한 방법이 제공됩니다.
다음에 자세히 살펴보자(우선 넘어가자)
3. 여기서 App Name과 workspace를 설정하자.
4.그리고 Webhooks를 선택하자. 내가 하려는 건 웹에서 일어나는 이벤트를 알려는 거니까
우측 상단에 On으로 토글을 표시하고 Add New Webhook to Workspace 가 나오는데 알림을 받고자 하는 채널을 설정하고 Sample Url을 보내면 해당 채널로 메시지가 온다
잘 보내진 것을 확인했다. 그러면 Webhook Url(Sample 말고)을 Copy 해놓고 장고에 붙여보자
Django
Django 세팅
기본적으로 장고에 대한 이해가 있다고 가정한다.
Django 프로젝트 생성한 뒤의 모습이다.
Django와 Slack 연동하기
간단하게 유저 정보를 저장하는 로직을 짜고 여기서 정보가 저장되면 Slack으로 메시지가 오도록 만들었다
from slack_sdk.webhook import WebhookClient
slack_url = '...'
webhook = WebhookClient(slack_url)
def post(request):
if request.method == 'POST':
...
response = webhook.send(
text='유저가 가입했습니다.',
)
...
그리고 POST를 날리면 슬랙에 알림이 오는 걸 확인할 수 있다.
참고
https://slack.dev/python-slack-sdk/webhook/index.html
Webhook Client — Python Slack SDK
RetryHandler With the default settings, only ConnectionErrorRetryHandler with its default configuration (=only one retry in the manner of exponential backoff and jitter) is enabled. The retry handler retries if an API client encounters a connectivity-relat
slack.dev