修正活动,无需再次注册
使用此路由修改现有活动的描述、消息示例、同意流程说明或支持的内容特征。保留活动标识及其当前品牌/使用场景。修正现有活动时,不应通过新建注册来重试。
从获准的源 IP 地址,通过 HTTPS 使用已启用的 API 账户进行身份验证。只能访问属于该账户的活动。准备更改前,请先读取活动的当前状态;已过期的活动无法通过此流程更新。
curl --silent --show-error --fail-with-body --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"选择实际发生更改的字段
准备 campaign-update.json,在其中包含受支持的更改。当前门户仅发送已更改的活动字段,不发送 brandId、usecase、campaignId 或仅在响应中提供的状态信息。直接通过 API 更新时,同样使用包含字段的 JSON 对象,而非门户的 changes/version 包装结构。
| 字段 | 需提供的内容 |
|---|---|
| description, messageFlow | 准确的服务描述,以及用户如何表示同意、接收消息和撤回同意的说明。每个字段允许 40–4096 个字符。 |
| sample1–sample5 | 提供符合本活动实际情况的示例,每个非空示例为 20–1024 个字符。保留符合资格的使用场景所要求的示例数量;不要发送无关消息。 |
| helpMessage, optinMessage, optoutMessage | 提供适用的面向收件人的回复,最多 1024 个字符。若有要求,须满足至少 20 个字符的限制,并说明实际服务。清空字段前,请先查阅当前的同意要求。 |
| optinKeywords, optoutKeywords, helpKeywords | 提供以逗号分隔、不含空格的关键词,最多 255 个字符。确保回复内容与实际运行中的关键词处理方式保持一致。 |
| privacyPolicyLink, termsAndConditionsLink | 提供相关的公开网址,说明本服务的实际做法,最多 2048 个字符。 |
| embeddedLinkSample | 提供消息中将包含的代表性链接,最多 255 个字符。 |
| numberPool, embeddedLink, embeddedPhone, ageGated, directLending | 以 JSON 布尔值提供活动的实际特征。禁用某项特征时,使用 false,不要使用字符串 "false"。 |
| autoRenewal | 公共 API 架构定义支持此 JSON 布尔值,但门户的常规活动内容编辑器未提供该选项。关闭续订不会取消现有的最低承诺义务,也不会免除已经到期应付的费用。 |
| resellerId | 架构定义还支持关联转售商。这不属于门户常规内容修正表单的功能范围。不要使用此字段在客户之间转移活动,也不要假定 API 会为另一家转售商配置运营商服务。 |
更新架构定义不提供 brandId、usecase、subscriberOptin、subscriberOptout 或 subscriberHelp 作为可修改字段。不要将完整的活动创建请求体复制到更新请求中。请参阅当前资格要求,以核查消息要求。
提交有针对性的修正
此示例以预约提醒服务作说明。使用前,请根据活动的实际服务和同意流程进行调整。
{
"description": "Appointment reminders requested by customers of the registered business.",
"sample1": "Example business: Your requested appointment reminder is ready. Reply STOP to opt out."
}curl --silent --show-error --fail-with-body --user "$API_USER:$API_PASSWORD" \
--request PUT \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--data-binary @campaign-update.json \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"对于同一次预期提交,请保留相同的键,并确保方法、路径、查询和请求体的字节完全一致。内容发生更改时,需要另行审核请求;超时后不要盲目更换键。已完成的请求可能再次返回缓存的错误,而正在处理中的重复请求可能返回 409,并附带 Retry-After。
再次读取活动
HTTP 200 直接返回活动的 JSON 对象。核实 campaignId,然后通过 GET 读取同一活动并比对预期字段。保存成功本身不会请求运营商再次审核、改变号码分配、启用发送功能或发送消息。
门户在保存前检查表单版本,并在保存后再次读取活动。公共 PUT 端点不强制检查门户的该版本:请协调同时进行的编辑。幂等键无法检测其他编辑者所做的更新。
如果门户显示尚未解决的审核拒绝,请先修正内容,再在可用时使用单独的请求审核操作。该操作会检查当前生产环境中的活动及共享状态。仅保存内容不会触发该操作,而活动标识的存在也不代表已获批准。
在当前服务中,常规活动 PUT 更新不会另行发起活动注册扣费。现有月费、最低承诺义务、号码租金和消息用量费用仍然适用。有关当前配置的活动费率,请参阅活动费用。
处理限制和不确定的结果
对于 HTTP 400,请阅读字段级错误,并检查长度、同意文本和活动状态。对于 401、403 或 404,请检查 API 凭据、获准的源 IP 地址和所有权。对于 429,请遵守 Retry-After。对于 500、502 或中断的请求,请保留活动标识及任何 requestId,然后在再次提交前核对现有记录,确认实际状态。
本地快照取决于返回的响应体。非空的部分响应可能遗漏旧字段,包括续订元数据;空响应可能导致过时的值继续保留。请核实完整的 GET 结果,不要仅凭成功状态就认定所有字段均已保留。请通过支持渠道报告尚未解决的差异。此路由不会以原子方式更新运营商分配,也不提供通用的运营商激活恢复操作。