Corectați o campanie fără a crea o altă înregistrare
Folosiți această rută pentru a revizui descrierea unei campanii existente, exemplele de mesaje, explicația privind consimțământul sau caracteristicile de conținut acceptate. Păstrați identificatorul campaniei și marca/scenariul de utilizare actual. O înregistrare nouă nu este mecanismul de reîncercare pentru corectarea unei campanii existente.
Autentificați-vă cu un cont API activat, prin HTTPS, de la o adresă IP sursă permisă. Este disponibilă doar o campanie care aparține acelui cont. Citiți starea sa actuală înainte de a pregăti modificările; campaniile expirate nu pot fi actualizate prin acest flux de lucru.
curl --silent --show-error --fail-with-body --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"Alegeți câmpurile care s-au modificat efectiv
Pregătiți campaign-update.json cu modificările acceptate. Portalul actual trimite doar câmpurile modificate ale campaniei și nu trimite brandId, usecase, campaignId sau informațiile de stare care apar doar în răspuns. Actualizările directe prin API folosesc, de asemenea, un obiect JSON cu câmpuri, nu structura de încadrare changes/version a portalului.
| Câmpuri | Ce trebuie furnizat |
|---|---|
| description, messageFlow | O descriere exactă a serviciului și a modului în care persoanele își dau consimțământul, primesc mesaje și își retrag consimțământul. Fiecare câmp permite 40–4096 de caractere. |
| sample1–sample5 | Exemple realiste pentru această campanie, cu 20–1024 de caractere pentru fiecare exemplu nevid. Păstrați numărul de exemple cerut de scenariul de utilizare pentru care campania este eligibilă; nu trimiteți mesaje fără legătură cu acesta. |
| helpMessage, optinMessage, optoutMessage | Răspunsurile aplicabile destinate destinatarilor, de maximum 1024 de caractere. Atunci când este obligatoriu, respectați limita minimă de 20 de caractere și explicați serviciul real. Consultați cerințele actuale privind consimțământul înainte de a goli un câmp. |
| optinKeywords, optoutKeywords, helpKeywords | Cuvinte-cheie separate prin virgule, fără spații, de maximum 255 de caractere. Asigurați concordanța dintre răspunsuri și procesarea efectivă a cuvintelor-cheie. |
| privacyPolicyLink, termsAndConditionsLink | Adrese URL publice relevante, de maximum 2048 de caractere, care descriu practicile reale ale acestui serviciu. |
| embeddedLinkSample | Un link reprezentativ pe care îl vor conține mesajele, de maximum 255 de caractere. |
| numberPool, embeddedLink, embeddedPhone, ageGated, directLending | Caracteristicile reale ale campaniei, exprimate ca valori booleene JSON. Folosiți false, nu șirul de caractere "false", atunci când dezactivați una dintre ele. |
| autoRenewal | Schema publică API acceptă această valoare booleană JSON, deși editorul obișnuit al portalului pentru conținutul campaniei nu o pune la dispoziție. Dezactivarea reînnoirii nu anulează un angajament minim existent și nu șterge sumele deja datorate. |
| resellerId | Schema permite și asocierea cu un revânzător. Această opțiune nu face parte din formularul obișnuit al portalului pentru corectarea conținutului. Nu folosiți acest câmp pentru a transfera o campanie între clienți și nu presupuneți că API va configura serviciul operatorului pentru un alt revânzător. |
Schema de actualizare nu oferă brandId, usecase, subscriberOptin, subscriberOptout sau subscriberHelp drept câmpuri modificabile. Nu copiați într-o actualizare întregul corp de date folosit pentru crearea unei campanii. Consultați eligibilitatea actuală atunci când examinați cerințele pentru mesaje.
Trimiteți o corectare punctuală
Acest exemplu descrie, cu titlu ilustrativ, un serviciu de reamintire a programărilor. Adaptați-l la serviciul real al campaniei și la fluxul său de obținere a consimțământului înainte de a-l folosi.
{
"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"Pentru aceeași trimitere intenționată, păstrați aceeași cheie și exact aceeași metodă, aceeași cale, aceiași octeți ai parametrilor de interogare și ai corpului cererii. Conținutul modificat necesită o cerere examinată separat; nu schimbați cheile orbește după expirarea timpului de așteptare. O cerere finalizată poate returna din nou o eroare memorată în cache, iar un duplicat aflat în curs de procesare poate returna 409 cu Retry-After.
Citiți din nou campania
HTTP 200 returnează direct un obiect JSON al campaniei. Verificați campaignId, apoi preluați aceeași campanie prin GET și comparați câmpurile vizate. O salvare reușită nu solicită, prin ea însăși, o nouă evaluare din partea operatorului, nu modifică alocările numerelor, nu activează trimiterea și nu trimite niciun mesaj.
Portalul verifică versiunea formularului înainte de salvare și citește din nou campania după aceea. Punctul de acces public PUT nu impune respectarea acelei versiuni a portalului: coordonați editările simultane. O cheie de idempotență nu detectează actualizarea făcută de un alt editor.
Dacă portalul afișează o respingere în urma evaluării care nu a fost încă soluționată, corectați mai întâi conținutul, apoi folosiți acțiunea separată de solicitare a reevaluării, atunci când este disponibilă. Acea acțiune verifică actuala campanie din producție și starea partajării. Simpla salvare a conținutului nu o declanșează, iar existența unui identificator de campanie nu dovedește aprobarea.
Actualizările obișnuite ale campaniei prin PUT nu declanșează o debitare separată pentru înregistrarea campaniei în serviciul actual. Taxele lunare existente, angajamentele minime, închirierea numerelor și tarifele pentru utilizarea mesajelor se aplică în continuare. Pentru tarifele campaniei configurate în prezent, consultați taxele campaniei.
Gestionați restricțiile și rezultatele incerte
Pentru HTTP 400, citiți eroarea aferentă câmpului și verificați lungimile, textul privind consimțământul și starea campaniei. Pentru 401, 403 sau 404, verificați datele de autentificare API, adresa IP sursă permisă și apartenența campaniei la cont. Pentru 429, respectați Retry-After. În cazul unui răspuns 500, 502 sau al unei cereri întrerupte, păstrați identificatorul campaniei și orice requestId, apoi verificați și reconciliați înregistrarea existentă înainte de o nouă trimitere.
Imaginea locală a datelor depinde de corpul răspunsului returnat. Un răspuns parțial nevid poate omite câmpuri mai vechi, inclusiv metadatele privind reînnoirea; un răspuns gol poate păstra valori învechite. Verificați rezultatul complet al cererii GET, în loc să considerați simpla reușită drept dovadă că fiecare câmp a fost păstrat. Raportați diferențele nesoluționate prin serviciul de asistență. Această rută nu actualizează atomic alocările către operatori și nu oferă o acțiune generală de recuperare a activării la operator.