Slack 메시지 보내기

Python으로 Slack에 메시지를 보내는 것은 쉽습니다!

C05348A3-9AB8-42C9-A6E0-81DB3AC59FEB
           

Slack 채널에 메시지를 보내는 것은 시스템에서 발생하는 이벤트에 대해 알림을 받을 수 있는 훌륭한 옵션입니다. 알림을 위해 여전히 이메일을 사용하고 있다면... 그러지 마세요. 사람들에게 알리는 데는 전통적인 방법보다 slack이 훨씬 더 적합합니다. slack 채널을 주제별로 정리하면 사람들이 관심 있는 채널을 구독할 수 있고, 해당 프로젝트로 이동하여 더 이상 해당 프로젝트에 참여하지 않을 때 구독을 취소할 수 있습니다. 또한 Slack을 사용하면 채널의 모든 구성원에게 강제로 알릴 수 있습니다. 사람들이 모바일 클라이언트를 구성한 경우 문자 메시지와 같은 경고가 발생할 수 있습니다.

다음 스크립트를 명령줄 도구로 사용하여 특정 채널에 여유 메시지를 보낼 수 있습니다.

먼저 Slack 수신 Webhook URL 을 가져와야 합니다. 이 URL은 헤더나 인증이 필요하지 않은 POST 요청을 통해 특정 채널에 게시할 수 있는 "마법의 URL"일 뿐입니다. 분명히, 예를 들어 Python 암호화 라이브러리를 사용하여 매우 조심스럽게 보호해야 합니다. 이 예제에서는 프로토콜 https://...를 포함하여 Slack에서 제공하는 전체 URL인 SLACK_WEBHOOK_URL 이라는 환경 변수를 사용합니다.


이 웹사이트의 코드 샘플은 LGPL v3 라이선스에 따라 제공됩니다. 이 코드를 사용하면 이 라이센스 계약의 조건에 동의하는 것입니다.

#!/usr/bin/env python3
 # -*- 코딩: utf-8 -*-

 '''
 주어진 Slack 채널에 알림을 보냅니다.
 '''

 # 수입품 ################################################# ###############

 __future__에서 import print_function
 # 향후 import standard_library에서
 # standard_library.install_aliases()
 # 내장 가져오기 입력에서
 가져오기 argparse
 가져오기 요청
 json 가져오기
 수입 시스템
 수입 OS


 __author__ = "Videre Research, LLC"

 # 글로벌 ################################################# ###############

 webhookURL = os.getenv('SLACK_WEBHOOK_URL', '')

 # 기능 ################################################ ############


 def 메인():
 """주요 기능."""
 os.getenv('SLACK_WEBHOOK_URL', '') == ""인 경우:
 print('환경변수 SLACK_WEBHOOK_URL이 설정되지 않았습니다')
 sys.exit(1)

 주장 webhookURL.startswith('https://hooks.slack.com/services/')

 파서 = argparse.ArgumentParser()
 parser.add_argument(
 '-t', '--title', action='store',
 필수=참,
 help='Slack 게시물의 제목 줄(마크업을 포함할 수 있음).'
 )
 parser.add_argument(
 '-b', '--바디', 액션='저장',
 필수=참,
 help='Slack 게시물의 본문(마크업을 포함할 수 없음).'
 )
 parser.add_argument(
 '-u', '--user', action='store',
 default=':Slack-Bot:', required=False,
 help='게시물과 함께 표시할 사용자 이름, 기본값: Slack-Bot.'
 )
 parser.add_argument(
 '-i', '--icon', action='store',
 default=':speaking_head_in_silhouette:', 필수=거짓,
 help='글과 함께 표시할 아이콘(내장 이모티콘), 기본값: :speaking_head_in_silhouette:.'
 )
 parser.add_argument(
 '-c','--색상', 작업='저장',
 기본값='36a64f', 필수=거짓,
 help='게시물 콘텐츠의 16진수 색상 코드, 기본값: 36a64f.'
 )
 인수 = parser.parse_args()

 헤더 = {'콘텐츠 유형': '응용 프로그램/json', '수락': '응용 프로그램/json'}
 데이터 = {
 "사용자 이름": "SlackPost",
 "icon_emoji": args.icon,
 "텍스트": args.title,
 "첨부 파일": [
 {
 "대체": args.body,
 "색상": args.color,
 "텍스트": args.body
 }
 ]
 }

 노력하다:
 r = 요청.요청(메소드='POST', url=webhookURL, 데이터=json.dumps(데이터), 헤더=헤더, 시간 초과=25)
 r.status_code == 200인 경우:
 응답 = r.content
 인쇄(응답)
 또 다른:
 print('오류:')
 인쇄(r.status_code)
 인쇄(r.headers)
 인쇄(r.text)
 인쇄(sys.exc_info()[:2])
 sys.exit(1)
 예외를 제외하고 e:
 print("오류 {0}".format(str(e)))
 sys.exit(1)

 sys.exit(0)

 #################################################### ##############################

 __name__ == "__main__"인 경우:
 기본()

 # ENDOFFILE ################################################# #######

명령줄 도구 사용

'-h' 매개변수를 사용하여 스크립트를 호출하면 알 수 있듯이 필요한 두 매개변수는 슬랙 게시물 제목의 "-t"와 본문의 "-b"뿐입니다. 스크립트 자체에서 기본값을 변경하거나 원하는 경우 다른 매개변수를 지정할 수 있습니다.

본문에서 ' <!channel|channel> '을 사용하여 해당 채널의 모든 활성 사용자에게 경고할 수 있습니다(@channel과 동일). 가능하면 @here를 사용하지 마십시오.

여유롭게(물론 비유적으로), 책임감 있게 사용하세요!

python3 send_slack.py -h
 사용법: __main__.py [-h] -t TITLE -b BODY [-u USER] [-i ICON] [-c COLOR]

 선택적 인수:
 -h, --help 이 도움말 메시지를 표시하고 종료
 -t TITLE, --title TITLE
 Slack 게시물의 제목 줄(마크업을 포함할 수 있음).
 -b BODY, --body BODY Slack 게시물의 본문입니다(마크업을 포함할 수 없음).
 -u USER, --user USER 게시물과 함께 표시할 사용자 이름, 기본값: Slack-
 봇.
 -i ICON, --icon 게시물과 함께 표시할 ICON 아이콘(내장 이모티콘),
 기본값: :Speaking_head_in_silhouette:.
 -c 색상, --색상 색상
 게시물 콘텐츠의 16진수 색상 코드, 기본값:
 36a64f.
댓글을 게시했습니다: 0

Tagged with:
notification