在注册消息活动之前先验证品牌资格
一个 10DLC 消息活动描述注册企业打算发送的消息、收件人如何同意,以及他们如何获取帮助或停止接收消息。此 API 创建注册机构记录;完成生产环境运营商激活是一个单独的帐户设置步骤。请使用您通过品牌注册获得的自有品牌,然后加载其可用用例和所选用例的当前要求.
使用当前资格验证结果选择子用例、符合条件的网络 ID、消息示例和选择加入/退出/帮助声明。要求可能因品牌和网络而异。请勿提交示例中的标识符,也不要为流程不同的企业复制其同意说明。
保持沙盒环境与生产环境分离
对于沙盒练习,请使用您自己的模拟品牌和其符合资格的当前用例。仅当该资格提供 TRIAL 时才使用它。门户会检查所选品牌与消息活动环境是否一致。直接 API 请求不会为您运行门户的完整向导验证,因此请在集成中保持这种分离。
生产消息活动的创建是计费的,不会自动使某个号码具备发送条件。请保持消息活动环境与其品牌一致,并在创建正式消息活动之前查看费用和适用条款。
提交消息活动 JSON
使用您符合资格的值准备 campaign.json。R000000 表示无经销商;仅当这正是预期配置时才使用它。对于常规 MultiTEL 经销商配置,请从您帐户的经销商集合或门户准备流程中获取允许的 MultiTEL LLC 经销商标识符,而不要硬编码他人的标识符。
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
'https://api.multitel.net/tcr/v2/reseller?companyName=MultiTEL%20LLC&recordsPerPage=500'以下 JSON 说明了针对自有模拟品牌的试用消息活动。请将品牌、用例、经销商和同意文本替换为实际符合您测试资格的值。
{
"brandId": "B123ABC",
"channelId": "10DLC",
"usecase": "TRIAL",
"subUsecases": [],
"resellerId": "R000000",
"description": "Trial account notices requested by users of the example application.",
"messageFlow": "Test users explicitly select an unchecked consent box before requesting these trial notices.",
"sample1": "Example application: your requested account notice is available. Reply STOP to stop notices.",
"subscriberOptin": true,
"optinKeywords": "START",
"optinMessage": "You are subscribed to the example application's requested account notices.",
"subscriberOptout": true,
"optoutKeywords": "STOP",
"optoutMessage": "You will no longer receive the example application's account notices.",
"subscriberHelp": true,
"helpKeywords": "HELP",
"helpMessage": "For help with example account notices, contact support@example.invalid.",
"embeddedLink": false,
"embeddedPhone": false,
"numberPool": false,
"ageGated": false,
"directLending": false,
"termsAndConditions": true,
"autoRenewal": false,
"mnoIds": [],
"referenceId": "your-trial-reference"
}仅在授权人员已查看并接受适用条款后,才将 termsAndConditions 设置为 true。该示例不代表您本人同意。请对这些标志使用 JSON 布尔值,而不是带引号的字符串。
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--data-binary @campaign.json \
'https://api.multitel.net/tcr/v2/campaignBuilder'消息活动字段和条件要求
| 字段 | 需提供的内容 |
|---|---|
| brandId, channelId, usecase | 您自有的品牌、渠道 10DLC,以及符合资格的当前用例代码。请使用资格验证中的代码,而不是翻译后的标签。 |
| subUsecases | 符合资格的子用例代码数组。请遵守所选资格的最小和最大数量。 |
| resellerId | 允许的经销商标识符。帐户自有路由接受自有经销商、其配置的共享经销商,或有意的无经销商值。不相关的经销商将被拒绝。 |
| description, messageFlow | 描述实际用途以及如何收集同意。每项应包含 40–4096 个字符。请包含真实的用户操作、表单或流程;不要虚构您的应用并未收集的同意。 |
| sample1 … sample5 | 代表性消息,通常每条 20–1024 个字符。门户至少要求一条;符合条件的网络可能要求更多。请提供当前资格所要求的数量。 |
| subscriberOptin, subscriberOptout, subscriberHelp | 使用这些确切的字段名称声明支持的收件人流程。启用某个流程后,请提供其关键字和消息字段。网络要求可能使特定流程成为强制性的。 |
| optinKeywords, optoutKeywords, helpKeywords | 实际识别的关键字,最多 255 个字符。它们必须与接收应用的行为一致。 |
| optinMessage, optoutMessage, helpMessage | 相应的消息。当前已发布的字段规则规定为 20–1024 个字符。请包含真实的支持和退出行为。 |
| embeddedLink, embeddedPhone, embeddedLinkSample | 如实声明嵌入的链接或电话号码。即使原本符合资格的网络也可能不允许它们。链接示例最多允许 255 个字符。 |
| mnoIds | 来自资格验证的符合条件的数字网络 ID 的可选数组。请勿假定每个网络都支持所选的用例。 |
| numberPool, ageGated, directLending | 以 JSON 布尔值表示的适用消息活动特征。请根据实际服务进行选择。 |
| privacyPolicyLink, termsAndConditionsLink | 适用时您相关的公开政策和条款 URL,每项最多 2048 个字符。它们必须描述实际的消息服务。 |
| termsAndConditions | 明确接受适用的消息活动条款。门户要求为 true,其向导还会收集当前的个人确认。 |
| autoRenewal | 消息活动是否续订。默认值为 true。禁用续订不会移除已与生产消息活动关联的最低承诺。 |
| referenceId, tag | 您的消息活动引用,最多 50 个字符,以及可选标签。referenceId 不是 Idempotency-Key 标头。 |
已发布的架构在描述性表格中存在一些大小写不一致。当前门户请求如上所示使用 subscriberOptin 和 subscriberOptout。请保持完全相同的大小写。本指南涵盖面向租户的 10DLC 工作流;请勿推断其他渠道的必填字段或激活步骤相同。
安全地重试相同的预期请求
对此预期创建使用一个 Idempotency-Key。该键为 1–128 个不含空格的可打印 ASCII 字符,作用域限于所有者帐户。重试时请保持 HTTP 方法、路径、查询字符串和确切正文字节不变。即使值等效,重新格式化的 JSON 文件也会发生冲突。
进行中的重复请求可能返回带 Retry-After 的 HTTP 409;已完成的请求可能会重放其存储的响应。缓存的错误并不能证明注册机构未创建任何内容。在考虑使用新键之前,请保存 campaignId、requestId 和任何关联标头,检查现有消息活动并核对实际状态、解决部分失败造成的不一致。
消息活动 ID 并非最终发送设置
响应使用 HTTP 状态和直接 JSON。创建成功后,请保留 campaignId 并读取其当前状态:
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"当前门户的生产工作流还会与消息运营商共享该消息活动,并将品牌/消息活动加载到发送帐户中。这些是与此公共创建调用不同的单独操作。即使后续共享或运营商加载步骤失败,注册机构消息活动仍可能存在。
当您需要组合注册、共享和运营商加载顺序时,请使用门户的集成生产创建工作流。对于已由该 API 直接创建的生产消息活动,请保留其消息活动 ID,并通过支持协调该帐户的运营商设置。当前客户 UI 不会为每个直接创建的生产消息活动提供通用继续按钮。请勿创建另一注册来重试其激活。请确认消息活动已激活且运营商设置已完成,然后再分配发送号码. 该号码还必须为您所有、处于活动状态且支持 SMS。消息活动创建不会发送消息。
生产消息活动费用
| 用例 | 每月费用 |
|---|---|
| LOW_VOLUME, UCAAS_LOW | $1.67 |
| SOLE_PROPRIETOR | $2.23 |
| CHARITY | $3.34 |
| EMERGENCY | $5.56 |
| AGENTS_FRANCHISES | $33.34 |
| 其他已配置的后备用例 | $11.12 |
这些零售金额已于十月24日(2026年)根据当前门户配置进行了核对。在生产提交之前,请确认当前符合资格的用例和显示的价格。注册机构资格响应中的 monthlyFee 并非自动等同于您的 MultiTEL 零售价格。
当前门户规定非政治类生产消息活动需承诺至少三个月。在确认之前,请查看适用条款和续订选择。注册、号码租赁、额外审查和消息使用均为单独收费。成功的创建响应并不能独立证明所有计费或运营商激活步骤均已完成。
处理验证和部分失败
请读取 HTTP status 和返回的 JSON。验证失败可能是 code/description 对象的数组;本地失败则可能是包含 message、status 的对象,对于某些处理错误,还包含 requestId。
| HTTP 结果 | 下一步操作 |
|---|---|
| 400 | 更正特定字段或幂等键。重新查看当前资格、所需示例数量和收件人流程要求。 |
| 401、403 或 404 | 检查 API 凭据和允许的源 IP,然后检查品牌/经销商所有权和权限。请勿使用其他帐户的标识符。 |
| 402 | 在重试相同的预期创建之前,请查看生产资金和购买权限。 |
| 409 | 区分使用相同键的进行中重放与已更改的请求。在协调时保留现有消息活动和请求详细信息。 |
| 429 或限制器不可用 | 当存在 Retry-After 时请遵守,并保留原始键和确切请求。 |
| 500 或 502 | 创建可能已经发生。请保存任何 campaignId 和 requestId,检查现有消息活动,并恢复或协调其激活,而不是创建重复项。 |