ConsumeSlack 프로세서

ConsumeSlack 프로세서

이 문서는 Snowflake OpenFlow의 ConsumeSlack 프로세서에 대한 참조 문서예요. 구성된 Slack 채널 하나 이상에서 메시지를 가져와 JSON 형식으로 출력해요.

출처: Snowflake 문서

본문

기능 — 일반 제공 (Generally Available)

Openflow Snowflake 배포는 AWS, Azure, GCP Commercial 리전의 모든 계정에서 사용할 수 있어요.

Openflow BYOC 배포는 AWS Commercial 리전의 모든 계정에서 사용할 수 있어요.

번들 (Bundle)

그룹 NAR
org.apache.nifi nifi-slack-nar

설명 (Description)

구성된 Slack 채널 하나 이상에서 메시지를 가져와요. 메시지는 JSON 형식으로 기록돼요. 이 프로세서를 구성하고 Slack에서 메시지를 가져오도록 활성화하는 방법은 Usage / Additional Details를 참고해요.

태그 (Tags)

conversation, conversation.history, slack, social media, team, text, unstructured

입력 요구사항 (Input Requirement)

FORBIDDEN

민감한 동적 속성 지원 (Supports Sensitive Dynamic Properties)

아니요 (false)

속성 (Properties)

속성 설명
Access Token NiFi가 보내는 Slack 요청을 인증/승인하는 데 사용하는 OAuth Access Token이에요. User Token 또는 Bot Token일 수 있어요. 사용 중인 대화 유형에 따라 channels:history, groups:history, im:history 또는 mpim:history 범위가 부여되어야 해요.
Batch Size Slack에 대한 단일 요청에서 가져올 최대 메시지 수예요. 전체 응답이 메모리에 파싱되므로 이 값을 설정할 때 이 점을 유의해야 해요.
Channels 메시지를 가져올 Slack 채널의 쉼표로 구분된 목록이에요. 각 요소는 C0L9VCD47 같은 채널 ID이거나 (공개 채널만) #general처럼 # 기호가 붙은 채널 이름일 수 있어요. 이름이 제공되면 제공된 Access Token에 채널 ID를 확인하기 위한 channels:read 범위가 부여되어야 해요. 채널 ID를 찾는 방법은 프로세서의 Additional Details를 참고해요.
Include Message Blocks 출력 JSON에 각 Slack 메시지의 'blocks' 필드 값을 포함할지 여부를 지정해요. 이 필드에는 리치 텍스트로 서식이 지정된 메시지의 개별 부분 같은 정보가 포함돼요. 예를 들어 파싱에 유용할 수 있어요. 하지만 데이터에서 상당한 비중을 차지하는 경우가 많아 유용하지 않다면 null로 설정할 수 있어요.
Include Null Fields 출력 JSON에 값이 null인 필드를 포함할지 여부를 지정해요. true이면 Slack 메시지에서 null 값을 가진 필드가 JSON에 null 값으로 포함돼요. false이면 키가 출력 JSON에서 완전히 생략돼요. null 값 생략은 처리에 일반적으로 더 효율적인 더 작은 메시지를 만들어내지만, 특히 스키마 추론에서 값을 포함하면 형식을 더 잘 이해할 수 있어요.
Reply Monitor Frequency 주어진 채널의 모든 메시지를 소비한 후 이 프로세서는 타임스탬프가 현재와 특정 속성에 지정된 시간 사이에 있는 모든 "threaded messages"(또는 Replies)를 주기적으로 폴링해요. 이 속성은 해당 메시지를 폴링하는 빈도를 결정해요. 값을 더 짧게 설정하면 메시지에 대한 답글을 더 빨리 캡처해 지연 시간이 낮아질 수 있어요. 하지만 추가 리소스를 사용하고 Rate Limiting이 발생할 수 있어요.
Reply Monitor Window 주어진 채널의 모든 메시지를 소비한 후 이 프로세서는 타임스탬프가 현재와 과거 이 시간 사이에 있는 모든 "threaded messages"(또는 Replies)를 주기적으로 폴링해 새 답글이 있는지 확인해요. 이 값을 크게 설정하면 추가 리소스가 사용되고 Rate Limiting이 발생할 수 있어요. 하지만 사용자가 이 창 밖에서 시작된 오래된 스레드에 답글을 달면 답글이 캡처되지 않을 수 있어요.
Resolve Usernames User ID를 사용자 이름으로 확인할지 여부를 지정해요. 기본적으로 Slack 메시지는 U0123456789 같은 메시지를 보낸 사용자의 ID는 제공하지만 NiFiUser 같은 사용자 이름은 제공하지 않아요. 사용자 이름을 확인할 수는 있지만 Slack API에 대한 추가 호출이 필요하고 사용된 Token에 users:read 범위가 부여되어야 해요. true로 설정하면 사용자 이름이 최선 노력(best-effort) 정책으로 확인돼요. 사용자 이름을 얻을 수 없으면 건너뜁니다. 또한 사용자 이름을 얻으면 메시지의 특정 필드가 채워지고, 언급이 "Hi " 대신 "Hi @user"처럼 출력되도록 특정 필드가 갱신돼요.

상태 관리 (State management)

범위 설명
CLUSTER Slack 채널 ID를 해당 채널에서 마지막으로 검색한 메시지의 타임스탬프에 매핑해 유지해요. 이를 통해 프로세서가 마지막 실행 이후 게시된 메시지만 검색할 수 있어요. 이 상태는 클러스터에 저장되므로 Primary Node가 변경되면 새 노드가 이전 노드가 중단했던 지점부터 이어받아요.

관계 (Relationships)

이름 설명
success 성공적으로 수신된 Slack 메시지가 이 관계로 라우팅돼요.

기록하는 속성 (Writes attributes)

이름 설명
slack.channel.id 메시지를 가져온 Slack 채널의 ID예요.
slack.message.count FlowFile에 포함된 Slack 메시지 수예요.
mime.type 출력이 항상 JSON 형식이므로 application/json으로 설정돼요.

참고 (See also)

  • org.apache.nifi.processors.slack.ListenSlack

더 알아보기 (Learn more)