Calificați o marcă înainte de a-i înregistra campania
O campanie 10DLC descrie mesajele pe care o companie înregistrată intenționează să le trimită, modul în care destinatarii își exprimă consimțământul și modul în care pot obține ajutor sau pot opri mesajele. Acest API creează înregistrarea din registru; finalizarea activării de producție la operator este o etapă separată de configurare a contului. Utilizați o marcă deținută din înregistrarea mărcii, apoi încărcați, pentru marca respectivă, cazurile de utilizare disponibile și, pentru cazul de utilizare selectat, cerințele actuale.
Utilizați rezultatul actual al calificării pentru a alege subcazurile de utilizare, identificatorii de rețea eligibili, mostrele de mesaje și declarațiile de consimțământ, renunțare și ajutor. Cerințele pot diferi în funcție de marcă și de rețea. Nu trimiteți identificatorii din exemplu și nu copiați descrierea consimțământului pentru o companie cu un proces diferit.
Păstrați separate mediile de testare și de producție
Pentru un exercițiu în mediul de testare, utilizați propria marcă simulată și un caz de utilizare actual pentru care aceasta se califică. Utilizați TRIAL numai atunci când este oferit de calificarea respectivă. Portalul verifică dacă mediile mărcii și campaniei selectate sunt concordante. O solicitare API directă nu execută în locul dumneavoastră validarea completă a expertului din portal, deci păstrați această separare în integrarea dumneavoastră.
Crearea unei campanii de producție este facturabilă și nu face automat ca un număr să fie pregătit pentru trimitere. Mențineți mediul campaniei în concordanță cu cel al mărcii și examinați tariful și condițiile aplicabile înainte de a crea o campanie reală.
Trimiteți fișierul JSON al campaniei
Pregătiți campaign.json cu valorile calificate. R000000 înseamnă fără distribuitor; utilizați-l numai atunci când aceasta este configurația intenționată. Pentru configurația normală de distribuitor MultiTEL, obțineți identificatorul de distribuitor MultiTEL LLC permis din colecția de distribuitori a contului dumneavoastră sau din fluxul de pregătire din portal, în loc să codificați direct identificatorul altcuiva.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
'https://api.multitel.net/tcr/v2/reseller?companyName=MultiTEL%20LLC&recordsPerPage=500'Următorul fragment JSON ilustrează o campanie de probă pentru o marcă simulată deținută. Înlocuiți marca, cazul de utilizare, distribuitorul și textul consimțământului cu valorile care se califică efectiv pentru testul dumneavoastră.
{
"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"
}Setați termsAndConditions la true numai după ce persoana autorizată a examinat și a acceptat condițiile aplicabile. Exemplul nu reprezintă consimțământul în numele dumneavoastră. Pentru indicatori utilizați valori booleene JSON, nu șiruri între ghilimele.
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'Câmpurile campaniei și cerințele condiționale
| Câmpuri | Ce trebuie furnizat |
|---|---|
| brandId, channelId, usecase | Marca dumneavoastră deținută, canalul 10DLC și un cod de caz de utilizare actual eligibil. Utilizați coduri din calificare, nu etichete traduse. |
| subUsecases | O matrice de coduri de subcazuri de utilizare eligibile. Respectați numărul minim și maxim al calificării selectate. |
| resellerId | Un identificator de distribuitor permis. Ruta deținută de cont acceptă distribuitori deținuți, distribuitorul partajat configurat al acesteia sau valoarea intenționată fără distribuitor. Un distribuitor neafiliat este respins. |
| description, messageFlow | Descrieți scopul real și modul în care este colectat consimțământul. Fiecare trebuie să conțină 40–4096 de caractere. Includeți acțiunea, formularul sau procesul real al utilizatorului; nu inventați un consimțământ pe care aplicația dumneavoastră nu îl colectează. |
| sample1 … sample5 | Mesaje reprezentative, în mod normal de 20–1024 de caractere fiecare. Portalul necesită cel puțin unul; rețelele eligibile pot necesita mai multe. Furnizați numărul cerut de calificarea actuală. |
| subscriberOptin, subscriberOptout, subscriberHelp | Declarați fluxurile de destinatari acceptate utilizând exact aceste nume de câmpuri. Când un flux este activat, furnizați câmpurile sale pentru cuvinte-cheie și mesaje. Cerințele rețelei pot face ca anumite fluxuri să fie obligatorii. |
| optinKeywords, optoutKeywords, helpKeywords | Cuvintele-cheie reale recunoscute, de până la 255 de caractere. Acestea trebuie să corespundă comportamentului aplicației receptoare. |
| optinMessage, optoutMessage, helpMessage | Mesajele corespunzătoare. Regulile actuale publicate pentru câmpuri specifică 20–1024 de caractere. Includeți comportamentul real de asistență și de renunțare. |
| embeddedLink, embeddedPhone, embeddedLinkSample | Declarați cu sinceritate legăturile sau numerele de telefon încorporate. O rețea altfel calificată le poate interzice. O mostră de legătură permite până la 255 de caractere. |
| mnoIds | O matrice opțională de identificatori numerici de rețea eligibili din calificare. Nu presupuneți că fiecare rețea acceptă cazul de utilizare selectat. |
| numberPool, ageGated, directLending | Caracteristicile aplicabile ale campaniei ca valori booleene JSON. Alegeți-le în funcție de serviciul real. |
| privacyPolicyLink, termsAndConditionsLink | Adresele URL publice relevante ale politicii și condițiilor dumneavoastră, atunci când se aplică, de până la 2048 de caractere fiecare. Acestea trebuie să descrie serviciul real de mesagerie. |
| termsAndConditions | Acceptarea explicită a condițiilor aplicabile ale campaniei. Portalul necesită true, iar expertul său colectează și confirmările individuale actuale. |
| autoRenewal | Dacă campania se reînnoiește. Valoarea implicită este true. Dezactivarea reînnoirii nu elimină un angajament minim deja asociat unei campanii de producție. |
| referenceId, tag | Referința campaniei dumneavoastră, de până la 50 de caractere, și etichete opționale. referenceId nu este antetul Idempotency-Key. |
Schema publicată conține unele inconsecvențe de scriere cu majuscule în tabelele descriptive. Solicitarea actuală din portal utilizează subscriberOptin și subscriberOptout, așa cum se arată mai sus. Păstrați exact această scriere. Acest ghid acoperă fluxul 10DLC destinat chiriașilor; nu deduceți că câmpurile obligatorii sau etapele de activare ale unui alt canal sunt aceleași.
Reîncercați în siguranță aceeași solicitare intenționată
Utilizați o singură cheie Idempotency-Key pentru această creare intenționată. Cheia are 1–128 de caractere ASCII imprimabile fără spații și este asociată contului proprietar. La o reîncercare, păstrați neschimbate metoda HTTP, calea, șirul de interogare și octeții exacți ai corpului. Un fișier JSON reformatat intră în conflict chiar dacă valorile sale sunt echivalente.
Un duplicat în curs de procesare poate returna HTTP 409 cu Retry-After; solicitările finalizate pot relua răspunsul stocat. O eroare memorată în cache nu dovedește că registrul nu a creat nimic. Salvați campaignId, requestId și orice antete de corelare, inspectați campania existentă și reconciliați o defecțiune parțială înainte de a lua în considerare o cheie nouă.
Un identificator de campanie nu este configurarea finală de trimitere
Răspunsul utilizează starea HTTP și JSON direct. La crearea cu succes, păstrați campaignId și citiți starea sa actuală:
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"Fluxul actual de producție al portalului partajează, de asemenea, campania cu operatorul de mesagerie și încarcă marca/campania în contul de trimitere. Acestea sunt operațiuni separate de acest apel public de creare. O campanie din registru poate exista chiar dacă o etapă ulterioară de partajare sau de încărcare la operator eșuează.
Utilizați fluxul integrat de creare în producție din portal atunci când aveți nevoie de secvența combinată de înregistrare, partajare și încărcare la operator. Pentru o campanie de producție deja creată direct prin acest API, păstrați identificatorul campaniei sale și solicitați reconcilierea configurării operatorului contului prin asistență. Interfața actuală pentru clienți nu oferă un buton general de reluare pentru fiecare campanie de producție creată direct. Nu creați o altă înregistrare pentru a-i reîncerca activarea. Confirmați că respectiva campanie este activă și că configurarea operatorului a fost finalizată înainte de atribuirea unui număr de trimitere. Numărul trebuie, de asemenea, să fie deținut, activ și compatibil SMS. Crearea campaniei nu trimite mesaje.
Tarifele campaniilor de producție
| Caz de utilizare | Tarif lunar |
|---|---|
| LOW_VOLUME, UCAAS_LOW | $1.67 |
| SOLE_PROPRIETOR | $2.23 |
| CHARITY | $3.34 |
| EMERGENCY | $5.56 |
| AGENTS_FRANCHISES | $33.34 |
| Alte cazuri de utilizare de rezervă configurate | $11.12 |
Aceste sume de vânzare cu amănuntul au fost verificate față de configurația actuală a portalului la 24 octombrie 2026. Confirmați cazul de utilizare calificat actual și prețul afișat înainte de o trimitere în producție. Un câmp monthlyFee dintr-un răspuns de calificare al registrului nu este automat prețul dumneavoastră de vânzare cu amănuntul MultiTEL.
Portalul actual prevede un angajament minim de trei luni pentru campaniile de producție nepolitice. Examinați condițiile aplicabile și opțiunea de reînnoire înainte de confirmare. Înregistrarea, închirierea numărului, verificarea suplimentară și utilizarea mesajelor sunt tarife separate. Un răspuns de creare reușită nu dovedește independent că fiecare etapă de facturare sau de activare la operator a fost finalizată.
Gestionați erorile de validare și defecțiunile parțiale
Citiți status HTTP și fragmentul JSON returnat. Eșecurile de validare pot fi matrice de obiecte code/description; eșecurile locale pot fi în schimb obiecte cu message, status și, pentru unele erori de procesare, requestId.
| Rezultat HTTP | Acțiune următoare |
|---|---|
| 400 | Corectați câmpurile specifice sau cheia de idempotență. Recitiți calificarea actuală, numărul necesar de mostre și cerințele privind fluxurile de destinatari. |
| 401, 403 sau 404 | Verificați acreditările API și adresa IP sursă permisă, apoi proprietatea și permisiunile mărcii/distribuitorului. Nu utilizați identificatori dintr-un alt cont. |
| 402 | Examinați finanțarea producției și permisiunea de achiziție înainte de a reîncerca aceeași creare intenționată. |
| 409 | Distingeți reluarea în curs de procesare de o solicitare modificată care utilizează aceeași cheie. Păstrați detaliile campaniei existente și ale solicitării atunci când reconciliați. |
| 429 sau limitator indisponibil | Respectați Retry-After atunci când este prezent și păstrați cheia inițială și solicitarea exactă. |
| 500 sau 502 | Crearea poate să fi avut deja loc. Salvați orice valori campaignId și requestId, verificați campania existentă și reluați sau reconciliați activarea acesteia în loc să creați un duplicat. |