멀티 플랫폼 Channel 개요
Channel 시스템은 Elftia를 크로스 플랫폼 AI 봇으로 바꿔줍니다. Agent를 Discord, Telegram, Slack 및 기타 플랫폼에 동시에 연결하여 어디서든 메시지를 받고, 도구를 호출하고, 답장을 생성할 수 있습니다.
사용 시점
- Discord 서버에 AI 어시스턴트 봇을 배포하고 싶을 때
- Telegram을 통해 Agent와 비공개 대화를 나눠야 할 때
- Slack 워크스페이스에 AI 협업자를 통합하고 싶을 때
- 동일한 Agent가 여러 플랫폼의 사용자에게 동시에 서비스를 제공하도록 하고 싶을 때
지원 플랫폼
| Platform | Type ID | Connection Method | Max Message Length | Category |
|---|---|---|---|---|
| Discord | discord | Bot Token | 2,000 characters | Core |
| Telegram | telegram | Bot Token | 4,096 characters | Core |
| Slack | slack | Bot Token + App Token | 4,000 characters | Core |
| QQ Bot | qqbot | Bot Token | 1,500 characters | China |
| LINE | line | Channel Access Token + Secret | 5,000 characters | Core |
email | SMTP + IMAP credentials | 100,000 characters | Core | |
whatsapp | Phone number | 65,000 characters | Core | |
wechat | Wechaty Token | 2,000 characters | China | |
| Matrix | matrix | Access Token | 65,536 characters | Extended |
| Microsoft Teams | msteams | App ID + Password | 28,000 characters | Extended |
| Mattermost | mattermost | Bot Token | 16,383 characters | Extended |
| WeCom (Enterprise WeChat) | wecom | Webhook Key | 4,000 characters | China |
| WeCom (App) | wecom-app | Corp ID + Secret | 4,000 characters | China |
:::tip 플랫폼은 플러그인입니다 모든 플랫폼은 Channel 플러그인으로 구현됩니다. 내장 플러그인은 앱과 함께 제공되며, 추가 플러그인은 Marketplace를 통해 다운로드하고 설치할 수 있습니다. :::
핵심 개념
Channel 인스턴스
각 Channel 인스턴스는 외부 플랫폼에 대한 연결을 나타냅니다. 동일한 플랫폼에 대해 여러 인스턴스를 만들 수 있습니다(예: 서로 다른 Discord 봇 두 개 연결). 각 인스턴스는 다음을 독립적으로 관리합니다.
- Credentials: 연결에 필요한 토큰/키
- Trigger rules: Agent가 언제 답장해야 하는지 결정합니다(트리거 규칙 및 보안 참조)
- Connection state: disconnected / connecting / connected / error
트리거 규칙
트리거 규칙은 Agent가 어떤 메시지에 응답할지 결정합니다.
| Mode | Description | Best For |
|---|---|---|
all | 모든 메시지에 답장 | 개인 봇, 테스트 환경 |
mention | @멘션된 경우에만 답장 | 다중 사용자 그룹, 공유 서버 |
keyword | 지정한 키워드가 일치할 때 답장 | 주제별 트리거 |
dm_only | 다이렉트 메시지에만 답장 | 비공개 채팅만 허용하는 공개 그룹 |
보안 파이프라인
모든 메시지는 Agent에 도달하기 전에 여러 보안 검사를 통과합니다.
- InputSanitizer — 보이지 않는 제어 문자를 제거합니다
- RateLimiter — 속도 제한(스팸 플러딩 방지)
- PromptGuardian — AI 기반 프롬프트 인젝션 감지
- UserPermissionService — 역할 기반 접근 제어
- ChannelPermissionGate — 민감한 작업 확인 메커니즘
워크플로
External platform message (Discord/Telegram/...)
│
▼
Channel Plugin ─── receive and parse message
│
▼
ChannelPluginRegistry ─── convert to unified ChannelMessage format
│
▼
ChannelMessageRouter ─── security pipeline checks + trigger rule matching
│
▼
ChannelMagiBridge ─── convert to MagiIncomingMessage
│
▼
MagiService (Agent) ─── process and generate reply
│
▼
ChannelMessageRouter ─── format + message splitting
│
▼
Channel Plugin ─── send reply back to the original platform
플러그인 아키텍처
Channel 시스템은 두 가지 플러그인 소스를 지원하는 플러그인 기반 아키텍처를 사용합니다.
| Source | Directory | Description | Priority |
|---|---|---|---|
| Built-in (Bundled) | resources/bundled-channel-plugins/ | 앱 설치 프로그램과 함께 배포되며 읽기 전용 | 낮음 |
| User (Marketplace) | {userData}/channel-plugins/ | Marketplace에서 다운로드하거나 수동 설치되며 읽기/쓰기 가능 | 높음 |
동일한 플러그인 타입이 두 디렉터리에 모두 존재하면 사용자 디렉터리 버전이 우선합니다(더 최신 Marketplace 버전일 수 있음).
각 플러그인에는 플러그인 타입, 진입 파일, 필요한 자격 증명 및 기타 정보를 선언하는 elftia-channel.json 매니페스트 파일이 포함되어야 합니다.
빠른 시작
- Settings → Channel을 엽니다
- Add Channel을 클릭하고 플랫폼을 선택합니다(예: Discord)
- 플러그인이 설치되어 있지 않으면 시스템이 Marketplace에서 자동으로 다운로드합니다
- 플랫폼 자격 증명을 입력합니다(예: Discord Bot Token)
- 트리거 규칙을 구성합니다(권장: 테스트에는
mention모드로 시작) - Connect를 클릭해 인스턴스를 시작합니다
- 해당 플랫폼에서 봇에게 메시지를 보내 연결을 확인합니다
다음 단계
- Discord 설정 가이드 — Discord 봇 구성에 대한 자세한 단계
- 트리거 규칙 및 보안 — 트리거 모드 구성 및 보안 파이프라인 세부 정보