salla-app-functions について
ストアイベントのハンドラーを実装する開発者向けに、Salla App Functions の構築手順を案内するスキルです。設計、ハンドラー作成、検証、リリース、テストをつなぎ、Webhook より関数が適する場面も説明します。
主な機能
- 01構築ステップ別スキルへの案内
- 02トリガーと同期・非同期動作の指針
- 03ハンドラー、サンドボックス、タイムアウトの説明
- 04検証・デプロイ・プレビューの手順
- 05公開・非公開アプリの公開手順
活用シーン
- 01Salla のストアイベントトリガーの選択
- 02操作の変更やブロックが可能な同期ハンドラーの構築
- 03デモストアでの関数プレビュー
- 04公開・非公開アプリ向け関数の公開
MCP 対応
Salla Partners MCP ツールで関数の一覧表示、取得、保存、削除、デプロイ、プレビューを行い、アプリの検証や公開をする方法を説明します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sallaapp/ salla-partners-agent-kit --skill salla-app-functionsインストール後、Claude Code で/salla-app-functionsを入力して読み込まれたか確認します。
詳細
Salla App Functions
サーバーレスハンドラーは、ストアのイベント発生時に Salla が自動的に実行します。ロジックを記述すると、Salla がサンドボックス化された V8 ランタイムで実行します。このスキルはルーターです。手順を順番に進め、それぞれ専用のスキルで作業し、次に進む前にすべてのゲートをクリアしてください。
ビルドの流れ — 各ステップのスキルに進む
| ステップ | 実行する内容 | スキル |
|---|---|---|
| 1 | トリガーを選び、payload.dataを確認し、同期処理か非同期処理かを決める | salla-app-functions-design |
| 2 | ハンドラーを記述する(テンプレート、コンテキスト、Resp、サンドボックス、タイムアウト) | salla-app-functions-handler |
| 3 | テンプレートラッパー(最初と最後の行)を保持し、ローカルで型チェックする(保存する前に) | salla-app-functions-validate |
| 4 | 保存する(デモストアにデプロイされます) | salla-app-functions-release |
| 5 | salla_functions action=previewでデモストア上でテストする(戻り値を確認する) | salla-app-functions-test |
| 6 | 本番環境向けに公開する(公開アプリ:app_publishで検証→パートナーがPortalで申請。プライベートアプリ:salla_private_apps action=publish) | salla-app-functions-release |
トリガーがある場合は、WebhookよりApp Functionを優先してください
- 署名検証なしでも安全 — Salla のサンドボックスで実行されます。受信リクエストはなく、
X-Salla-Signatureもありません。 - 設定を認識 — マーチャントの設定は
context.settingsに渡されるため、追加のフェッチは不要です。 - 認証済み —
Authorizationヘッダーなしで、ハンドラーから Salla Admin API を直接呼び出せます(トークンの保存や更新は不要です。トークンの処理は Salla が行います。ご自身で行う必要はありません→salla-app-auth)。実装の詳細はsalla-app-functions-handlerを参照してください。呼び出し自体(ベース URL、エンドポイント、スコープ、上限付きフェッチ、エラー形式)についてはsalla-api-coreを参照してください。 - 同期型で処理を制御可能 — 同期アクション(例:
shipment.creating)は操作の前に実行され、戻り値によって操作の形式を決めたり、ブロックしたりできます。Webhookは操作後に反応するだけです。
App Functionのトリガーがない場合、または処理をランタイムのタイムアウトや V8 アイソレートの制限内に収められない場合は、Webhook(salla-webhooks)を使用してください(npmは使用不可、fs/net/httpサーバー/child_processは使用不可、Web Cryptoのみ使用可能、HTTPにはfetchを使用)。着手する前に、salla-app-functions-handlerでこれらの制限を確認してください。
Salla Partners MCP を使って操作する
| ツール | アクション | 説明 |
|---|---|---|
salla_functions | list_triggers get save delete deploy_status preview | トリガーを一覧表示します。template、types(.d.ts の URL)、保存済みの content を読み込みます。登録・更新、削除、デプロイの状態確認、デモストアでの実行を行います |
app_publish | open set validate | 公開アプリ:公開内容を検証します(DRAFT として保存されます。パートナーが Portal で送信します)。これにより、実際のストアで関数を利用できるようになります |
salla_private_apps | publish | プライベートアプリ:app_id と、パートナーの確認後に confirm: true を指定して公開し、指定したストアで関数を利用できるようにします |
同期アクションの合計時間は最大 5 秒です(内部の非同期呼び出しはそれぞれ2 秒未満にしてください。加盟店が処理を待たされるため、ドキュメントでは500 ms 未満を推奨しています。これは目標値であり、上限ではありません)。非同期イベントの制限時間は30 秒です。
Resp、エンティティビルダー(例:Shipment)、CommunicationEvent、すべての型付きコンテキストは、実行時に事前宣言されたグローバルです。スコープ内にあるので、そのまま使用してください。実行環境は Node ではなく、V8 isolateです。モジュールやレスポンスの詳細については、salla-app-functions-handlerをご覧ください。
ステップ 0 — 確認する(最初に質問する)
- どのトリガーで実行しますか?(例:
order.created、shipment.creating) - トリガーが実行されたとき、何を行いますか?(通知、同期、検証/ブロック、パラメーターの変更)
- 操作をブロックまたは変更しますか? それとも、発生後に反応するだけですか?
主なリソース
- 概要 https://docs.salla.dev/1726814m0.md · はじめに https://docs.salla.dev/1726815m0.md
- 対応イベント https://docs.salla.dev/1726818m0.md · テスト https://docs.salla.dev/1726816m0.md
- レスポンス https://docs.salla.dev/1758222m0.md · Node.js のサポート https://docs.salla.dev/1769435m0.md
- Partners Portal https://portal.salla.partners · コミュニティ https://t.me/salladev