Perbaiki kampanye tanpa membuat pendaftaran lain
Gunakan rute ini untuk merevisi deskripsi, contoh pesan, penjelasan persetujuan, atau karakteristik konten yang didukung pada kampanye yang sudah ada. Pertahankan ID kampanye beserta merek/kasus penggunaan saat ini. Pendaftaran baru bukan mekanisme untuk mencoba ulang perbaikan kampanye yang sudah ada.
Lakukan autentikasi menggunakan akun API yang diaktifkan melalui HTTPS dari alamat IP sumber yang diizinkan. Hanya kampanye milik akun tersebut yang tersedia. Baca status terkininya sebelum menyiapkan perubahan; kampanye yang telah kedaluwarsa tidak dapat diperbarui melalui alur kerja ini.
curl --silent --show-error --fail-with-body --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"Pilih kolom yang benar-benar berubah
Siapkan campaign-update.json yang berisi perubahan yang didukung. Portal saat ini hanya mengirim kolom kampanye yang berubah dan tidak mengirim brandId, usecase, campaignId, atau informasi status yang hanya terdapat dalam respons. Pembaruan langsung melalui API juga menggunakan objek JSON berisi kolom, bukan pembungkus changes/version milik portal.
| Kolom | Data yang harus diberikan |
|---|---|
| description, messageFlow | Deskripsi layanan yang akurat serta penjelasan tentang cara orang memberikan persetujuan, menerima pesan, dan menarik persetujuan. Masing-masing mengizinkan 40–4096 karakter. |
| sample1–sample5 | Contoh realistis untuk kampanye ini, dengan 20–1024 karakter untuk setiap contoh yang tidak kosong. Pertahankan jumlah contoh yang diwajibkan oleh kasus penggunaan yang telah memenuhi kualifikasi; jangan kirim pesan yang tidak terkait. |
| helpMessage, optinMessage, optoutMessage | Respons yang sesuai untuk penerima, hingga 1024 karakter. Jika diwajibkan, penuhi batas minimum 20 karakter dan jelaskan layanan yang sebenarnya. Tinjau persyaratan persetujuan saat ini sebelum mengosongkan kolom. |
| optinKeywords, optoutKeywords, helpKeywords | Kata kunci yang dipisahkan koma tanpa spasi, hingga 255 karakter. Pastikan respons dan penanganan kata kunci dalam operasional tetap konsisten. |
| privacyPolicyLink, termsAndConditionsLink | URL publik yang relevan, hingga 2048 karakter, yang menjelaskan praktik sebenarnya dari layanan ini. |
| embeddedLinkSample | Contoh tautan yang mewakili tautan yang akan dimuat dalam pesan, hingga 255 karakter. |
| numberPool, embeddedLink, embeddedPhone, ageGated, directLending | Karakteristik kampanye yang sebenarnya sebagai nilai boolean JSON. Gunakan false, bukan string "false", saat menonaktifkan salah satunya. |
| autoRenewal | Skema API publik mendukung nilai boolean JSON ini, meskipun editor konten kampanye biasa di portal tidak menyediakannya. Menonaktifkan perpanjangan tidak membatalkan komitmen minimum yang sudah berlaku atau menghapus tagihan yang sudah harus dibayar. |
| resellerId | Skema ini juga menyediakan pengaitan dengan penjual kembali. Fitur ini berada di luar formulir perbaikan konten biasa di portal. Jangan gunakan kolom ini untuk memindahkan kampanye antarpelanggan atau menganggap bahwa API akan mengonfigurasi layanan operator untuk penjual kembali yang berbeda. |
Skema pembaruan tidak menyediakan brandId, usecase, subscriberOptin, subscriberOptout, atau subscriberHelp sebagai kolom yang dapat diubah. Jangan salin seluruh muatan pembuatan kampanye ke dalam pembaruan. Lihat kualifikasi saat ini saat meninjau persyaratan pesan.
Kirim perbaikan yang terarah
Contoh ini menggambarkan layanan pengingat janji temu sebagai ilustrasi. Sesuaikan dengan layanan dan alur persetujuan kampanye yang sebenarnya sebelum menggunakannya.
{
"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"Pertahankan kunci yang sama serta metode, jalur, kueri, dan bita isi yang persis sama untuk pengiriman yang dimaksudkan sama. Konten yang berubah memerlukan permintaan yang ditinjau secara terpisah; jangan mengganti kunci tanpa pertimbangan setelah batas waktu terlampaui. Permintaan yang telah selesai dapat mengembalikan lagi galat yang tersimpan dalam tembolok, dan duplikat permintaan yang sedang diproses dapat mengembalikan 409 disertai Retry-After.
Baca kembali kampanye
HTTP 200 mengembalikan objek JSON kampanye secara langsung. Verifikasi campaignId, lalu gunakan GET untuk membaca kampanye yang sama dan bandingkan kolom yang dimaksud. Penyimpanan yang berhasil tidak dengan sendirinya meminta peninjauan ulang oleh operator, mengubah penetapan nomor, mengaktifkan pengiriman, atau mengirim pesan.
Portal memeriksa versi formulir sebelum menyimpan dan membaca kembali kampanye setelahnya. Endpoint PUT publik tidak memberlakukan pemeriksaan versi portal tersebut: koordinasikan pengeditan yang berlangsung bersamaan. Kunci idempotensi tidak mendeteksi pembaruan oleh penyunting lain.
Jika portal menampilkan penolakan hasil peninjauan yang belum ditangani, perbaiki konten terlebih dahulu, lalu gunakan tindakan terpisah untuk meminta peninjauan jika tersedia. Tindakan tersebut memeriksa kampanye terkini di lingkungan produksi dan status berbaginya. Menyimpan konten saja tidak menjalankan tindakan itu, dan keberadaan ID kampanye tidak membuktikan adanya persetujuan.
Pembaruan kampanye biasa melalui PUT tidak memicu pendebitan terpisah untuk pendaftaran kampanye dalam layanan saat ini. Biaya bulanan, komitmen minimum, sewa nomor, dan penggunaan pesan yang sudah berlaku tetap dikenakan. Untuk tarif kampanye yang dikonfigurasi saat ini, lihat biaya kampanye.
Tangani pembatasan dan hasil yang belum pasti
Untuk HTTP 400, baca galat pada tingkat kolom dan periksa panjang, teks persetujuan, serta status kampanye. Untuk 401, 403, atau 404, periksa kredensial API, IP sumber yang diizinkan, dan kepemilikan. Untuk 429, patuhi Retry-After. Untuk 500, 502, atau permintaan yang terputus, pertahankan ID kampanye dan requestId apa pun yang tersedia, lalu cocokkan dan pastikan keadaan catatan yang sudah ada sebelum mengirim lagi.
Salinan keadaan lokal bergantung pada isi respons yang dikembalikan. Respons parsial yang tidak kosong dapat menghilangkan kolom lama, termasuk metadata perpanjangan; respons kosong dapat mempertahankan nilai yang sudah usang. Verifikasi hasil GET secara lengkap alih-alih menganggap keberhasilan saja sebagai bukti bahwa setiap kolom dipertahankan. Laporkan perbedaan yang belum terselesaikan melalui dukungan. Rute ini tidak memperbarui penetapan operator secara atomik atau menyediakan tindakan pemulihan umum untuk aktivasi operator.