豊橋技術科学大学の近藤です。
Slackで自動的に発言するBotを作る機会があったので、
簡単にまとめてみました。
POSTに用いるURLの取得
Webhook URL :
Configure Integrations(左チーム名のドロップダウン)
-> Incomig WebHooks(下の方)
-> チャンネルを選んで、Add Incoming Webhook Integrationを選択
-> Webhook URL
チャンネルは、どれを選んでも後で指定できる
要するにデフォルトがこのページで設定できる
チャンネルIDの取得
全てのチャンネルのWebhook URLを取得するのは面倒。
チャンネルのIDを取得すると、一つで大丈夫。
手動で取得:
チャンネル名のドロップダウン
-> Add a service integration... のURLに書いてある
これが一番速いと思う
POSTして取得:
(例:'#channel', '@username')
発言する
POSTするデータ:
attachmentsを使うと、テキストの左側にラインがつく。色を変えたりできる。
このデータをjsonに変換して送ると、指定したチャンネルに出力される。
requests.post(Webhook URL, data=json.dumps(data))
以上、slack bot作成まとめでした。
Slackで自動的に発言するBotを作る機会があったので、
簡単にまとめてみました。
POSTに用いるURLの取得
Webhook URL :
Configure Integrations(左チーム名のドロップダウン)
-> Incomig WebHooks(下の方)
-> チャンネルを選んで、Add Incoming Webhook Integrationを選択
-> Webhook URL
チャンネルは、どれを選んでも後で指定できる
要するにデフォルトがこのページで設定できる
チャンネルIDの取得
全てのチャンネルのWebhook URLを取得するのは面倒。
チャンネルのIDを取得すると、一つで大丈夫。
手動で取得:
チャンネル名のドロップダウン
-> Add a service integration... のURLに書いてある
これが一番速いと思う
POSTして取得:
- API Tokenを取得 https://api.slack.com/web
- POSTして、jsonのデータを取得
XXX - データを取り出す
r = requests.get(Webhook URL, params={'token': api_token}, verify=False)↵ for channel in json.loads(r.content)['channels']: id = channel['id'] name = channel['name']
(例:'#channel', '@username')
発言する
POSTするデータ:
data = { 'channel': CHANNEL_ID, # ここに、チャンネル名、ユーザ名を指定してもOK 'username': 'Mr.BOT', 'icon_url': Icon URL, 'icon_emoji': ':smile:', #(チートシート:http://www.emoji-cheat-sheet.com/) 'text': 'hoge', 'attachments': [attachment, ], }iconはemojiが優先、attachments 内のテキストは、textの下に出る。
attachmentsを使うと、テキストの左側にラインがつく。色を変えたりできる。
attachment = { 'fallback': 'fuga', # attachmentsの表示ができない端末用の文字列 'pretext': 'piyo', # attachmentの上にtextと同じように出力 'color' : '#00FF00', # Hexのほかに、'good', 'warning', 'danger'が使用可能 'title': 'タイトル', 'title_link': URL, # タイトルにつけるリンク 'text' : 'hogehoge', 'fields': [field, ], # 著者の表示など、引用で使えるもの 'author_name' : '@Mr.Author', 'author_link' : URL, # ユーザ名につけるリンク 名前がないと使えない 'author_icon' : Icon URL, # emojiは使えない 名前がないと使えない }textの下に、fieldsに入れたフィールドが展開される。
field = { 'title': 'フィールドタイトル', 'value': 'フィールドテキスト', 'short': True, # Trueだと、2段組みになる }
このデータをjsonに変換して送ると、指定したチャンネルに出力される。
requests.post(Webhook URL, data=json.dumps(data))
以上、slack bot作成まとめでした。
このコメントはブログの管理者によって削除されました。
返信削除