Slack 알림
Slack으로 알림을 보냅니다.
워크플로의 동적 데이터 매개변수, 파일 첨부, 캐시 기반 세션 추적을 사용하는 쿨다운 제한, 팀 알림, 모니터링, 실시간 통신 워크플로를 위한 선택적 비동기 백그라운드 실행을 포함한 사용자 지정 가능한 메시지 콘텐츠로 Slack 채널에 알림을 보냅니다.
이 블록의 작동 방식
이 블록은 Slack Web API를 사용해 Slack 채널로 알림을 보내며, 워크플로 실행 결과를 메시지 내용에 통합합니다. 이 블록은:
다음을 통해 싱크 비활성화 여부를 확인합니다
disable_sink플래그(비활성화되어 있으면 전송하지 않고 즉시 반환)Slack 토큰 해시와 함께 쿨다운 추적을 위한 캐시 키를 생성하고
cooldown_session_key(각 워크플로 단계마다 고유함)캐시에서 마지막 알림 타임스탬프를 확인하여 쿨다운 기간을 검증합니다(활성화된 경우, 다음 범위 내의 알림을 제한합니다
cooldown_seconds마지막으로 전송된 알림을 기준으로 제한 상태를 반환합니다)제공된 토큰에 대한 Slack WebClient 인스턴스를 생성하거나 가져옵니다(효율성을 위해 토큰 해시별로 클라이언트를 캐시합니다)
동적 매개변수를 처리하여 메시지를 포맷합니다(다음과 같은 자리표시자를 바꿉니다
{{ $parameters.parameter_name }}실제 워크플로 데이터로message_parameters)삽입 전에 매개변수 값을 변환하기 위해 선택적 UQL 작업을 적용합니다(예: 탐지에서 클래스 이름 추출, 지표 계산, 데이터 필터링) 다음을 사용하여
message_parameters_operations지정된 Slack 채널로 알림을 보냅니다:
첨부 파일 없음:
chat_postMessage텍스트 전용 메시지를 보내는 API첨부 파일 포함:
files_upload_v2메시지를 초기 댓글로 하여 파일을 업로드하는 API
캐시를 현재 알림 타임스탬프로 업데이트합니다(15분 후 만료)
다음에 따라 동기 또는 비동기 방식으로 실행합니다
fire_and_forget설정:동기 모드 (
fire_and_forget=False): Slack API 호출 완료를 기다리고, 디버깅을 위해 실제 오류 상태를 반환합니다비동기 모드 (
fire_and_forget=True): 백그라운드 작업으로 알림을 전송하며, 워크플로는 즉시 계속 진행되고, 오류 상태는 항상 False입니다
성공, 제한, 또는 오류를 나타내는 상태 출력을 반환합니다(사용 가능한 경우 Slack API 오류 세부정보 포함)
이 블록은 런타임에 워크플로 데이터로 대체되는 매개변수 자리표시자를 통해 동적 메시지 콘텐츠를 지원합니다. 메시지 매개변수는 원시 워크플로 출력이거나 UQL 작업(예: 속성 추출, 개수 계산, 값 필터링)을 사용해 변환할 수 있습니다. 첨부 파일은 문자열 또는 바이너리 콘텐츠를 생성하는 다른 워크플로 블록(예: 보고서용 CSV Formatter, 시각화용 이미지 출력)에서 가져옵니다. 쿨다운은 캐시 기반 추적과 세션 키를 사용해 전송 간 최소 시간을 강제함으로써 알림 스팸을 방지하며, 분산 또는 다중 인스턴스 환경에서 단계별 제한을 가능하게 합니다.
요구 사항
Slack API 토큰: 적절한 권한이 있는 Slack API 토큰(Bot Token 또는 User Token)이 필요합니다:
토큰에는 다음이 있어야 합니다
chat:write채널로 메시지를 보내기 위한 범위토큰에는 다음이 있어야 합니다
첨부 파일을 사용하는 경우 필요한 범위files:write토큰은 워크플로 입력을 통해 제공하거나(보안상 권장) 워크플로 정의에 저장할 수 있습니다
보기 Slack API 문서 또는 Roboflow 블로그 가이드 토큰 생성 안내
채널 구성: 유효한 Slack 채널 식별자(채널 ID 또는 다음으로 시작하는 채널 이름)가 필요합니다 #). 토큰과 연결된 봇 또는 사용자는 해당 채널의 멤버여야 합니다.
쿨다운 세션 키: cooldown_session_key 워크플로의 각 Slack 알림 단계마다 고유해야 하며, 그래야 단계별 쿨다운 추적이 올바르게 작동합니다. 쿨다운 메커니즘은 15분 만료 시간이 있는 캐시 기반 저장소를 사용하며, 쿨다운 초는 0에서 900(15분) 사이여야 합니다.
일반적인 사용 사례
팀 경고 알림: 특정 조건이 감지되면 팀 채널로 Slack 경고를 보냅니다(예: 승인되지 않은 객체가 감지되면 보안 팀에 알리고, 이상이 감지되면 운영팀에 알리며, 감지 수가 임계값을 초과하면 경고를 보냄). 이를 통해 실시간 팀 협업과 사고 대응이 가능해집니다
워크플로 실행 업데이트: 워크플로 실행 상태와 결과에 대한 Slack 알림을 보냅니다(예: 배치 처리가 완료되면 팀에 알림, 일일 요약 보고서 전송, 워크플로 실패 경고). 이를 통해 자동화된 프로세스를 팀이 파악할 수 있습니다
감지 요약: Slack 메시지로 감지 결과와 집계 통계를 보냅니다(예: 감지된 객체 목록 공유, 수량과 분류 전송, 감지 신뢰도 요약 포함). 이를 통해 이해관계자들이 팀 커뮤니케이션 채널을 통해 워크플로 출력 정보를 계속 확인할 수 있습니다
보고서 배포: 생성된 보고서와 데이터 내보내기를 Slack을 통해 업로드하고 공유합니다(예: CSV Formatter의 CSV 보고서 첨부, 내보낸 감지 데이터 공유, 서식이 적용된 분석 요약 포함). 이를 통해 팀 채널을 통한 자동화된 데이터 배포가 가능합니다
실시간 모니터링: 지속적인 모니터링 업데이트와 상태 알림을 보냅니다(예: 시스템 상태 문제 알림, 주기적인 성능 지표 전송, 처리 이정표 경고). 이를 통해 운영 모니터링을 위한 실시간 가시성을 제공합니다
다중 채널 브로드캐스팅: 워크플로 조건이나 라우팅 로직에 따라 다른 Slack 채널로 알림을 보냅니다(예: 감지 유형별로 다른 채널에 경고 전송, 심각도 수준별로 알림 라우팅, 부서별 채널로 보고서 배포). 이를 통해 대상별 커뮤니케이션과 알림 라우팅이 가능합니다
다른 블록에 연결하기
이 블록은 워크플로 단계로부터 데이터를 받아 Slack 알림을 보냅니다:
탐지 또는 분석 블록 뒤에서 (예: 객체 감지, 인스턴스 분할, 분류) 객체가 감지되거나 분류가 수행되거나 임계값을 초과할 때 경고나 요약을 보내 실시간 팀 알림과 협업을 가능하게 합니다
데이터 처리 블록 다음 (예: Expression, Property Definition, Detections Filter) 계산된 지표, 변환된 데이터 또는 필터링된 결과를 Slack 알림에 포함하여, 팀 채널에서 처리된 데이터로 맞춤형 보고를 가능하게 합니다
포맷터 블록 다음 (예: CSV Formatter) 서식이 적용된 보고서와 내보내기를 Slack 메시지에 첨부하여, 팀 커뮤니케이션 채널을 통한 구조화된 데이터와 분석 결과의 자동 배포를 가능하게 합니다
조건부 워크플로에서 (예: Continue If) 특정 조건이 충족될 때만 알림을 보내 이벤트 기반 경고와 팀 커뮤니케이션을 가능하게 합니다
집계 블록 다음 (예: Data Aggregator) 주기적인 분석 요약과 통계 보고서를 Slack으로 보내 예약된 팀 업데이트와 추세 분석을 가능하게 합니다
모니터링 워크플로에서 상태 업데이트, 오류 알림 또는 상태 점검 보고서를 팀 채널로 보내 Slack을 통한 자동 시스템 모니터링과 사고 관리를 가능하게 합니다
유형 식별자
단계에서 다음 식별자를 사용하세요 "type" 필드: roboflow_core/slack_notification@v1 워크플로우에 이 블록을 단계로 추가하려면.
속성
이름
유형
설명
참조
name
str
이 단계에 대한 고유 식별자를 입력하세요..
❌
slack_token
str
Slack API와 인증하기 위한 Slack API 토큰(Bot Token 또는 User Token)입니다. 토큰에는 메시지 전송을 위한 'chat:write' 범위와 첨부 파일을 사용할 경우 'files:write' 범위가 있어야 합니다. 토큰은 보안을 위해 비공개로 표시됩니다. 워크플로 정의에 저장하는 대신 SECRET_KIND 선택자를 사용하여 워크플로 입력으로 제공하는 것이 권장됩니다. Slack API 앱 또는 워크스페이스 관리에서 토큰을 생성하세요. 설정 안내는 Slack API 문서 또는 Roboflow 블로그 가이드 설정 안내를 참조하세요..
✅
channel
str
알림이 전송될 Slack 채널 식별자입니다. 채널 ID(예: 'C1234567890') 또는 '#'로 시작하는 채널 이름(예: '#alerts', '#general')일 수 있습니다. Slack 토큰과 연결된 봇 또는 사용자는 해당 채널의 멤버여야 합니다. 채널 이름은 Slack API에 의해 자동으로 채널 ID로 변환됩니다..
✅
message
str
Slack 채널로 보낼 메시지 내용(일반 텍스트)입니다. 다음 자리표시자 구문을 사용한 동적 매개변수를 지원합니다: {{ $parameters.parameter_name }}. 자리표시자는 런타임에 message_parameters의 값으로 대체됩니다. 메시지는 여러 줄 텍스트일 수 있습니다. 첨부 파일이 제공되면 이 메시지는 파일 업로드에 첨부되는 초기 댓글이 됩니다. 예: '감지됨 {{ $parameters.num_objects }} 개체. 클래스: {{ $parameters.classes }}.'.
❌
message_parameters
Dict[str, Union[bool, float, int, str]]
메시지 플레이스홀더에 사용되는 매개변수 이름을 워크플로 데이터 소스에 매핑하는 사전입니다. 키는 메시지에서 다음과 같이 참조되는 매개변수 이름입니다 {{ $parameters.key }}, 값은 워크플로 단계 출력 또는 직접 값에 대한 선택기입니다. 이러한 값은 런타임에 메시지 플레이스홀더로 대체됩니다. 필요에 따라 message_parameters_operations를 사용해 대체 전에 매개변수 값을 변환할 수 있습니다..
✅
message_parameters_operations
Dict[str, List[Union[ClassificationPropertyExtract, ConvertDictionaryToJSON, ConvertImageToBase64, ConvertImageToJPEG, DetectionsFilter, DetectionsOffset, DetectionsPropertyExtract, DetectionsRename, DetectionsSelection, DetectionsShift, DetectionsToDictionary, Divide, ExtractDetectionProperty, ExtractFrameMetadata, ExtractImageProperty, LookupTable, Multiply, NumberRound, NumericSequenceAggregate, PickDetectionsByParentClass, RandomNumber, SequenceAggregate, SequenceApply, SequenceElementsCount, SequenceLength, SequenceMap, SortDetections, StringMatches, StringSubSequence, StringToLowerCase, StringToUpperCase, TimestampToISOFormat, ToBoolean, ToNumber, ToString]]]
메시지에 삽입하기 전에 매개변수 값을 변환하는 UQL 작업 체인에 message_parameters의 매개변수 이름을 매핑하는 선택적 사전입니다. 작업은 순서대로 적용됩니다(예: 감지에서 클래스 이름 추출, 개수 계산, 값 필터링). 키는 message_parameters의 매개변수 이름과 일치해야 합니다. 변환이 필요 없는 매개변수는 비워 두거나 생략하세요..
❌
fire_and_forget
bool
실행 모드: 비동기 백그라운드 전송이면 True(워크플로는 즉시 계속 진행되고, error_status는 항상 False이며, 실행이 더 빠름), 동기 전송이면 False(Slack API 호출 완료를 기다리고, 디버깅을 위해 실제 오류 상태를 반환함). 개발 및 디버깅 중에는 Slack API 오류를 잡기 위해 False로 설정하세요. 알림 전달 시점이 중요하지 않은 경우 더 빠른 워크플로 실행을 위해 프로덕션에서는 True로 설정하세요..
✅
disable_sink
bool
런타임에서 Slack 알림 전송을 비활성화하는 플래그입니다. True이면 블록은 알림 전송을 건너뛰고 비활성화 메시지를 반환합니다. 워크플로 입력을 통한 조건부 알림 제어에 유용합니다(예: 호출자가 테스트용으로 알림을 비활성화하도록 허용, 구성에 따라 활성화/비활성화). 런타임 제어를 위해 워크플로 입력으로 설정합니다..
✅
cooldown_seconds
정수
연속적인 Slack 알림 사이의 최소 초 수로, 알림 스팸을 방지합니다. 기본값은 5초입니다. 쿨다운을 비활성화하려면 0으로 설정하세요(제한 없음). 값은 0에서 900(15분) 사이여야 합니다. 쿨다운 기간 동안 블록은 throttling_status=True를 반환하고 전송을 건너뜁니다. 쿨다운은 cooldown_session_key를 사용해 단계별로 캐시 기반 저장소(15분 만료)에서 추적됩니다. 워크플로의 각 Slack 알림 단계에는 단계별 추적을 위해 고유한 cooldown_session_key가 있어야 합니다..
✅
cooldown_session_key
str
이 Slack 알림 단계의 쿨다운 추적 세션에 대한 고유 식별자입니다. 워크플로의 각 Slack 알림 단계마다 고유해야 하며, 그래야 단계별 쿨다운 격리가 올바르게 작동합니다. Slack 토큰 해시와 함께 사용되어 마지막 알림 타임스탬프를 추적하는 캐시 키를 생성합니다. 분산 또는 다중 인스턴스 환경에서는 단계별로 쿨다운이 올바르게 작동하도록 보장합니다. 일반적으로 자동 생성되거나 워크플로 입력으로 제공됩니다..
❌
이 참조 열은 워크플로우 런타임에서 사용 가능한 동적 값으로 속성을 매개변수화할 수 있는 가능성을 나타냅니다 워크플로우 런타임입니다. 자세한 내용은 바인딩 을 참조하세요.
런타임 호환성
인터넷 필요 - 에어갭 / 오프라인 배포 : 이 블록은 완전히 오프라인 / 에어갭된 배포에서는 접근할 수 없는 서비스에 의존합니다.
소프트 - 런타임 호스팅 서버리스, 전용 배포; 실행 원격 : 쿨다운/속도 제한 타이머는 프로세스 메모리에 저장됩니다. 상태 비저장 또는 다중 복제본 HTTP 런타임에서 원격 단계 실행을 사용하면 각 요청이 새 작업자를 받으므로 쿨다운이 속도를 제한하지 않습니다. 쿨다운은 지속적인 WebRTC 세션에서 로컬 단계 실행을 사용할 때만 문서화된 대로 작동합니다.
입력 및 출력 바인딩
사용 가능한 연결은 바인딩 유형에 따라 달라집니다. 어떤 바인딩 유형인지 확인하세요 Slack 알림 버전 v1 을 가지고 있는지.
입력 및 출력 바인딩
입력
slack_token(Union[secret,string]): Slack API와 인증하기 위한 Slack API 토큰(Bot Token 또는 User Token)입니다. 토큰에는 메시지 전송을 위한 'chat:write' 범위와 첨부 파일을 사용할 경우 'files:write' 범위가 있어야 합니다. 토큰은 보안을 위해 비공개로 표시됩니다. 워크플로 정의에 저장하는 대신 SECRET_KIND 선택자를 사용하여 워크플로 입력으로 제공하는 것이 권장됩니다. Slack API 앱 또는 워크스페이스 관리에서 토큰을 생성하세요. 설정 안내는 Slack API 문서 또는 Roboflow 블로그 가이드 설정 안내를 참조하세요..channel(string): 알림이 전송될 Slack 채널 식별자입니다. 채널 ID(예: 'C1234567890') 또는 '#'로 시작하는 채널 이름(예: '#alerts', '#general')일 수 있습니다. Slack 토큰과 연결된 봇 또는 사용자는 해당 채널의 멤버여야 합니다. 채널 이름은 Slack API에 의해 자동으로 채널 ID로 변환됩니다..message_parameters(*): 메시지 플레이스홀더에 사용되는 매개변수 이름을 워크플로 데이터 소스에 매핑하는 사전입니다. 키는 메시지에서 다음과 같이 참조되는 매개변수 이름입니다{{ $parameters.key }}, 값은 워크플로 단계 출력 또는 직접 값에 대한 선택기입니다. 이러한 값은 런타임에 메시지 플레이스홀더로 대체됩니다. 필요에 따라 message_parameters_operations를 사용해 대체 전에 매개변수 값을 변환할 수 있습니다..attachments(Union[bytes,string]): 첨부 파일 파일명과 파일 내용을 제공하는 워크플로 단계 출력의 매핑을 담은 선택적 딕셔너리입니다. 키는 첨부 파일명(예: 'report.csv', 'image.jpg')이고, 값은 문자열 또는 바이너리 콘텐츠를 출력하는 블록에 대한 선택자입니다(예: CSV Formatter 출력, 이미지 데이터, 생성된 보고서). 파일은 files_upload_v2 API를 사용해 Slack에 업로드되며, 메시지는 초기 댓글이 됩니다. 첨부 파일이 필요하지 않으면 비워 두세요. Slack 토큰에는 'files:write' 범위가 필요합니다..fire_and_forget(boolean): 실행 모드: 비동기 백그라운드 전송이면 True(워크플로는 즉시 계속 진행되고, error_status는 항상 False이며, 실행이 더 빠름), 동기 전송이면 False(Slack API 호출 완료를 기다리고, 디버깅을 위해 실제 오류 상태를 반환함). 개발 및 디버깅 중에는 Slack API 오류를 잡기 위해 False로 설정하세요. 알림 전달 시점이 중요하지 않은 경우 더 빠른 워크플로 실행을 위해 프로덕션에서는 True로 설정하세요..disable_sink(boolean): 런타임에서 Slack 알림 전송을 비활성화하는 플래그입니다. True이면 블록은 알림 전송을 건너뛰고 비활성화 메시지를 반환합니다. 워크플로 입력을 통한 조건부 알림 제어에 유용합니다(예: 호출자가 테스트용으로 알림을 비활성화하도록 허용, 구성에 따라 활성화/비활성화). 런타임 제어를 위해 워크플로 입력으로 설정합니다..cooldown_seconds(정수): 연속적인 Slack 알림 사이의 최소 초 수로, 알림 스팸을 방지합니다. 기본값은 5초입니다. 쿨다운을 비활성화하려면 0으로 설정하세요(제한 없음). 값은 0에서 900(15분) 사이여야 합니다. 쿨다운 기간 동안 블록은 throttling_status=True를 반환하고 전송을 건너뜁니다. 쿨다운은 cooldown_session_key를 사용해 단계별로 캐시 기반 저장소(15분 만료)에서 추적됩니다. 워크플로의 각 Slack 알림 단계에는 단계별 추적을 위해 고유한 cooldown_session_key가 있어야 합니다..
마지막 업데이트
도움이 되었나요?