13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

新しい Slack チャンネルが作られたことを知りたい

Posted at

チャンネル数が多くなってくると新しくチャンネルが作られてもわからないという課題が出てくる
他にも次が発生したときにすぐにそのことを知りたい

  • チャンネルの名前が変わる
  • チャンネルが archive される

チャンネルに対して何か操作された際に特定チャンネルにその情報を post することで解決を図る

Events API

チャンネル操作をハンドリングするために Slack が提供している Events API を利用する

Slack App に対してイベントを通知するための API で、イベントをよしなに処理することでいろいろできる
次に使用するための設定を記載する

イベント送信先 URL の verification

まずイベント送信先 URL の verification が必要
Slack App 設定の Event Subscriptions を開く

verification.png

↑のように送信先 URL をいれると次のような JSON が飛んでくる

{
    "token": "Jhj5dZrVaK7ZwHHjRyZWjbDl",
    "challenge": "3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P",
    "type": "url_verification"
}

typeurl_verification となっている
このときに challenge をそのまま送り返すと verification が完了するという仕組み

イベントの subscribe

同じく Event Subscriptions ページにどのイベントを送るかを指定する欄がある
そこに次を指定する

  • channel_archive
  • channels_read
  • channel_deleted
  • channel_rename
  • channel_unarchive

記事公開時点でチャンネルに関して指定できるイベントは↑で全部

events.png

permission の scope を設定する

OAuth & Permissions の Scopes で設定する
チャンネル関係で必要になる scope は channels:read のみ
メッセージを post したいので incoming-webhook も指定する

scope.png

Incoming Webhook の登録

Incoming Webhooks の一番下にある Add New Webhook to Workspace から登録する
post したいチャンネルを指定するだけでいい

OAuth token の取得

作成した Slack App はすでに自分の workspace に導入済みなので OAuth token は発行済み
OAuth & Permissions に記載されているのでメモる

実装

イベントハンドラーは AWS Lambda と API Gateway 上に Serverless Framework を使って実装してみた

sls deploy して次の環境変数を設定すれば使えるようになる

  • SLACK_OAUTH_TOKEN
  • SLACK_INCOMING_WEBHOOK

注意点

Slack App で Incoming Webhook を使う場合、 Slack App のアイコンと名前が使われる
この場合 Incoming Webhook ではアイコンと名前を指定できない

13
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?