开发者

PUT/tcr/v2/campaign/{campaignId}

更新消息活动

修改活动内容,核实保存结果,并明确提出审核请求和作出续订决定。

本页
  1. 修正活动,无需再次注册
  2. 选择实际发生更改的字段
  3. 提交有针对性的修正
  4. 再次读取活动
  5. 处理限制和不确定的结果

修正活动,无需再次注册

使用此路由修改现有活动的描述、消息示例、同意流程说明或支持的内容特征。保留活动标识及其当前品牌/使用场景。修正现有活动时,不应通过新建注册来重试。

从获准的源 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 结果,不要仅凭成功状态就认定所有字段均已保留。请通过支持渠道报告尚未解决的差异。此路由不会以原子方式更新运营商分配,也不提供通用的运营商激活恢复操作。