はじめてのPythonでSlackとつながってみる

  • 環境
    • OS : macOS Mojave バージョン10.14.1
    • Slack : Web版
    • ブラウザ : Chrome バージョン: 70.0.3538.102
    • curl : 7.54.0 (x86_64-apple-darwin18.0)
    • Python : 3.6.5

ponsuke-tarou.hatenablog.com

SlackAPIってなんだ?

api.slack.com

よくわからないでSlackのIncoming Webhooksを実際に使ってみます。

とりあえず概要だけ見ておきます。

Webhookとは?

  • アプリケーションの更新情報を他のアプリケーションへリアルタイム提供する仕組みや概念のこと。
  • イベント(リポジトリにプッシュなど)発生時、指定したURLにPOSTリクエストする仕組みのこと。

Webhookの説明を見ると「通知する、Webhookを送る」などの言葉が用いられているが、
これはPOSTリクエストのことを指している。
Webhookとは? - Qiita

じゃ、SlackのIncoming Webhooksって?
get.slack.help

1. Webhockする用のAppを用意する

  1. f:id:ponsuke_tarou:20181121234139p:plain
  2. f:id:ponsuke_tarou:20181121234258p:plain
  3. f:id:ponsuke_tarou:20181121234453p:plain
  4. f:id:ponsuke_tarou:20181121234745p:plain
  5. f:id:ponsuke_tarou:20181121234657p:plain
    [App Name]を入力 > [Department Slack Workspace]を選択 > [Create App]ボタンを押下
  6. f:id:ponsuke_tarou:20181121235053p:plain
    [Incoming Webhooks]を「ON」にする
  7. f:id:ponsuke_tarou:20181121235446p:plain
    同じページの下にある[Add New Webhoock To Workspace]を押下
  8. f:id:ponsuke_tarou:20181127190644p:plainf:id:ponsuke_tarou:20181127190702p:plain

2. Incoming Webhooksを設定する

Incoming Webhooksを設定する

以下サイトの[Incoming Webhooksのエンドポイントを取得する]に従ってIncoming Webhooksを設定する
qiita.com
f:id:ponsuke_tarou:20181127203106p:plain

ちょっと使ってみる

Webhoock URLをゲットする

f:id:ponsuke_tarou:20181127215902p:plain

いろんなプロトコルでデータ転送してくれる curl コマンドを使う

Windowsではインストールが必要
qiita.com

Termialでcurlコマンドを使ってメッセージを送ってみる
# -X <method> : HTTP メソッドの指定
# --data-urlencode name=content : contentをURLエンコードする
curl -X POST --data-urlencode "payload={\"text\": \"初めてWebhoockでメッセージを送信します。\" }" [コピーしたWebhoock URL]

f:id:ponsuke_tarou:20181127222910p:plain
メッセージが届いた。

3. PythonでIncoming Webhooksを使ってSlackにメッセージを送ってみる

Pythonのインターネットにアクセスできる外部モジュール「Requests」をインストールする

ponsuke-tarou.hatenablog.com

Requestsを使ってPythonでメッセージを送ってみる

slack_webhook.pyというPythonのファイルを作って実行すると簡単にできた。

import json, requests

WEB_HOOK_URL = "https://hooks.slack.com/services/"
WEB_HOOK_URL += "WebhookURLの後半"
requests.post(WEB_HOOK_URL, data=json.dumps({
    'text': 'PythonでIncoming Webhooksを使ってSlackにメッセージを送ってみる.',
}))
# 作ったコードを実行する。
python3 slack_webhook.py

f:id:ponsuke_tarou:20190105145837p:plain
送られてきたメッセージ

もう少し使ってみる

slack_webhook.pyというPythonのファイルを作って実行するともう少し楽しいメッセージが送信できた。

はじめてのPythonでSlackとつながってみる

f:id:ponsuke_tarou:20190105171241p:plain
もう少し楽しいメッセージが送信できる。

参考にしたサイト

qiita.com
qiita.com


うまく行かなかったこと

リクエストにTokenがなくて not_authed が返却されました。

よくわからないでブラウザのURL欄に https://otsecbsol.slack.com/api/conversations.createと入力してみました・・・。

{"ok":false,"error":"not_authed"}


f:id:ponsuke_tarou:20181128002041j:plain