#java #slack #slack-api
Вопрос:
Я работаю над ботом slack, который отслеживает командную активность в рабочем пространстве. Бот добавляется в качестве интеграции с несколькими каналами, все из которых, кроме одного, являются частными. Всякий раз, когда сообщение отправляется на общедоступный канал, вызывается функция обратного вызова для обработки сообщений, но эта функция не вызывается при отправке сообщения на закрытый канал.
Вот мой основной метод.
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();
}
Таким образом, когда сообщение отправляется по общедоступному каналу, в файле журнала создается запись, но то же самое не происходит, когда оно отправляется по закрытому каналу. Даже несмотря на то, что бот добавлен в оба.
Ответ №1:
Итак, я понял, что происходит не так. Я предоставил боту области OAuth для чтения сообщений из частных каналов на вкладке OAuth и разрешения на панели инструментов Slack API.
Мне также нужно было добавить раскрывающийся список «Группы:история» для подписки на события Бота на вкладке «Подписки на события«. Как только вы это сделаете, для сообщений, отправляемых по частным каналам, будет инициировано событие.