检测用户何时登录或注销

时间:2016-05-31 03:20:29

标签: slack-api slack

我需要知道如何检测用户何时登录或退出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分钟以及刷新页面或登录时。

1 个答案:

答案 0 :(得分:3)

我相信您会通过RTM API看到presence_change事件。有人将被设置为"远离"当他们退出(或手动设置自己离开)和"活跃"当他们登录时(或手动将自己设置为活动状态)。

修改

这是我的代码:

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();

当我向Slack团队打开一个标签然后关闭它时的输出:

U11C8V57T: active
U11C8V57T: away