Chỉnh sửa chiến dịch mà không tạo thêm đăng ký
Dùng tuyến này để chỉnh sửa mô tả, tin nhắn mẫu, phần giải thích về sự đồng ý hoặc các đặc điểm nội dung được hỗ trợ của một chiến dịch hiện có. Giữ nguyên mã định danh chiến dịch cùng thương hiệu và trường hợp sử dụng hiện tại. Tạo đăng ký mới không phải là cách thử lại việc chỉnh sửa một chiến dịch hiện có.
Xác thực bằng tài khoản API đã được kích hoạt qua HTTPS từ địa chỉ IP nguồn được phép. Chỉ có thể truy cập chiến dịch thuộc tài khoản đó. Đọc trạng thái hiện tại của chiến dịch trước khi chuẩn bị thay đổi; không thể cập nhật chiến dịch đã hết hạn bằng quy trình này.
curl --silent --show-error --fail-with-body --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"Chọn những trường thực sự thay đổi
Chuẩn bị campaign-update.json chứa các thay đổi được hỗ trợ. Cổng quản lý hiện chỉ gửi những trường chiến dịch đã thay đổi và không gửi brandId, usecase, campaignId hoặc thông tin trạng thái chỉ có trong phản hồi. Các cập nhật trực tiếp qua API cũng sử dụng một đối tượng JSON chứa các trường, không dùng cấu trúc bao changes/version của cổng quản lý.
| Trường | Thông tin cần cung cấp |
|---|---|
| description, messageFlow | Mô tả chính xác dịch vụ và cách người dùng đồng ý, nhận tin nhắn cũng như rút lại sự đồng ý. Mỗi trường cho phép 40–4096 ký tự. |
| sample1–sample5 | Các tin nhắn mẫu sát với thực tế của chiến dịch này, mỗi mẫu không rỗng dài 20–1024 ký tự. Giữ đúng số lượng mẫu mà trường hợp sử dụng đủ điều kiện yêu cầu; không gửi tin nhắn không liên quan. |
| helpMessage, optinMessage, optoutMessage | Các phản hồi phù hợp dành cho người nhận, tối đa 1024 ký tự. Khi có yêu cầu, bảo đảm tối thiểu 20 ký tự và giải thích đúng dịch vụ thực tế. Xem lại các yêu cầu hiện hành về sự đồng ý trước khi xóa nội dung một trường. |
| optinKeywords, optoutKeywords, helpKeywords | Các từ khóa phân tách bằng dấu phẩy, không có khoảng trắng, tối đa 255 ký tự. Bảo đảm phản hồi nhất quán với cách hệ thống thực tế xử lý các từ khóa. |
| privacyPolicyLink, termsAndConditionsLink | Các địa chỉ URL công khai có liên quan, tối đa 2048 ký tự, mô tả cách thức hoạt động thực tế của dịch vụ này. |
| embeddedLinkSample | Một liên kết tiêu biểu sẽ xuất hiện trong tin nhắn, tối đa 255 ký tự. |
| numberPool, embeddedLink, embeddedPhone, ageGated, directLending | Các đặc điểm thực tế của chiến dịch dưới dạng giá trị luận lý JSON. Khi tắt một đặc điểm, dùng false, không dùng chuỗi "false". |
| autoRenewal | Lược đồ API công khai hỗ trợ giá trị luận lý JSON này, mặc dù trình chỉnh sửa nội dung chiến dịch thông thường trên cổng quản lý không hiển thị tùy chọn đó. Tắt gia hạn không hủy cam kết tối thiểu hiện có hoặc xóa các khoản phí đã đến hạn. |
| resellerId | Lược đồ cũng hỗ trợ liên kết với nhà bán lại. Chức năng này nằm ngoài biểu mẫu chỉnh sửa nội dung thông thường trên cổng quản lý. Không dùng trường này để chuyển chiến dịch giữa các khách hàng hoặc cho rằng API sẽ cấu hình dịch vụ của nhà mạng cho một nhà bán lại khác. |
Lược đồ cập nhật không cho phép thay đổi các trường brandId, usecase, subscriberOptin, subscriberOptout hoặc subscriberHelp. Không sao chép toàn bộ dữ liệu yêu cầu tạo chiến dịch vào yêu cầu cập nhật. Tham khảo điều kiện hiện hành khi xem xét các yêu cầu đối với tin nhắn.
Gửi yêu cầu chỉnh sửa đúng phạm vi cần thiết
Ví dụ này minh họa một dịch vụ nhắc lịch hẹn. Điều chỉnh ví dụ cho phù hợp với dịch vụ thực tế và quy trình xin sự đồng ý của chiến dịch trước khi sử dụng.
{
"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"Đối với cùng một lần gửi dự định thực hiện, giữ nguyên khóa và giữ chính xác phương thức, đường dẫn, truy vấn cùng các byte của phần thân. Nội dung thay đổi cần một yêu cầu được rà soát riêng; không tùy tiện đổi khóa sau khi hết thời gian chờ. Một yêu cầu đã hoàn tất có thể trả lại lỗi đã lưu trong bộ nhớ đệm, còn yêu cầu trùng lặp đang được xử lý có thể trả về 409 kèm Retry-After.
Đọc lại chiến dịch
HTTP 200 trả về trực tiếp một đối tượng JSON của chiến dịch. Xác minh campaignId, sau đó dùng GET để đọc chính chiến dịch đó và so sánh các trường dự định thay đổi. Việc lưu thành công tự nó không yêu cầu nhà mạng xét duyệt lại, thay đổi việc gán số, kích hoạt gửi tin hoặc gửi tin nhắn.
Cổng quản lý kiểm tra phiên bản biểu mẫu trước khi lưu và đọc lại chiến dịch sau đó. Điểm cuối PUT công khai không bắt buộc kiểm tra phiên bản đó của cổng quản lý: hãy phối hợp khi có nhiều người chỉnh sửa đồng thời. Khóa bảo đảm tính lũy đẳng không phát hiện được cập nhật của người chỉnh sửa khác.
Nếu cổng quản lý hiển thị kết quả từ chối xét duyệt chưa được xử lý, hãy sửa nội dung trước, sau đó dùng thao tác yêu cầu xét duyệt riêng khi thao tác này khả dụng. Thao tác đó kiểm tra chiến dịch hiện tại trên hệ thống thực tế và trạng thái chia sẻ. Chỉ lưu nội dung sẽ không gọi thao tác này, và việc có mã định danh chiến dịch không chứng minh rằng chiến dịch đã được phê duyệt.
Trong dịch vụ hiện tại, các cập nhật chiến dịch thông thường bằng PUT không phát sinh lệnh ghi nợ riêng cho việc đăng ký chiến dịch. Phí hằng tháng, cam kết tối thiểu, phí thuê số và phí sử dụng tin nhắn hiện có vẫn áp dụng. Để xem mức phí chiến dịch hiện được cấu hình, tham khảo phí chiến dịch.
Xử lý các hạn chế và kết quả chưa rõ ràng
Với HTTP 400, đọc lỗi ở cấp trường và kiểm tra độ dài, nội dung về sự đồng ý cùng trạng thái chiến dịch. Với 401, 403 hoặc 404, kiểm tra thông tin xác thực API, IP nguồn được phép và quyền sở hữu. Với 429, tuân thủ Retry-After. Với 500, 502 hoặc yêu cầu bị gián đoạn, giữ nguyên mã định danh chiến dịch và mọi requestId nhận được, rồi đối chiếu bản ghi hiện có trước khi gửi lại.
Bản chụp dữ liệu cục bộ phụ thuộc vào phần thân phản hồi trả về. Phản hồi một phần không rỗng có thể thiếu các trường cũ, kể cả siêu dữ liệu gia hạn; phản hồi rỗng có thể khiến các giá trị lỗi thời được giữ lại. Xác minh toàn bộ kết quả GET thay vì chỉ coi trạng thái thành công là bằng chứng rằng mọi trường đều được giữ nguyên. Báo cáo các khác biệt chưa giải quyết được qua bộ phận hỗ trợ. Tuyến này không cập nhật việc gán nhà mạng một cách nguyên tử hoặc cung cấp thao tác khôi phục chung cho việc kích hoạt dịch vụ nhà mạng.