Skip to Content
사용자 가이드기능채널Feishu Webhook 전송

Feishu Webhook 전송

Feishu 커스텀 봇을 사용하여 알림과 작업 결과를 해당 그룹으로 전송합니다. 이 방식은 webhook URL과 봇에서 활성화된 경우 서명 시크릿이 필요합니다. 애플리케이션, 장시 연결 또는 인바운드 서버가 필요하지 않습니다. 에이전트와의 대화에는 Feishu 애플리케이션 봇을 사용하십시오.

봇 생성

  1. 대상 Feishu 그룹에 커스텀 봇을 추가합니다.
  2. https://open.feishu.cn/open-apis/bot/v2/hook/으로 시작하는 webhook URL을 복사합니다.
  3. 봇의 보안 설정을 구성합니다. 서명 검증이 활성화된 경우 서명 시크릿도 복사합니다. 키워드 및 IP 제한이 계속 적용됩니다.

URL에는 자격 증명이 포함되어 있습니다. 작업 프롬프트나 전송 대상이 아닌 Channel 구성이나 환경 변수에 보관하십시오. 이 통합은 open.feishu.cn을 지원합니다. Lark 엔드포인트는 포함되지 않습니다.

Feishu에서 발급한 URL을 그대로 사용하십시오. 로컬 검증은 문자, 숫자, -, ., _ 또는 ~를 포함하는 토큰 경로 세그먼트 하나를 필요로 하며, 퍼센트 인코딩, 쿼리 매개변수 또는 프래그먼트가 없어야 합니다.

Channel 구성

이 통합을 Web Shell 또는 settings.json에서 아래 표시된 대로 구성합니다.

워크스페이스의 Channel 설정에 명명된 인스턴스를 추가합니다:

{ "channels": { "team-notices": { "type": "feishu-webhook", "webhookUrl": "$FEISHU_WEBHOOK_URL", "signingSecret": "$FEISHU_WEBHOOK_SECRET" } } }

Qwen Code를 시작하는 환경에서 이 변수들을 설정합니다. 봇이 서명을 필요로 하지 않으면 signingSecret을 생략합니다. 애플리케이션의 App Secret이 아닌 커스텀 봇의 서명 시크릿을 사용하십시오.

해당 워크스페이스에서 데몬을 실행합니다:

qwen serve --channel team-notices

명명된 인스턴스 하나는 그룹 하나를 나타냅니다. 다른 그룹에 대한 추가 인스턴스를 생성합니다. 인스턴스의 URL을 변경하면 이를 참조하는 이후 전송의 대상이 변경됩니다.

Channel을 시작하면 로컬에서 전송 준비 상태가 됩니다. 테스트 메시지를 전송하거나 원격 자격 증명을 검증하지는 않습니다. 중지하면 전송 중인 요청이 취소됩니다. 재시작 또는 리로드하면 저장된 구성 변경 사항이 적용됩니다.

Web Shell 사용

Channels에서 Feishu를 선택한 다음 Webhook(전송 전용)을 선택합니다. 워크스페이스를 선택하고, webhook URL과 선택적 서명 시크릿을 저장한 다음 Channel을 시작합니다. 수신, 페어링 및 에이전트 세션 설정은 이 방식에 적용되지 않습니다. 애플리케이션 봇 방식은 동일한 Feishu 플랫폼 아래에서 계속 사용할 수 있습니다.

Scheduled Tasks에서 영구 작업 세션을 선택하고 이 Channel을 전송 대상으로 선택합니다. Web Shell은 구성된 그룹을 자동으로 채웁니다. 관찰된 연락처나 수동으로 입력한 채팅 ID가 필요하지 않습니다. 기존 실행별 및 수동 트리거 전송 제한이 계속 적용됩니다.

호스트가 Channels 및 Scheduled Tasks를 활성화하고 데몬 워크스페이스를 제공하면 WebShellWithProviders를 통해 동일한 제어를 사용할 수 있습니다.

명시적 API 전송

Notify 및 명시적 프롬프트/예약 전송은 기존 Channel 대상 형식을 사용합니다. 이 어댑터는 하나의 논리적 대상 chat/default을 가집니다:

{ "text": "# Daily report\n\nThe checks passed.", "delivery": { "kind": "channel", "target": { "channelName": "team-notices", "type": "chat", "id": "default" } } }

이것은 워크스페이스 Notify 요청 본문입니다. default는 구성된 그룹의 별칭이며, Feishu 채팅 ID가 아닙니다. 다른 ID 및 사용자 대상은 거부됩니다. 엔드포인트와 서명 시크릿은 Channel 구성에 유지됩니다.

영구 예약 작업은 동일한 대상 튜플을 사용합니다. 전송은 기존 최선 노력 성공적 최종 결과 동작을 유지하며, 현재 실행별 및 수동 트리거 제한이 포함됩니다.

메시지 형식 및 제한

  • 정적 스키마 2.0 카드에서 일반 텍스트와 Markdown을 전송합니다. 제목, 목록, 링크, 펜스 코드, 테이블, 중국어 및 이모지는 유효한 입력으로 유지됩니다. 카드에는 버튼, 스트리밍 업데이트 또는 중복된 미리보기 요약이 없습니다.
  • Feishu의 Markdown 하위 집합을 사용합니다. 완전한 GitHub-flavored Markdown 호환성은 보장되지 않습니다. 테이블은 동일한 카드 내에서 별도 요소를 사용합니다. Feishu는 테이블당 데이터 행 5개 이후에 페이지네이션을 적용합니다.
  • 완전한 <at ...> 및 </at> 태그를 숫자 HTML 엔티티로 이스케이프하여 작업에서 제공한 멘션 마크업이 리터럴 텍스트로 전송되도록 합니다. 이는 코드 예제 내부에도 적용됩니다. 구성 가능한 멘션 및 수신자 조회는 지원되지 않습니다. 클라이언트 렌더링 및 알림 동작은 그룹에서 확인해야 합니다.
  • 이스케이프, 카드 구조 및 선택적 서명을 포함하는 완전한 직렬화된 UTF-8 JSON 요청을 20,000바이트 로컬 예산에 대해 검사합니다. Feishu의 커스텀 봇 가이드는 정확한 바이트 수를 명시하지 않고 20KB를 명시합니다. 이 보수적인 로컬 제한은 측정된 플랫폼 최대값이 아닙니다.
  • 전송 전에 과대 요청을 명시적 전송 실패와 함께 거부합니다. 어댑터는 자동 잘라내기, 여러 요청 분할 또는 재시도를 하지 않습니다. 공유 전송 크기 보호는 이 플랫폼 검사 이전에 계속 적용됩니다. 전체 요청이 맞도록 보고서를 간결하게 유지하십시오.

실패 및 전송

HTTP 상태와 Feishu의 숫자 code가 모두 검사됩니다. 키워드, IP, 서명 및 속도 제한 거부는 관찰 가능한 실패입니다. 오류는 webhook URL, 시크릿, 메시지 내용 및 원시 제공자 응답을 생략합니다.

각 시도는 15초 타임아웃으로 최대 하나의 요청을 전송합니다. 타임아웃 또는 취소는 원격 수락 여부를 알 수 없는 상태로 남길 수 있습니다. Channel은 확인된 워크스페이스 프록시와 기존 NO_PROXY 우회 동작을 사용합니다.

이 방식은 메시지를 수신하거나, 인바운드 webhook 작업을 실행하거나, Channel 루프를 시작하지 않습니다. 첨부 파일, 실패/취소 알림, 내구성 재시도 큐 또는 일반 webhook 프로토콜을 추가하지 않습니다.

플랫폼 구성 및 렌더링 요구 사항에 대해 공식 커스텀 봇 가이드  및 Markdown 구성 요소 문서 를 참조하십시오.

Last updated on