Popraw kampanię bez tworzenia kolejnej rejestracji
Użyj tej ścieżki, aby zmienić opis istniejącej kampanii, przykłady wiadomości, wyjaśnienie sposobu uzyskiwania zgody lub obsługiwane cechy treści. Zachowaj identyfikator kampanii oraz jej obecną markę i przypadek użycia. Nowa rejestracja nie służy do ponawiania próby poprawienia istniejącej kampanii.
Uwierzytelnij się przy użyciu aktywnego konta API przez HTTPS z dozwolonego źródłowego adresu IP. Dostępna jest wyłącznie kampania należąca do tego konta. Odczytaj jej bieżący stan przed przygotowaniem zmian; kampanii, które wygasły, nie można aktualizować w tym procesie.
curl --silent --show-error --fail-with-body --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"Wybierz pola, które rzeczywiście się zmieniły
Przygotuj plik campaign-update.json zawierający obsługiwane zmiany. Obecny portal wysyła tylko zmienione pola kampanii i nie wysyła brandId, usecase, campaignId ani informacji o stanie występujących wyłącznie w odpowiedzi. Bezpośrednie aktualizacje przez API również używają obiektu JSON z polami, a nie struktury opakowującej changes/version stosowanej przez portal.
| Pola | Co należy podać |
|---|---|
| description, messageFlow | Dokładny opis usługi oraz sposobu, w jaki odbiorcy wyrażają zgodę, otrzymują wiadomości i wycofują zgodę. Każde pole dopuszcza 40–4096 znaków. |
| sample1–sample5 | Realistyczne przykłady dla tej kampanii, po 20–1024 znaków w każdym niepustym przykładzie. Zachowaj liczbę przykładów wymaganą dla zakwalifikowanego przypadku użycia; nie przesyłaj niezwiązanych z nim wiadomości. |
| helpMessage, optinMessage, optoutMessage | Odpowiednie odpowiedzi kierowane do odbiorców, do 1024 znaków. Jeśli jest to wymagane, zachowaj minimum 20 znaków i opisz rzeczywistą usługę. Przed wyczyszczeniem pola sprawdź aktualne wymagania dotyczące zgody. |
| optinKeywords, optoutKeywords, helpKeywords | Słowa kluczowe oddzielone przecinkami, bez spacji, do 255 znaków. Zadbaj o zgodność odpowiedzi z faktycznym sposobem obsługi słów kluczowych. |
| privacyPolicyLink, termsAndConditionsLink | Odpowiednie publiczne adresy URL, do 2048 znaków, opisujące rzeczywiste praktyki stosowane w tej usłudze. |
| embeddedLinkSample | Reprezentatywny link, który będzie zawarty w wiadomościach, do 255 znaków. |
| numberPool, embeddedLink, embeddedPhone, ageGated, directLending | Rzeczywiste cechy kampanii jako wartości logiczne JSON. Wyłączając daną cechę, użyj wartości false, a nie ciągu znaków "false". |
| autoRenewal | Publiczny schemat API obsługuje tę wartość logiczną JSON, choć standardowy edytor treści kampanii w portalu jej nie udostępnia. Wyłączenie odnowienia nie znosi istniejącego minimalnego zobowiązania ani nie usuwa już należnych opłat. |
| resellerId | Schemat umożliwia także powiązanie z odsprzedawcą. Funkcja ta wykracza poza standardowy formularz poprawiania treści w portalu. Nie używaj tego pola do przenoszenia kampanii między klientami ani nie zakładaj, że API skonfiguruje usługę operatora dla innego odsprzedawcy. |
Schemat aktualizacji nie udostępnia brandId, usecase, subscriberOptin, subscriberOptout ani subscriberHelp jako pól, które można zmieniać. Nie kopiuj kompletnego zestawu danych do tworzenia kampanii do żądania aktualizacji. Zapoznaj się z aktualną kwalifikacją podczas sprawdzania wymagań dotyczących wiadomości.
Prześlij ukierunkowaną poprawkę
Ten przykład przedstawia przykładową usługę przypomnień o wizytach. Przed użyciem dostosuj go do rzeczywistej usługi kampanii i procesu uzyskiwania zgody.
{
"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"Dla tej samej zamierzonej operacji zachowaj ten sam klucz oraz dokładnie tę samą metodę, ścieżkę, zapytanie i bajty treści żądania. Zmieniona treść wymaga osobno sprawdzonego żądania; po przekroczeniu limitu czasu nie zmieniaj kluczy na ślepo. Zakończone żądanie może ponownie zwrócić błąd z pamięci podręcznej, a duplikat żądania będącego w trakcie przetwarzania może zwrócić 409 z Retry-After.
Odczytaj kampanię ponownie
HTTP 200 zwraca bezpośrednio obiekt JSON kampanii. Sprawdź campaignId, następnie pobierz tę samą kampanię metodą GET i porównaj zamierzone pola. Pomyślny zapis sam w sobie nie zleca kolejnej weryfikacji przez operatora, nie zmienia przypisań numerów, nie aktywuje wysyłania ani nie wysyła wiadomości.
Portal sprawdza wersję formularza przed zapisem, a następnie ponownie odczytuje kampanię. Publiczny punkt końcowy PUT nie wymusza zgodności z tą wersją portalu: koordynuj równoczesne zmiany. Klucz idempotencji nie wykrywa aktualizacji wprowadzonej przez inną osobę edytującą kampanię.
Jeśli portal pokazuje nierozwiązane odrzucenie po weryfikacji, najpierw popraw treść, a następnie użyj oddzielnej akcji zlecenia weryfikacji, gdy będzie dostępna. Akcja ta sprawdza bieżącą kampanię w środowisku produkcyjnym oraz stan jej udostępnienia. Sam zapis treści jej nie uruchamia, a istnienie identyfikatora kampanii nie potwierdza zatwierdzenia.
Standardowe aktualizacje kampanii metodą PUT nie uruchamiają w obecnej usłudze oddzielnego obciążenia za rejestrację kampanii. Nadal obowiązują dotychczasowe opłaty miesięczne, minimalne zobowiązania, opłaty za wynajem numerów i wykorzystanie wiadomości. Aktualnie skonfigurowane stawki kampanii znajdziesz w sekcji opłaty za kampanię.
Postępowanie przy ograniczeniach i niepewnych wynikach
W przypadku HTTP 400 odczytaj błąd dotyczący konkretnego pola i sprawdź długości, treść zgody oraz stan kampanii. W przypadku 401, 403 lub 404 sprawdź dane uwierzytelniające API, dozwolony źródłowy adres IP i przynależność kampanii do konta. W przypadku 429 zastosuj się do Retry-After. W przypadku 500, 502 lub przerwanego żądania zachowaj identyfikator kampanii i ewentualny requestId, a następnie zweryfikuj i uzgodnij stan istniejącego rekordu przed kolejnym przesłaniem żądania.
Lokalny obraz danych zależy od zwróconej treści odpowiedzi. Niepusta odpowiedź częściowa może pomijać starsze pola, w tym metadane odnowienia; pusta odpowiedź może pozostawić nieaktualne wartości. Sprawdź pełny wynik GET, zamiast uznawać samo powodzenie operacji za dowód zachowania wszystkich pól. Zgłoś niewyjaśnione rozbieżności do pomocy technicznej. Ta ścieżka nie aktualizuje przypisań operatorów w sposób atomowy ani nie udostępnia ogólnej akcji przywracania aktywacji u operatora.