11
7

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チャンネルで発言した内容をリアルタイムで取得する方法

Last updated at Posted at 2019-06-26

slackチャンネルで発言した内容をリアルタイムで取得する方法です。

slackのAPIには以下の3種類があります。
・Web API
・Events API
・RTM API
それぞれの詳細な説明はこちら

今回は「Events API」を使用します。
Events APIの使用例としては

https://api.slack.com/lang/ja-jp/which-api

・ユーザーがメッセージの投稿、チャンネルの作成や変更、ファイルの追加や変更を行った場合にイベントを受信する
・ユーザーがチャンネルにピン、スター、絵文字リアクションを追加したときに、イベントを受信する
・状態をほぼリアルタイムで保持

などに使えるようです。

今回は「slackチャンネルで発言した内容をリアルタイムで取得する」ので、この内容でOK.

#Botアプリの作成
まずは、ここにアクセスして、

  1. 右上のCreate New App
  2. ポップアップが出てくるので、「App Name」と「Development Slack Workspace」を指定
  3. Create App

以下のような画面に行けばOK(画像は、newappという名前でBotを作成しています)

hige.png

#Botアプリの設定
先ほどの画像の左側(Settings,Featuresなど)がBotに関する設定の場所です。

ここで、Tokenやイベントなどを設定していきます。

##slackの発言を送信する宛先URLの指定

まずは、「Event Subscriptions」にいき、

スクリーンショット 2019-06-26 11.39.45.png

offになっているボタンを押してonにしてください。
そうすると、「Request URL」を入力する欄に、エンドポイントを入力するんですが、このエンドポイントが正しいものか確認するために、URLが入力された瞬間に、そのURLあてにリクエストが送られます。

その内容を返却することで、「このエンドポイントは正しいもの」という風に認識されます。

例えばPHPならエンドポイントに以下のようなスクリプトを用意してあげれば大丈夫です。

index.php
<?php
#file_get_contents('php://input');で送られてきた内容を取得し、echoでそのまま返している
echo file_get_contents('php://input');

以下のようになればOKです。

スクリーンショット 2019-06-26 11.47.29.png

##Botが発言を取得する範囲の指定

先ほどの画面の下に行くと、以下の場所があります。

スクリーンショット 2019-06-26 11.52.48.png

ここで、BotのEvents(今回でいう「発言をリアルタイムで取得する」のようなこと)を
「ワークスペース全体」に適応するのか、「Botが招待されたチャンネルだけ」に適応するのか決めます。

今回は「Botが招待されたチャンネルだけ」に適応するので、「Subscribe to Bot Events」の方を設定していきます。

##Botuserの追加
「Subscribe to Bot Events」にある、「Add a bot user」をクリックして、bot userを追加します。
ここでは表示名を設定するようです。入力したら「Add Bot User」をクリック

スクリーンショット 2019-06-26 11.56.45.png

そうして、もう一度「Event Subscriptions」に行き、以下のようになっていることを確認してください。

スクリーンショット 2019-06-26 11.59.32.png

##イベントの追加

先ほどの画面で「Add Bot User Event」でBotができるイベントを設定していきます。
今回は

・「(Botが招待された)パブリックチャンネルに送られたメッセージを検知」
・「(Botが招待された)プライベートチャンネルに送られたメッセージを検知」

というように設定しました。

スクリーンショット 2019-06-26 12.02.45.png

他にも色々あるので、興味のある方は見てみてください。

##ワークスペース内のチャンネルにBotを招待できるようにする
「OAuth & Permissions」にいき、「Install App to Workspace」をして、ワークスペース内のチャンネルにBotを招待できるようにします。

スクリーンショット 2019-06-26 12.07.44.png

##チャンネルでBotを招待する
Botをインストールしたいチャンネルにいき、右上の設定マーク(?)を押して,「アプリを追加」から、先ほど作成したアプリを追加します。

スクリーンショット 2019-06-26 12.09.13.png

以上で、設定は完了です。

#確認する

試しに、以下のようなスクリプトを用意し、リアルタイムで送られいる内容を取得できているか監視してみましょう。

index.php
<?php
error_log(file_get_contents('php://input'),3,"/var/log/debug.log");

以下のコマンドで、
/var/log/debug.logをリアルタイムで表示して確認してみてください。

$ tail -f /var/log/debug.log
11
7
1

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
11
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?