Я создал конечную точку для приема команд Slack Sla sh, например:
@PostMapping(value = "/slack", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String incidentCommand(@RequestParam("token") String token,
@RequestParam("team_id") String teamId,
@RequestParam("team_domain") String teamDomain,
@RequestParam("channel_id") String channelId,
@RequestParam("channel_name") String channelName,
@RequestParam("user_id") String userId,
@RequestParam("user_name") String userName,
@RequestParam("command") String command,
@RequestParam("text") String text,
@RequestParam("response_url") String responseUrl) {
if (command.equals(INCIDENT)) {
incidentQueue.push(new Event(userId, token, text, responseUrl));
} else if (command.equals(POSTMORTEM)) {
postmortemQueue.push(new Event(userId, token, text, responseUrl));
} else {
return "no";
}
}
Архитектура будет выглядеть так:
- Slack Controller получает HTTP-запрос от slack
- Запрос помещается в очередь
- Запрос обрабатывается
- Ответ отправляется обратно в резерв (задержка <500 мс) </li>
Однако, когда Глядя на SlackClient в библиотеке Java SDK, похоже, что в любом случае использовать response_url
, отправленный slack, не представляется возможным.
Например, для отправки следующего ChatPostMessage не имеется никакого свойства для response_url
sendMessage(ChatPostMessageParams.builder()
.setText("Ping!")
.setChannelId(channel)
.setUsername(username)
.build())
Означает ли это, что мне просто нужно создать свой собственный HTTP-клиент (используя что-то вроде ApacheHTTPClient?) И напрямую вызвать response_url?
Также есть DTO или объекты домена для определения сообщений в слабом SDK?