2016-05-31 7 views
0

ユーザーがSlackでチームにログインまたはログアウトしたことを検出する方法を知る必要があります。ユーザーがログインまたはログアウトしたときに検出する

私は、ユーザーのステータスをデータベースに格納することからなる最初のSlackアプリケーションを構築しています。ユーザーがログインしたときを検出してステータスを自動的に変更する方法を知るためのガイダンスが必要です。

私はNode.jsを使って開発し、それをHerokuでホスティングしています。

編集

私は@slack/clientモジュールをインストールしているし、これは私がときにユーザーがログインするか、アウトを管理しようとした方法です:

rtm.start(); 
rtm.on(RTM_EVENTS.PRESENCE_CHANGE, function(x) { 
    db.users.insert({ 
     userid: x.user, 
     status: x.presence === 'active' ? 'HERE' : 'OFF' 
    }); 
}); 

しかし、私は閉じたときに、それは検出されません。ブラウザのタブをクリックすると、30分間アイドル状態になったときと、ページを更新するかログインするときに表示されます。

答えて

3

私はpresence_changeイベントをRTM API経由で見ることができます。誰かがログアウト(または手動で自分を離れて設定)し、ログインすると「アクティブ」に設定されます(または手動でアクティブに戻すように設定されます)。に思わ

U11C8V57T: active 
U11C8V57T: away 
+0

クール、:

EDIT

ここに私のコードです:

var RtmClient = require('@slack/client').RtmClient; var RTM_EVENTS = require('@slack/client').RTM_EVENTS; var token = '<REDACTED>'; var rtm = new RtmClient(token); rtm.on(RTM_EVENTS.PRESENCE_CHANGE, function (event) { console.log(event.user + ': ' + event.presence); }); rtm.start(); 

そして、私はそのスラックチームにタブを開き、それを閉じて出力それだけではなく、ユーザーがブラウザタブを閉じたときに、彼が入力したときだけ知るようにも思えます。 – mfgabriel92

+0

ブラウザタブを閉じてユーザーが退室したときにイベントが表示されないというのですか? – smarx

+0

はい、私は 'channel_leave'、' channel_left'、 'group_left'を試しましたが、ステータスを更新するためのメソッドを実行するためにログオフしたときにこれらのどれも検出されませんでした。 – mfgabriel92

関連する問題