
Как отправлять сообщения в slack с помощью spring boot легко и без зависимостей.
Slack - это платформа для обмена сообщениями, ориентированная на командную работу. Он позволяет компаниям создавать каналы связи для различных проектов и рабочих групп, а также предлагает широкий спектр интеграций с другими инструментами и сервисами.
API Slack - это набор конечных точек, которые позволяют другим приложениям отправлять и получать сообщения через Slack. Чтобы использовать API Slack, необходимо сначала создать приложение на платформе Slack и получить маркер доступа. Затем вы можете использовать любую из конечных точек API для отправки и получения сообщений через Slack.
Создайте учетную запись и выполните шаги по настройке вашего рабочего пространства, оно должно выглядеть следующим образом.
Затем найдите входящее приложение webhook.

Нажмите на карточку и добавьте ее в slack в рабочем пространстве.

Выберите канал, на который вы хотите опубликовать свои сообщения.

Скопируйте ссылку api, которую мы будем использовать для подключения нашего api rest в spring boot для отправки сообщений.

Зависимости приложения, нам понадобится только зависимость Spring web и devtools, нам не нужно добавлять сторонние зависимости.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency>
В качестве следующего шага мы должны добавить url webhook в наш application.properties.

Создайте DTO со следующими свойствами.
public class SlackMessage implements Serializable {
private static final long serialVersionUID = 1L;
private String username; //usuario directo al que enviaras el mensaje
private String text; //mensaje
private String icon_emoji; //icono parametrizable del boot slack
private String channel; //channel a enviar el message
}Для этого шага мы создадим компонент в пакете услуг, который будет использовать RestTemplate для обработки запроса на отправку сообщений в Slack.
@Component
public class SlackComponent {
@Value("${slack.bot.token}")
private String slackWebhookUrl;
public Object sendMessageNative(SlackMessage message) {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<SlackMessage> request = new HttpEntity<>(message, headers);
return restTemplate.postForObject(slackWebhookUrl, request, String.class);
}
}Обратите внимание, что slackWebhookUrl использует значение, определенное выше в файле свойств нашего приложения.
С помощью этого мы должны быть в состоянии выполнить модульный тест для проверки правильности работы нашего компонента. Давайте определим наш простой тест.
@SpringBootTest
class SlackMessagingSpringbootApplicationTests {
@Autowired
private SlackComponent slackUtils;
@Test
void testSendMessage() {
var message="Hola mundo desde junit :heart: :smile:";
SlackMessage slackMessage = new SlackMessage();
slackMessage.setText(message);
slackMessage.setChannel("varios");
// slackMessage.setIcon_emoji(":smiley:");
var response = slackUtils.sendMessageNative(slackMessage);
assertEquals("ok", response);
}
}При выполнении нашего теста мы получаем сообщение на канал miscellaneous.

Чтобы завершить наш API, мы создадим контроллер, который будет внедрять наш компонент Slack и открывать метод для отправки сообщений через него. Таким образом, вы сможете использовать этот метод из любого другого места приложения.
@RestController
public class SlackController {
@Autowired
private SlackComponent slackComponent;
@PostMapping("/send")
public ResponseEntity<?> sendMesssage(@RequestBody SlackMessage slackRequest) {
return ResponseEntity.ok(slackComponent.sendMessageNative(slackRequest));
}
}В качестве последнего шага мы протестируем его из postman.

И это будет результатом.

Чтобы включить эмодзи и изображения в сообщение Slack из вашего API, необходимо использовать формат разметки Slack.
Чтобы включить эмодзи в текст сообщения, необходимо использовать следующий формат:
:nombre_del_emoji:
Пример:

И это будет результатом.

Мы также могли бы добавить поле emoji_message в наш DTO и затем конкатенировать его с сообщением для лучшей сегментации, но в данном примере в этом нет необходимости.
Да, можно включать изображения непосредственно в текст сообщения, используя формат разметки Slack, который позволяет добавлять ссылки и форматировать текст различными способами.
Чтобы включить изображение в текст сообщения, необходимо использовать следующий формат:

Пример:

Результат.

На этом мы завершаем наше руководство о том, как легко интегрировать Slack API в приложение Spring Boot. Также можно выполнить эту интеграцию с помощью OpenFeign или Web Client. Если у вас возникнут вопросы, не стесняйтесь обращаться ко мне, или если вам нужен учебник по использованию этих библиотек, дайте мне знать.
Repositorio en Github: https://github.com/danielangel22/slack-messaging-springboot

20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2026-2027 годах? Или это полная лажа?".

20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.