私人频道不会触发 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 权限添加到 订阅机器人事件 事件订阅 选项卡下的下拉菜单。执行此操作后,将针对在私人频道中发送的消息触发事件。
我正在开发一个可以在工作区跟踪团队 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 权限添加到 订阅机器人事件 事件订阅 选项卡下的下拉菜单。执行此操作后,将针对在私人频道中发送的消息触发事件。