sms-10dlc-registration について
sms-10dlc-registration は、米国の A2P 10DLC 登録に向けてコンプライアンス資料と Sent のキャンペーンリクエストを準備するスキルです。証拠パケットと API ペイロードを分け、継承設定と段階的な検証を扱います。
主な機能
- 01バージョン付き証拠パケットの準備
- 02キャンペーン API ペイロードの検証
- 03ブランドとキャンペーンの継承設定
- 04作成・TCR 提出・有効化の区別
活用シーン
- 01米国 10DLC キャンペーン登録の準備
- 02マーケティングや混合トラフィックのサンプル要件確認
- 03登録状態と TCR 提出状況の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sentdm/ sent-plugin --skill sms-10dlc-registrationインストール後、Claude Code で/sms-10dlc-registrationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/10dlc-evidence-checklist.md10dlc-rejection-remediation.mdtcr-use-cases.mdscripts/validate_10dlc_packet.pyvalidate_campaign_payload.pyscripts/fixtures/bad.jsoncampaign_bad.jsoncampaign_good.jsongood.json詳細
SMS 10DLC 登録
米国の 10 桁ロングコードを使った A2P SMS には、このスキルを使用してください。コンプライアンス証拠パケットと、正確な Sent API リクエストは分けてください。それぞれスキーマとバリデーターが異なります。
現在のフィールド要件や書類要件、または正確な SMS 設定呼び出しについては、この登録証拠を準備する前に sent-compliance を使用してください。そのプランは新しい Sender Profile を作成し、既存プロファイルのキャンペーンは管理しません。
現在の Sent リソースモデル
現行の v3 API に、単独のブランド CRUD パスはありません。
POST /v3/profiles内でbrandとinherit_tcr_brand: falseを使用して、専用ブランドを作成します。GET|POST /v3/profiles/{profileId}/campaignsでキャンペーンを一覧表示または作成します。PUT|DELETE /v3/profiles/{profileId}/campaigns/{campaignId}で更新または削除します。
独立したブランドパスを再導入する案内は拒否してください。
継承を慎重に選択する
| ブランド | キャンペーン | 設定 |
|---|---|---|
| 両方を継承 | 組織のブランドとキャンペーン | inherit_tcr_brand: true、inherit_tcr_campaign: true |
| ブランドを継承し、独自のキャンペーンを使用 | テナント固有のトラフィックを伴う共有の法的ブランド | ブランドは true、キャンペーンは false |
| 両方を独自に用意 | 専用テナント/事業者 | 両方を false にし、プロファイル作成時に brand を指定 |
継承したキャンペーンは読み取り専用です。ブランドの継承が true の場合、プロファイルに brand を指定できません。
2 つの検証レイヤー
証拠準備パケット
非公開パケットでは、明示的な内部バージョン sent-10dlc-evidence/v1 と snake_case の証拠フィールドを使用します。これは API ペイロードではありません。
python scripts/validate_10dlc_packet.py evidence.json
法的な事業者情報、公開されているウェブサイト/ポリシーへのリンク、同意の証明、メッセージのフロー、オプトイン/オプトアウト/ヘルプへの応答とキーワード、ユースケース、現実的なサンプルを収集してください。references/10dlc-evidence-checklist.md を参照してください。
Sent キャンペーンリクエスト
API リクエストでは、正確な camelCase と campaign ラッパーを使用します。
{
"campaign": {
"name": "Acme account notifications",
"description": "Account and delivery notifications for opted-in customers.",
"type": "App",
"useCases": [
{
"messagingUseCaseUs": "ACCOUNT_NOTIFICATION",
"sampleMessages": [
"Acme Example: Your account preference was updated. Reply STOP to opt out."
]
}
],
"volume": "2000",
"messageFlow": "Customers opt in in account settings before notifications begin.",
"privacyPolicyLink": "https://example.com/privacy",
"termsAndConditionsLink": "https://example.com/terms",
"optinMessage": "Acme Example: You are subscribed. Reply STOP to opt out.",
"optoutMessage": "Acme Example: You are unsubscribed and will receive no more messages.",
"helpMessage": "Acme Example: Visit https://example.com/support for help.",
"optinKeywords": "START,YES",
"optoutKeywords": "STOP,UNSUBSCRIBE",
"helpKeywords": "HELP,INFO"
},
"sandbox": true
}
次のコマンドで検証してください。
python scripts/validate_campaign_payload.py campaign.json
API ユースケース
現在の 13 個の値をすべてサポートします。
MARKETING、ACCOUNT_NOTIFICATION、CUSTOMER_CARE、FRAUD_ALERT、TWO_FA、DELIVERY_NOTIFICATION、SECURITY_ALERT、M2M、MIXED、HIGHER_EDUCATION、POLLING_VOTING、PUBLIC_SERVICE_ANNOUNCEMENT、LOW_VOLUME。
各ユースケースでは、構造上 1~5 件のサンプルを受け付け、各サンプルの長さは 1,024 文字以下です。コンプライアンスレイヤーでは、マーケティングおよび混合トラフィック(低ボリュームの混合トラフィックを含む)に対し、少なくとも 2 件のサンプルが必要です。OpenAPI がすべてのトラフィックに 2 件を要求しているかのように扱わず、このポリシー上の違いを明示してください。
ボリュームとステータス
volume は任意で、指定する場合は数値文字列にします。"2000" 未満の値は文書化された低ボリュームのティアに該当し、"2000" が次のティアとの境界です。
キャンペーンのレスポンスでは、現在、ステータス SENT_CREATED、ACTIVE、EXPIRED と submittedToTCR が公開されています。将来追加される未知のステータス文字列はそのまま保持してください。Sent レコードの作成成功と、TCR への送信またはキャリアによる有効化を混同しないでください。
安全なワークフロー
- これが米国の A2P 10DLC トラフィックであること、および実際の送信事業者が特定されていることを確認します。
- ブランド/キャンペーンの継承方法を選択します。
- バージョン管理された証拠パケットを検証します。
- プロファイルのブランドを作成するか、既存のブランドを確認します。
- 証拠を正確な camelCase のキャンペーンリクエストに変換します。
- ローカルで検証し、
sandbox: trueを使用します。 - 実際の作成/更新/削除を行う前にペイロードを提示し、確認を得ます。
- プロファイル ID、キャンペーン ID、
submittedToTCR、未加工のステータス、審査証拠を保存します。 - 前提条件が整ってから、必須の
webHookUrlを使ってプロファイルを完成させます。
フィクスチャやサンプルでは、実際の消費者データを決して使用しないでください。分類には references/tcr-use-cases.md を、失敗への対処には references/10dlc-rejection-remediation.md を使用してください。