본문으로 건너뛰기

멀티 플랫폼 Channel 개요

Channel 시스템은 Elftia를 크로스 플랫폼 AI 봇으로 바꿔줍니다. Agent를 Discord, Telegram, Slack 및 기타 플랫폼에 동시에 연결하여 어디서든 메시지를 받고, 도구를 호출하고, 답장을 생성할 수 있습니다.

사용 시점

  • Discord 서버에 AI 어시스턴트 봇을 배포하고 싶을 때
  • Telegram을 통해 Agent와 비공개 대화를 나눠야 할 때
  • Slack 워크스페이스에 AI 협업자를 통합하고 싶을 때
  • 동일한 Agent가 여러 플랫폼의 사용자에게 동시에 서비스를 제공하도록 하고 싶을 때

지원 플랫폼

PlatformType IDConnection MethodMax Message LengthCategory
DiscorddiscordBot Token2,000 charactersCore
TelegramtelegramBot Token4,096 charactersCore
SlackslackBot Token + App Token4,000 charactersCore
QQ BotqqbotBot Token1,500 charactersChina
LINElineChannel Access Token + Secret5,000 charactersCore
EmailemailSMTP + IMAP credentials100,000 charactersCore
WhatsAppwhatsappPhone number65,000 charactersCore
WeChatwechatWechaty Token2,000 charactersChina
MatrixmatrixAccess Token65,536 charactersExtended
Microsoft TeamsmsteamsApp ID + Password28,000 charactersExtended
MattermostmattermostBot Token16,383 charactersExtended
WeCom (Enterprise WeChat)wecomWebhook Key4,000 charactersChina
WeCom (App)wecom-appCorp ID + Secret4,000 charactersChina

:::tip 플랫폼은 플러그인입니다 모든 플랫폼은 Channel 플러그인으로 구현됩니다. 내장 플러그인은 앱과 함께 제공되며, 추가 플러그인은 Marketplace를 통해 다운로드하고 설치할 수 있습니다. :::

핵심 개념

Channel 인스턴스

각 Channel 인스턴스는 외부 플랫폼에 대한 연결을 나타냅니다. 동일한 플랫폼에 대해 여러 인스턴스를 만들 수 있습니다(예: 서로 다른 Discord 봇 두 개 연결). 각 인스턴스는 다음을 독립적으로 관리합니다.

  • Credentials: 연결에 필요한 토큰/키
  • Trigger rules: Agent가 언제 답장해야 하는지 결정합니다(트리거 규칙 및 보안 참조)
  • Connection state: disconnected / connecting / connected / error

트리거 규칙

트리거 규칙은 Agent가 어떤 메시지에 응답할지 결정합니다.

ModeDescriptionBest For
all모든 메시지에 답장개인 봇, 테스트 환경
mention@멘션된 경우에만 답장다중 사용자 그룹, 공유 서버
keyword지정한 키워드가 일치할 때 답장주제별 트리거
dm_only다이렉트 메시지에만 답장비공개 채팅만 허용하는 공개 그룹

보안 파이프라인

모든 메시지는 Agent에 도달하기 전에 여러 보안 검사를 통과합니다.

  1. InputSanitizer — 보이지 않는 제어 문자를 제거합니다
  2. RateLimiter — 속도 제한(스팸 플러딩 방지)
  3. PromptGuardian — AI 기반 프롬프트 인젝션 감지
  4. UserPermissionService — 역할 기반 접근 제어
  5. 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 시스템은 두 가지 플러그인 소스를 지원하는 플러그인 기반 아키텍처를 사용합니다.

SourceDirectoryDescriptionPriority
Built-in (Bundled)resources/bundled-channel-plugins/앱 설치 프로그램과 함께 배포되며 읽기 전용낮음
User (Marketplace){userData}/channel-plugins/Marketplace에서 다운로드하거나 수동 설치되며 읽기/쓰기 가능높음

동일한 플러그인 타입이 두 디렉터리에 모두 존재하면 사용자 디렉터리 버전이 우선합니다(더 최신 Marketplace 버전일 수 있음).

각 플러그인에는 플러그인 타입, 진입 파일, 필요한 자격 증명 및 기타 정보를 선언하는 elftia-channel.json 매니페스트 파일이 포함되어야 합니다.

빠른 시작

  1. Settings → Channel을 엽니다
  2. Add Channel을 클릭하고 플랫폼을 선택합니다(예: Discord)
  3. 플러그인이 설치되어 있지 않으면 시스템이 Marketplace에서 자동으로 다운로드합니다
  4. 플랫폼 자격 증명을 입력합니다(예: Discord Bot Token)
  5. 트리거 규칙을 구성합니다(권장: 테스트에는 mention 모드로 시작)
  6. Connect를 클릭해 인스턴스를 시작합니다
  7. 해당 플랫폼에서 봇에게 메시지를 보내 연결을 확인합니다

다음 단계