UTALI

みんなの役に立つ情報をどんどん公開していきます

Slackで自動投稿するBOTを作ってみた

SlackはよくあるチャットアプリだけどLineよりもエンジニア向けのツールになっている。例えばBOTを作成して自動的に通知させることができるなど。

たとえば、サーバーを死活監視するスクリプトと組み合わせて通知させることができる。

www.utali.io

ここではアクセストークンを取得してある前提で話を進める。

slack_bot.py

# -*- coding: utf-8 -*-

import urllib3
import certifi
import sys

argvs = sys.argv

http = urllib3.PoolManager()
https = urllib3.PoolManager(
                           cert_reqs='CERT_REQUIRED', # Force certificate check.
                           ca_certs=certifi.where(),  # Path to the Certifi bundle.
                           )

def slack_message(message):

    url = 'https://slack.com/api/chat.postMessage?token=hq4h54jhq45jh45jh945jh240509&channel=GH2424GR&text="' + message + '"&pretty=1&username="Watch"'

    res = https.request('GET',url)

    return True

if __name__ == "__main__":

    slack_message(argvs[1])

大事なのはurlの部分でここの文法を間違えるとうまくいかない

構文

url = 'https://slack.com/api/chat.postMessage?token={アクセストークン}&channel={チャンネルのID}&text={投稿したい内容}&username={通知するユーザー名}

アクセストークン

事前に取得する。テストトークンは簡単に発行できるが、本番ではOAuthで発行するのが良い。

チャンネル

Slackではチャンネルを分けることができる。

ボットのユーザー名

適当に選んでください

使い方

slack_bot.pyの後に通知したいメッセージを置く

python3 slack_bot.py Hello

こうすると

f:id:mochizuki_p:20160926205931p:plain

うまくいった。

単純な機能だけど組み合わせ次第では無限の可能性があると思う。 とりあえず自分はサーバ監視に使ってます。