ChannelProvider
ChannelProvider は、Agent をメッセージングプラットフォームに接続するためにプラットフォーム統合が実装するインターフェースです。Provider は統合のライフサイクル全体を管理します。これには、アプリのプロビジョニングと OAuth、Webhook のルーティングとイベント処理、Adapter の作成と Agent への接続、認証情報の管理が含まれます。
Provider は、任意の ID をキーとして Mastra コンストラクターの channels に登録します。各 Provider のルートはサーバーの API ルートに自動的に統合され、Mastra の起動時に initialize() が実行されます。
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 は、プラットフォームが Webhook とイベントを送信する公開 URL です。本番環境では、デプロイ済みの Mastra サーバーの URL を指定します。ローカル開発ではプラットフォームから http://localhost:4111 にアクセスできないため、cloudflared や ngrok などのトンネルを実行し、イベントがローカルの開発プロセスに届くように baseUrl をトンネル URL(例:https://abc123.trycloudflare.com)に設定します。
最初の組み込み実装は SlackProvider です。カスタム Provider を構築するには、このインターフェースを実装します。
プロパティプロパティへの直接リンク
id:
メソッドメソッドへの直接リンク
getRoutes:
initialize?:
configure?:
getInfo?:
connect?:
disconnect?:
listInstallations?:
Provider へのアクセスProvider へのアクセスへの直接リンク
登録時に使用した ID をキーとして、channels ゲッターから登録済み Provider にアクセスします。このゲッターの型はコンストラクター設定から推論されるため、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()