Квалифицирайте бранд, преди да регистрирате неговата кампания
Кампанията 10DLC описва съобщенията, които регистрираният бизнес възнамерява да изпраща, как получателите предоставят съгласие и как могат да получат помощ или да спрат съобщенията. Този API създава записа в регистъра; завършването на производственото активиране при оператора е отделна стъпка от настройката на акаунта. Използвайте бранд, който притежавате и който е създаден чрез регистрация на бранд, след това заредете неговите налични случаи на употреба и текущи изисквания за избрания случай на употреба.
Използвайте текущия резултат от квалификацията, за да изберете подварианти на употреба, допустими идентификатори на мрежи, примерни съобщения и декларации за включване/отписване/помощ. Изискванията могат да се различават според бранда и мрежата. Не подавайте идентификаторите от примера и не копирайте описанието на съгласието за бизнес с различен процес.
Дръжте тестовата и производствената среда разделени
За упражнение в тестова среда използвайте ваш собствен тестов бранд и текущ случай на употреба, за който той е квалифициран. Използвайте TRIAL само когато тази квалификация го предлага. Порталът проверява дали избраният бранд и средата на кампанията съвпадат. Директната API заявка не изпълнява вместо вас пълната проверка на съветника в портала, затова запазете това разделение във вашата интеграция.
Създаването на производствена кампания е таксувано и не прави автоматично даден номер готов за изпращане. Поддържайте средата на кампанията в съответствие с нейния бранд и прегледайте таксата и приложимите условия, преди да създадете реална кампания.
Подайте JSON на кампанията
Подгответе campaign.json с вашите квалифицирани стойности. R000000 означава без препродавач; използвайте го само когато това е предвидената конфигурация. За нормалната конфигурация с препродавач на MultiTEL вземете разрешения идентификатор на препродавач MultiTEL LLC от колекцията с препродавачи на вашия акаунт или от подготвителния процес в портала, вместо да вграждате чужд идентификатор.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
'https://api.multitel.net/tcr/v2/reseller?companyName=MultiTEL%20LLC&recordsPerPage=500'Следващият JSON илюстрира пробна кампания за притежаван от вас тестов бранд. Заменете бранда, случая на употреба, препродавача и текста за съгласие със стойностите, които действително са квалифицирани за вашия тест.
{
"brandId": "B123ABC",
"channelId": "10DLC",
"usecase": "TRIAL",
"subUsecases": [],
"resellerId": "R000000",
"description": "Trial account notices requested by users of the example application.",
"messageFlow": "Test users explicitly select an unchecked consent box before requesting these trial notices.",
"sample1": "Example application: your requested account notice is available. Reply STOP to stop notices.",
"subscriberOptin": true,
"optinKeywords": "START",
"optinMessage": "You are subscribed to the example application's requested account notices.",
"subscriberOptout": true,
"optoutKeywords": "STOP",
"optoutMessage": "You will no longer receive the example application's account notices.",
"subscriberHelp": true,
"helpKeywords": "HELP",
"helpMessage": "For help with example account notices, contact support@example.invalid.",
"embeddedLink": false,
"embeddedPhone": false,
"numberPool": false,
"ageGated": false,
"directLending": false,
"termsAndConditions": true,
"autoRenewal": false,
"mnoIds": [],
"referenceId": "your-trial-reference"
}Задайте termsAndConditions на true едва след като упълномощеното лице е прегледало и приело приложимите условия. Примерът не е съгласие от ваше име. Използвайте JSON булеви стойности за флаговете, а не низове в кавички.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--data-binary @campaign.json \
'https://api.multitel.net/tcr/v2/campaignBuilder'Полета на кампанията и условни изисквания
| Полета | Какво да предоставите |
|---|---|
| brandId, channelId, usecase | Вашият собствен бранд, канал 10DLC и допустим текущ код на случай на употреба. Използвайте кодове от квалификацията, а не преведени етикети. |
| subUsecases | Масив от допустими кодове на подварианти на употреба. Спазвайте минималния и максималния брой на избраната квалификация. |
| resellerId | Разрешен идентификатор на препродавач. Маршрутът, притежаван от акаунта, приема собствени препродавачи, конфигурирания си споделен препродавач или умишлената стойност без препродавач. Несвързан препродавач се отхвърля. |
| description, messageFlow | Опишете действителното предназначение и как се събира съгласието. Всяко трябва да съдържа 40–4096 знака. Посочете реалното действие на потребителя, формуляр или процес; не измисляйте съгласие, което вашето приложение не събира. |
| sample1 … sample5 | Представителни съобщения, обикновено 20–1024 знака всяко. Порталът изисква поне едно; допустимите мрежи могат да изискват повече. Предоставете броя, изискван от текущата квалификация. |
| subscriberOptin, subscriberOptout, subscriberHelp | Декларирайте поддържаните потоци за получатели, като използвате точно тези имена на полета. Когато даден поток е разрешен, посочете неговите полета за ключова дума и съобщение. Изискванията на мрежите могат да направят определени потоци задължителни. |
| optinKeywords, optoutKeywords, helpKeywords | Действителните разпознавани ключови думи, до 255 знака. Те трябва да съответстват на поведението на приемащото приложение. |
| optinMessage, optoutMessage, helpMessage | Съответните съобщения. Текущите публикувани правила за полетата предвиждат 20–1024 знака. Включете реално поведение за поддръжка и отписване. |
| embeddedLink, embeddedPhone, embeddedLinkSample | Декларирайте достоверно вградените връзки или телефонни номера. Дори квалифицирана мрежа може да ги забрани. Примерът за връзка допуска до 255 знака. |
| mnoIds | Незадължителен масив от допустими числови идентификатори на мрежи от квалификацията. Не приемайте, че всяка мрежа поддържа избрания случай на употреба. |
| numberPool, ageGated, directLending | Приложими характеристики на кампанията като JSON булеви стойности. Изберете ги според действителната услуга. |
| privacyPolicyLink, termsAndConditionsLink | Вашите съответни публични URL адреси на правила и условия, когато е приложимо, до 2048 знака всеки. Те трябва да описват действителната услуга за съобщения. |
| termsAndConditions | Изрично приемане на приложимите условия на кампанията. Порталът изисква true, а неговият съветник събира и текущите индивидуални потвърждения. |
| autoRenewal | Дали кампанията се подновява. Стойността по подразбиране е true. Деактивирането на подновяването не премахва минимален ангажимент, който вече е свързан с производствена кампания. |
| referenceId, tag | Вашата препратка за кампанията, до 50 знака, и незадължителни етикети. referenceId не е заглавката Idempotency-Key. |
Публикуваната схема съдържа някои непоследователни главни букви в описателните таблици. Текущата заявка в портала използва subscriberOptin и subscriberOptout както е показано по-горе. Запазете точно тази употреба на главни и малки букви. Това ръководство обхваща работния процес 10DLC за наематели; не правете извод, че изискваните полета или стъпките за активиране на друг канал са същите.
Повторете безопасно същата предвидена заявка
Използвайте един Idempotency-Key за това предвидено създаване. Ключът е 1–128 печатни ASCII знака без интервали и е ограничен до акаунта, от който се подава заявката. Запазете непроменени HTTP метода, пътя, низа на заявката и точните байтове на тялото при повторен опит. Преформатиран JSON файл създава конфликт, дори стойностите му да са еквивалентни.
Дубликат в процес на изпълнение може да върне HTTP 409 с Retry-After; завършените заявки могат да възпроизведат съхранения си отговор. Кеширана грешка не доказва, че регистърът не е създал нищо. Запазете campaignId, requestId и всички корелационни заглавки, проверете съществуващата кампания и съгласувайте частичен неуспех, преди да обмислите нов ключ.
Идентификаторът на кампанията не е окончателната настройка за изпращане
Отговорът използва HTTP статус и директен JSON. При успешно създаване запазете campaignId и прочетете текущото му състояние:
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"Текущият производствен работен процес в портала също споделя кампанията с оператора за съобщения и зарежда бранда/кампанията в акаунта за изпращане. Това са отделни операции от това публично извикване за създаване. Кампания в регистъра може да съществува, дори ако по-късна стъпка за споделяне или зареждане при оператора е неуспешна.
Използвайте интегрирания производствен процес за създаване в портала, когато се нуждаете от комбинираната последователност от регистрация, споделяне и зареждане при оператора. За производствена кампания, която вече е създадена директно чрез този API, запазете нейния идентификатор на кампания и съгласувайте настройката на оператора за акаунта чрез поддръжката. Текущият потребителски интерфейс не предоставя общ бутон за продължаване за всяка директно създадена производствена кампания. Не създавайте друга регистрация, за да повторите нейното активиране. Потвърдете, че кампанията е активна и настройката на оператора е завършена, преди присвояване на номер за изпращане. Номерът също трябва да е притежаван, активен и с разрешен SMS. Създаването на кампания не изпраща съобщения.
Такси за производствени кампании
| Случай на употреба | Месечна такса |
|---|---|
| LOW_VOLUME, UCAAS_LOW | $1.67 |
| SOLE_PROPRIETOR | $2.23 |
| CHARITY | $3.34 |
| EMERGENCY | $5.56 |
| AGENTS_FRANCHISES | $33.34 |
| Други конфигурирани резервни случаи на употреба | $11.12 |
Тези цени на дребно бяха сверени с текущата конфигурация на портала на 24 октомври 2026 г. Потвърдете текущия квалифициран случай на употреба и показаната цена преди подаване за производствена среда. monthlyFee в отговор за квалификация от регистъра не е автоматично вашата цена на дребно от MultiTEL.
Текущият портал предвижда тримесечен минимален ангажимент за неполитически производствени кампании. Прегледайте приложимите условия и избора за подновяване, преди да потвърдите. Регистрацията, наемът на номер, допълнителната проверка и използването на съобщения са отделни такси. Успешният отговор за създаване не доказва самостоятелно, че всяка стъпка за таксуване или активиране при оператора е завършена.
Обработка на неуспешни проверки и частични неуспехи
Прочетете HTTP status и върнатия JSON. Неуспешните проверки могат да бъдат масиви от обекти code/description; локалните неуспехи могат вместо това да бъдат обекти с message, status и, за някои грешки при обработка, requestId.
| HTTP резултат | Следващо действие |
|---|---|
| 400 | Коригирайте конкретните полета или ключа за идемпотентност. Прочетете отново текущата квалификация, изисквания брой мостри и изискванията за потоци на получателите. |
| 401, 403 или 404 | Проверете API идентификационните данни и разрешения изходен IP адрес, след това собствеността и разрешенията за бранд/препродавач. Не използвайте идентификатори от друг акаунт. |
| 402 | Прегледайте финансирането за производствена среда и разрешението за покупка, преди да повторите същото предвидено създаване. |
| 409 | Разграничете повторното изпълнение в процес от променена заявка, използваща същия ключ. Запазете съществуващата кампания и данните за заявката при съгласуване. |
| 429 или ограничителят е недостъпен | Спазвайте Retry-After, когато е налице, и запазете оригиналния ключ и точната заявка. |
| 500 или 502 | Създаването може вече да е настъпило. Запазете всички campaignId и requestId, проверете съществуващата кампания и продължете или съгласувайте нейното активиране, вместо да създавате дубликат. |