Djangoで作ったアプリとSlackアプリを連携させてみようと思う

Django(Python)で作成したWebアプリ「Fuzzz」とSlackアプリを連携してみようと思う。できるかどうかは分かりませんが。

Slackを使っていてよく感じるのは、メールないわな~って事。Trelloだったりカレンダーだったり、このブログでもお世話になっているWordPressも全部Slackに通知が来る。

「Slackと連携できないアプリないわ~」って、俺が作ったのがそうじゃねwwwと

目標としては

Fuzzzって、スケジュール調整Webアプリなんです。

調整したい人たちに、都合を〇×で入力してもらうんですが、それの連絡が面倒なんですよね。

  1. スケジュール調整したいんで、都合入れてくれるかな??
  2. 都合入力しといたよ~
  3. この日に決めたんで!

この3つぐらいかな。今思いつくのは。

これだけ、Slackに通知されるだけでも、なかなか便利そう。

とりあえず今回は、

Pythonから、SlackにMessageをPostするところまで試してみました。

続きは、後程。。。

まーまずは、Slack側でアプリ登録

登録

Slackのアプリ新規登録の画面へ

https://api.slack.com/apps?new_app=1

Create a Slack Appのウインドウが、表示されるので

  • App Name ※後で変更可能みたい
  • Development Slack Workspace ※こっちは変更できず。。

を入力して、Crate APPクリック

一旦、登録まではできたみたい

アプリの設定を

今回は、Webアプリからの通知をSlackで受け取りたいので、Incoming Webhooksをクリック

なんか添付なんてのもできるみたい。

ま、スイッチをONにします。

権限を追加しておきます

OAuth & Permissionsに行って、

下にスライドしていって、Scopes

ここで、Add an OAuth Scopeをクリックして

chat:writeを選択。

これでチャンネルに対して、通知を書き込めます。

apiをWorkspaceにインストール

左メニューのInstall Appをクリック

でてきた、Install App to Workspaceボタンをクリック

リクエスト承認ページが表示されるので、

下のドロップダウンで通知に使うチャンネルを選択

その後、許可するボタンをクリック

インストールが無事できたようです。

動くかテストしときましょう

ここで、チャンネルに対して、メッセージをPostできるか確認しておきましょう。

https://api.slack.com/methods/chat.postMessage/test

Or, provide your own token: の所に、OAuth & Permissionsの所にあったTokenをコピペ

channel のと頃は、メッセージをPostしたいChannel名を入力

Textの所に、投稿したいメッセージを

そして、下の方にあるTest Methodボタンをクリック。

をぉ~でましたね。よしよし

Pythonからメッセージを投稿してみる

準備

まずは、プログラムを動作させる環境にslackclientをPipしときましょう。

実装 Python

インポートして

import slackweb

TOKENはこんな感じで持っておいて

SLACK_API_TOKEN='******'  ← OAuth & Permissionsの所にあったToken

メッセージPost

response = client.chat_postMessage(
    channel = '#Channel_name', # PostするChannel名
    text = "Postメッセージ"     # Postするメッセージ
)

assert response["ok"]

これで、メッセージをPostできます。

その他の操作 (備忘)

自分で作成したslack apiを表示

slack api で作成したapiの表示は、

slack api 画面(https://api.slack.com/)の右上Your Appsボタンをクリック

Your Appsの下の所に一覧が出るので、表示したいappをクリック。

slack apiの削除

もう一回作りなおしたいな~なんて時用にメモ。

左のメニューから、Basic Infomationをクリック

下の方に移動して、Delete Appの所で、Delete Appボタンをクリック

ダイアログで、Yes,I’m sureをクリック