Коригирайте кампания, без да създавате нова регистрация
Използвайте този маршрут, за да редактирате описанието на съществуваща кампания, примерните съобщения, обяснението за съгласието или поддържаните характеристики на съдържанието. Запазете идентификатора на кампанията и текущата ѝ марка/случай на употреба. Новата регистрация не е механизъм за повторен опит за коригиране на съществуваща кампания.
Удостоверете се с активиран API акаунт през HTTPS от разрешен изходен IP адрес. Достъпна е само кампания, която принадлежи на този акаунт. Прочетете текущото ѝ състояние, преди да подготвите промените; кампании с изтекъл срок не могат да се актуализират чрез този работен процес.
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 | Подходящи публични URL адреси, до 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, вместо да приемате самия успех като доказателство, че всяко поле е запазено. Съобщете за неразрешените разлики на поддръжката. Този маршрут не актуализира атомарно присвояванията към оператори и не предоставя общо действие за възстановяване на активирането при оператор.