Slack 메시지 보내기
Python으로 Slack에 메시지를 보내는 것은 쉽습니다!
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.
Tagged with:
notification