メインコンテンツへ移動

ChannelProvider

ChannelProvider は、Agent をメッセージングプラットフォームに接続するためにプラットフォーム統合が実装するインターフェースです。Provider は統合のライフサイクル全体を管理します。これには、アプリのプロビジョニングと OAuth、Webhook のルーティングとイベント処理、Adapter の作成と Agent への接続、認証情報の管理が含まれます。

Provider は、任意の ID をキーとして Mastra コンストラクターの channels に登録します。各 Provider のルートはサーバーの API ルートに自動的に統合され、Mastra の起動時に initialize() が実行されます。

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 は、プラットフォームが Webhook とイベントを送信する公開 URL です。本番環境では、デプロイ済みの Mastra サーバーの URL を指定します。ローカル開発ではプラットフォームから http://localhost:4111 にアクセスできないため、cloudflaredngrok などのトンネルを実行し、イベントがローカルの開発プロセスに届くように baseUrl をトンネル URL(例:https://abc123.trycloudflare.com)に設定します。

最初の組み込み実装は SlackProvider です。カスタム Provider を構築するには、このインターフェースを実装します。

プロパティ
プロパティへの直接リンク

id:

string
この Channel タイプの一意な識別子(例:'slack'、'discord')。イベントのルーティングや、Mastra から Provider を取得する際のキーとして使用されます。

メソッド
メソッドへの直接リンク

getRoutes:

() => ApiRoute[]
この Channel の API ルート(OAuth、Webhook、イベント)を返します。これらはサーバーの apiRoutes に自動的に統合されます。

initialize?:

() => Promise<void>
すべての Agent が登録された後、Mastra の初期化中に呼び出されます。アクティブなインストールの復元など、非同期のセットアップに使用します。新しいアプリはプロビジョニングしません。

configure?:

(credentials: Record<string, unknown> | null) => void | Promise<void>
実行時にプラットフォームの認証情報を設定または消去します。認証情報を消去して保存済みトークンを削除するには null を渡します。

getInfo?:

() => ChannelPlatformInfo
Editor UI 向けの検出メタデータ(プラットフォーム名、設定ステータス、接続オプションのスキーマ)を返します。

connect?:

(agentId: string, options?: Record<string, unknown>) => Promise<ChannelConnectResult>
Agent をプラットフォームに接続します。接続の完了に必要な認可フローを示す判別可能な結果を返します。

disconnect?:

(agentId: string) => Promise<void>
Agent をプラットフォームから切断します。プラットフォームアプリを削除し、保存済みの状態を消去します。

listInstallations?:

() => Promise<ChannelInstallationInfo[]>
このプラットフォームのアクティブなインストールを一覧表示します。公開情報のみを返し、シークレットは返しません。

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()