Как отправлять сообщения в 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, который позволяет добавлять ссылки и форматировать текст различными способами.
Чтобы включить изображение в текст сообщения, необходимо использовать следующий формат:
![título de la imagen](url de la imagen)
Пример:
Результат.
На этом мы завершаем наше руководство о том, как легко интегрировать Slack API в приложение Spring Boot. Также можно выполнить эту интеграцию с помощью OpenFeign или Web Client. Если у вас возникнут вопросы, не стесняйтесь обращаться ко мне, или если вам нужен учебник по использованию этих библиотек, дайте мне знать.
Repositorio en Github: https://github.com/danielangel22/slack-messaging-springboot
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.