Slackメッセージを送信する
PythonでSlackにメッセージを送信するのは簡単です!
Slackチャネルにメッセージを送信することは、システムで発生しているイベントについて通知を受けるための優れたオプションです。通知にまだ電子メールを使用している場合は…しないでください。スラックは、従来の方法よりも人々に通知するのにはるかに適しています。トピックごとにSlackチャネルを整理すると、関心のあるチャネルをサブスクライブし、先に進んでそのプロジェクトに参加しなくなったときにサブスクライブを解除できます。 Slackを使用すると、チャネルのすべてのメンバーに強制的に通知することもできます。これにより、モバイルクライアントが構成されている場合、テキストメッセージのようにアラートが発生する可能性があります。
次のスクリプトは、特定のチャネルにSlackメッセージを送信するためのコマンドラインツールとして使用できます。
まず、 Slackの着信WebhookURLを取得する必要があります。そのURLは、実際にはPOSTリクエストを介して特定のチャネルに投稿できる単なる「魔法のURL」であり、ヘッダーや認証は必要ありません。明らかに、たとえばPython暗号化ライブラリを使用して、慎重に保護する必要があります。この例では、 SLACK_WEBHOOK_URLという名前の環境変数を使用します。これは、プロトコルhttps://...を含むSlackによって提供されるURL全体です。
このWebサイトのコードサンプルは、 LGPLv3ライセンスの下で提供されています。このコードを使用することにより、このライセンス契約の条件に同意したことになります。
#!/ usr / bin / env python3
#-*-コーディング:utf-8-*-
'''
特定のSlackチャネルに通知を送信します
'''
#インポート################################################ #################
from __future__ import print_function
#将来のインポートからstandard_library
#standard_library.install_aliases()
#組み込みのインポート入力から
argparseをインポートします
インポートリクエスト
jsonをインポートする
sysをインポート
OSのインポート
__author__ = "Videre Research、LLC"
#グローバル################################################ ###############
webhookURL = os.getenv('SLACK_WEBHOOK_URL'、'')
# 機能 ################################################ #############
def main():
"""主な機能。"""
if os.getenv('SLACK_WEBHOOK_URL'、'')== "":
print('環境変数SLACK_WEBHOOK_URLが設定されていません')
sys.exit(1)
webhookURL.startswith('https://hooks.slack.com/services/')をアサートします
parser = argparse.ArgumentParser()
parser.add_argument(
'-t'、'--title'、action ='store'、
required = True、
help ='Slack投稿のタイトル行(マークアップを含めることができます)。'
)。
parser.add_argument(
'-b'、'--body'、action ='store'、
required = True、
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:'、required = False、
help ='投稿とともに表示するアイコン(組み込みの絵文字)。デフォルトは::speaking_head_in_silhouette:。'
)。
parser.add_argument(
'-c'、'--color'、action ='store'、
default = '36a64f'、required = False、
help='投稿コンテンツの16進カラーコード。デフォルトは36a64fです。'
)。
args = parser.parse_args()
headers = {'Content-Type':'application / json'、'Accept':'application / json'}
データ={
"ユーザー名": "SlackPost"、
"icon_emoji":args.icon、
"テキスト":args.title、
「添付ファイル」:[
{{
「フォールバック」:args.body、
「色」:args.color、
「テキスト」:args.body
}
]
}
試す:
r = requests.request(method ='POST'、url = webhookURL、data = json.dumps(data)、headers = headers、timeout = 25)
r.status_code == 200の場合:
応答=r.content
印刷(応答)
そうしないと:
print('エラー:')
print(r.status_code)
print(r.headers)
print(r.text)
print(sys.exc_info()[:2])
sys.exit(1)
eとしての例外を除く:
print( "Error {0}" .format(str(e)))
sys.exit(1)
sys.exit(0)
#################################################### #############################
__name__ == "__main__"の場合:
主要()
#ENDOFFILE ################################################ ##############
コマンドラインツールの使用
'-h'パラメーターを使用してスクリプトを呼び出すとわかるように、必要なパラメーターは、スラックポストのタイトルの「-t」と本文の「-b」の2つだけです。必要に応じて他のパラメータを指定することも、スクリプト自体のデフォルトを変更することもできます。
本文で「 <!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、-userUSER投稿とともに表示するユーザー名。デフォルトはSlack-
ボット。
-i ICON、-icon投稿とともに表示するICONアイコン(組み込みの絵文字)、
デフォルトは::speaking_head_in_silhouette:。
-c COLOR、-color COLOR
投稿コンテンツの16進カラーコード。デフォルトは次のとおりです。
36a64f。
Tagged with:
notification