私人频道不会触发 Slack 事件

Slack Events are not being triggered for private channels

我正在开发一个可以在工作区跟踪团队 activity 的 slack 机器人。该机器人被添加为多个渠道的集成,除其中一个外,所有渠道都是私有的。每当消息发送到 public 频道时,都会调用处理消息的回调函数,但当消息发送到私有频道时不会调用该函数。

这是我的主要方法。

public static void main(String[] args) throws Exception {

    init();
    app.message(Pattern.compile(".*", Pattern.DOTALL), (payload, ctx) -> onMessage(payload,ctx));
    
    try {
        log.info("Server started");
        System.out.println("Server started");
        socketModeApp.start();
    }
    catch(Exception e){
        log.error(e.toString());
    }
}

这是 onMessage 方法。

static Response onMessage(EventsApiPayload<MessageEvent> payload, EventContext ctx) {
    app.executorService().execute(() -> {

        try {
            MessageEvent event = payload.getEvent();
            String text = event.getText();
            
            String userid = event.getUser();

            String channelId = event.getChannel();
            String ts = event.getTs().substring(0,10);
            
            log.info(userid+" sent a message on "+channelId);
            
            // code to track user activity.
        
        }
        catch(Exception e) {
            log.error(e.toString());
        }

    });
    return ctx.ack();
}

因此,当消息发送到 public 频道时,会在日志文件中创建一个条目,但在私人频道中发送时不会发生同样的情况。即使机器人被添加到两者。

所以,我弄清楚出了什么问题。我在 Slack API 仪表板的 OAuth & Permissions 选项卡下为机器人提供了 OAuth 范围以读取来自私人频道的消息。

我还需要将 groups:history 权限添加到 订阅机器人事件 事件订阅 选项卡下的下拉菜单。执行此操作后,将针对在私人频道中发送的消息触发事件。