본문으로 건너뛰기

채널 제공자

ChannelProviderAgent를 메시징 플랫폼에 연결하기 위해 플랫폼 통합이 구현하는 인터페이스입니다. 공급자는 앱 프로비저닝 및 OAuth, 웹훅 라우팅 및 이벤트 처리, 어댑터 생성 및 Agent 연결, 자격 증명 관리 등 통합의 전체 수명주기를 소유합니다.

공급자를 등록하세요.Mastra constructor under channels, 선택한 ID로 입력됩니다. 각 공급자의 경로는 서버의 API 경로에 자동으로 병합됩니다.initialize()Mastra 시작 중에 실행됩니다.

src/mastra/index.ts
import { Mastra } from '@mastra/core/mastra'
import { SlackProvider } from '@mastra/slack'

export const mastra = new Mastra({
channels: {
slack: new SlackProvider({
refreshToken: process.env.SLACK_REFRESH_TOKEN!,
baseUrl: process.env.MASTRA_BASE_URL,
}),
},
})

Provider의 baseUrl은 플랫폼이 웹훅과 이벤트를 전송하는 공개 URL입니다. 프로덕션에서는 배포된 Mastra 서버 URL을 사용합니다. 로컬 개발 환경에서는 플랫폼이 http://localhost:4111에 접근할 수 없으므로 터널(cloudflared 또는 ngrok 등)을 실행하고 이벤트가 로컬 개발 프로세스에 도달하도록 baseUrl을 터널 URL(예: https://abc123.trycloudflare.com)로 지정하세요. SlackProvider최초의 내장 구현입니다. 이 인터페이스를 구현하여 사용자 정의 공급자를 구축합니다.

속성
속성에 대한 직접 링크

id:

string
이 채널 유형의 고유 식별자입니다(예: 'slack' 또는 'discord'). 이벤트를 라우팅하고 Mastra에서 Provider를 조회할 때 키로 사용됩니다.

행동 양식
행동 양식에 대한 직접 링크

getRoutes:

() => ApiRoute[]
이 채널의 API 경로(OAuth, 웹훅, 이벤트)를 반환합니다. 이 경로는 서버의 apiRoutes에 자동으로 병합됩니다.

initialize?:

() => Promise<void>
모든 Agent가 등록된 후 Mastra 초기화 중에 호출됩니다. 활성 설치 복원과 같은 비동기 설정에 사용하세요. 새 앱을 프로비저닝하지는 않습니다.

configure?:

(credentials: Record<string, unknown> | null) => void | Promise<void>
런타임에 플랫폼 자격 증명을 제공하거나 지웁니다. 자격 증명을 지우고 저장된 토큰을 삭제하려면 null을 전달하세요.

getInfo?:

() => ChannelPlatformInfo
편집기 UI를 위한 검색 메타데이터인 플랫폼 이름, 구성 상태, 연결 옵션 스키마를 반환합니다.

connect?:

(agentId: string, options?: Record<string, unknown>) => Promise<ChannelConnectResult>
Agent를 플랫폼에 연결합니다. 연결을 완료하는 데 필요한 인증 흐름을 설명하는 판별된 결과를 반환합니다.

disconnect?:

(agentId: string) => Promise<void>
플랫폼에서 Agent의 연결을 해제합니다. 플랫폼 앱을 삭제하고 저장된 상태를 정리합니다.

listInstallations?:

() => Promise<ChannelInstallationInfo[]>
이 플랫폼의 활성 설치를 나열합니다. 공개 정보만 반환하며 비밀 정보는 반환하지 않습니다.

공급자에 액세스
공급자에 액세스에 대한 직접 링크

등록할 때 사용한 ID를 키로 하는 channels getter를 통해 등록된 Provider에 접근하세요. getter의 타입은 생성자 구성에서 추론되므로 mastra.channels.slack은 모든 메서드를 갖춘 구체적인 Provider입니다.

await mastra.channels.slack.configure({ refreshToken })

키를 런타임에만 알 수 있다면 대신 문자열 ID로 Provider를 조회하세요. getChannelProvider는 구체적인 타입을 제네릭으로 받으며, getChannelProviders는 등록된 모든 Provider를 ID를 키로 하여 반환합니다.

import type { SlackProvider } from '@mastra/slack'

const slack = mastra.getChannelProvider<SlackProvider>('slack')
const all = mastra.getChannelProviders()