Slack 5

슬랙 봇이 보낸 메시지를 수정해봅시다

슬랙 봇이 어떤 채널에 메시지를 보냈다고 가정해 봅시다. 그런데 만약, 메시지에 문제가 있어 봇이 보낸 메시지를 수정해야 한다면 어떻게 해야 할까요? 아래는 슬랙 봇의 메시지를 수정한 모습입니다. 이번 글에서는 슬랙 봇의 메시지를 수정하는 경우와 그 방법에 대하여, 또봇(글또 슬랙 봇)의 구체적인 사례로 설명드리겠습니다.  메시지 수정이 필요한 상황제가 속해있는 글또라고 하는 커뮤니티는 개발자들이 글을 쓰고 봇을 통해 제출하는 커뮤니티입니다. 현재 10기의 멤버 수는 640명이죠. 커뮤니티 인원 수가 많다보니 글을 실수로 잘못 제출하거나 불가피하게 블로그 링크가 바뀌어 메시지 수정이 필요한 때가 종종 생깁니다. 예를 들어, 다음과 같은 상황입니다. 글또 커뮤니티는 글을 제출하면 아래와 같은 형식으로 봇이..

슬랙 봇으로 '채널 초대' 기능 구현하기

앞서 우리는 슬랙 봇에서 사용자가 특정 멤버를 여러 채널에 초대할 수 있도록 모달을 띄우는 기능을 구현했습니다.  슬랙 봇으로 '채널 초대' 모달 띄우기이전 글에서 /관리자 명령어를 통해 관리자만 접근할 수 있는 메뉴를 만드는 방법에 대해 설명했었습니다. 2024.08.29 - [나는 이렇게 논다/글또 슬랙 봇 개발기] - 슬랙 봇으로 나만 보이는 '관리자daco2020.tistory.com  이번에는 '채널 초대'를 마무리 짓기 위해, 사용자가 모달에서 제출한 정보를 바탕으로 실제로 채널 초대를 수행하는 방법을 설명하겠습니다.  채널 초대 뷰 핸들링채널 초대를 처리하는 뷰 이벤트 함수는 handle_invite_channel_view로 지었습니다. 뷰 모달에서 제출된 데이터를 받아서 처리하죠. 이 함수..

슬랙 봇으로 '채널 초대' 모달 띄우기

이전 글에서 /관리자 명령어를 통해 관리자만 접근할 수 있는 메뉴를 만드는 방법에 대해 설명했었습니다.  슬랙 봇으로 나만 보이는 '관리자' 메뉴 만들기Slack 봇을 개발할 때, 관리자만 사용할 수 있는 기능이 필요한 경우가 종종 있습니다. 예를 들어, 데이터 동기화나 특정 채널에 멤버를 초대하는 작업 등이죠. 이번 글에서는 /관리자 명령어를daco2020.tistory.com 이번에는 해당 메뉴에서 '채널 초대' 버튼을 눌렀을 때 실행되는 invite_channel 액션을 처리하고, 사용자가 멤버를 초대할 수 있는 모달을 띄우는 방법을 알아보겠습니다.  액션 이벤트 핸들링먼저, invite_channel 액션이 발생했을 때 이를 처리할 핸들러 함수를 작성해줘야 합니다. `invite_channel`은..

슬랙 봇으로 나만 보이는 '관리자' 메뉴 만들기

Slack 봇을 개발할 때, 관리자만 사용할 수 있는 기능이 필요한 경우가 종종 있습니다. 예를 들어, 데이터 동기화나 특정 채널에 멤버를 초대하는 작업 등이죠. 이번 글에서는 /관리자 명령어를 통해 두 개의 버튼을 제공하여, 관리자에게 필요한 메뉴를 호출할 수 있도록 해보겠습니다. 사용한 프레임워크는 Slack Bolt 입니다.   핸들러 함수 정의먼저, 슬랙에서 관리자 명령어를 처리하는 admin_command 함수를 정의해 보겠습니다. 이 함수는 사용자가 /관리자 명령어를 입력했을 때 호출됩니다. 참고로, 명령어는 사전에 slack api 웹사이트에서 Slash Commands 를 설정해주셔야 합니다.async def admin_command( ack: AsyncAck, body: Com..

Slack Block Kit 주요 블록 유형별 차이점 정리

Slack Block Kit에서 각 블록은 고유의 역할을 가지고 있는데요. 이를 구성하는 요소들도 블록마다 다르게 사용되다보니 헷갈리는 경우가 많습니다. 이번 글에서는 Input, Actions, Section 블록을 중심으로, 각 블록이 사용하는 요소들의 차이점과 쓰임새를 정리해보겠습니다.  1. Input 블록특징단일 요소 사용사용자로부터 데이터를 입력받기 위한 목적구성 요소element: 단일 상호작용 요소를 포함합니다. 주로 텍스트 입력, 선택 메뉴, 날짜 선택기 등을 사용합니다.예시{ "type": "input", "element": { "type": "plain_text_input", "action_id": "name_input" }, "label..