読者です 読者をやめる 読者になる 読者になる

SlackのReal Time Messaging APIで得られる情報を眺める

自身のSlackアカウントが受領している情報を1箇所に集めてナニカできるかなと思ったとき、まず雑に情報だけ取得してみようと思い試してみた。

github.com

というのがあってnpmでも公開されているのでnpm installする。

$ npm install --save @slack/client

サンプルにもある通りなのだけれども一応さらっておくとここで取得できるトークンを利用して雑に以下の様なコードを実行するとReal Time Messaging APIで取得できる情報が全てダンプされる。

var token = 'xoxp-******-******-*****-*****';
var slack = require('@slack/client');
var RtmClient = slack.RtmClient;

var RTM_EVENTS = slack.RTM_EVENTS;
var CLIENT_EVENTS = slack.CLIENT_EVENTS;

var rtm = new RtmClient(token, {logLevel: 'debug'});

rtm.start();

rtm.on(RTM_EVENTS.MESSAGE, function (message) {
  // 例えばメッセージを検出したときにはここでナニカする
});

実行すると以下の様な形で取得された情報のJSONが流れていく。

debug: { '0': 'raw_message', '1': '{"type":"pong","reply_to":2032}' }
debug: sending message via ws: {"type":"ping","id":2033}
debug: {"type":"message","channel":"C03QHFYDB","user":"U02B59NCD","text":"てすと","ts":"1494125387.277986","source_team":"T02B3CR15","team":"T02B3CR15"}

ログレベルを debug にしているので全てのRTM APIで得られたJSONが出力されている。

チャンネル上で発言された内容や別で立ち上げていたクライアントがサーバー側と接続状態を確認するためのping-pongだったりが眺められたりして素朴に面白い。