- 아웃바운드 메시지 전송(상태 업데이트, 아티팩트, 보고서).
- 인바운드 메시지 수신(사용자가 그룹 채팅에서 질문을 하면 에이전트가 답변).
- 민감한 도구 호출을 인터랙티브 카드로 전달되는 인간 승인 뒤에 배치.
채널이 조직 범위인 이유
채널은 외부 IM 플랫폼에서 조직의 정체성입니다 — 개인의 핫라인이 아닙니다. 에이전트가 Feishu 그룹에 카드를 게시할 때, 메시지는 채널을 구성한 조직의 권한을 가집니다: 봇은 해당 조직의 Feishu 테넌트에 등록되고, 그룹 멤버는 해당 조직 내의 동료이며, 승인 / 감사 추적은 해당 조직에 속합니다. FIM One은 이 매핑을 일대일로 반영합니다:| FIM One | 외부 IM 플랫폼 |
|---|---|
| 조직 | Feishu 테넌트 / 엔터프라이즈 (및 관리자) |
| 채널 | 해당 테넌트가 소유한 봇 + 그룹 채팅 |
| 조직 멤버 | 승인, 알림 수신 또는 카드에 반응할 수 있는 해당 테넌트 내의 사람 |
| 에이전트 (조직 게시) | 조직을 대신하여 행동하는 AI 워커 |
FeishuGateHook (승인 라우팅)과 완료 알림 (에이전트 구성 채널) 모두 동일한 조직 정체성 경계를 존중합니다.
지원되는 플랫폼
| Platform | Status | Inbound | Outbound | Approval card |
|---|---|---|---|---|
| Feishu (Lark) | GA | Yes | Yes | Yes (feishu_gate hook) |
| Slack | Planned | — | — | — |
| DingTalk | Planned | — | — | — |
채널이 Hook과 상호작용하는 방식
feishu_gate hook은 Feishu 채널의 주요 소비자입니다. 에이전트가 requires_confirmation: true로 표시된 도구를 호출하려고 할 때, hook은:
- 조직의 활성 Feishu 채널을 해결합니다.
- 도구 이름과 인수가 포함된 대화형 승인 카드를 렌더링합니다.
- 카드를 구성된 그룹 채팅(
chat_id)에 게시합니다. - 그룹 멤버가 Approve 또는 Reject를 탭할 때까지 도구 호출을 일시 중단합니다.
- 판정에 따라 도구를 재개(또는 중단)하고 SSE를 통해 결정을 다시 스트리밍합니다.
model_config_json.hooks.class_hooks = ["feishu_gate"]를 통해 에이전트에 hook을 연결하거나, 에이전트 편집기에서 토글합니다.
채널 생성
- 조직 소유자 또는 관리자로 로그인합니다.
- 조직 설정 → 채널 → 새 채널로 이동합니다.
- 채널 유형을 선택하고(예: Feishu), 자격 증명을 입력하고, 대상 채팅을 선택한 후 저장합니다.
- 테스트 메시지 전송을 클릭하여 양방향 연결을 확인합니다.
보안 참고사항
- 앱 시크릿과 암호화 키는 백엔드의
FERNET_SECRET_KEY를 사용하여 저장 시 암호화됩니다. - 콜백 엔드포인트(
/api/channels/{id}/callback)는 이벤트에 대해 작동하기 전에 저장된encrypt_key/verification_token에 대해 모든 서명을 검증합니다. - 대상 그룹 채팅의 멤버만 승인 카드를 승인하거나 거부할 수 있습니다 — FIM One은 메시징 플랫폼이 이미 부여한 것 이상의 추가 권한을 부여하지 않습니다.