Kwalificeer een merk voordat u de campagne registreert
Een 10DLC-campagne beschrijft de berichten die een geregistreerd bedrijf wil verzenden, hoe ontvangers toestemming geven en hoe zij hulp kunnen krijgen of berichten kunnen stoppen. Deze API creëert het registerrecord; het voltooien van productiecarrieractivering is een aparte accountconfiguratiestap. Gebruik een eigen merk uit merkregistratie, laad vervolgens de beschikbare usecases en de bij de geselecteerde usecase behorende actuele vereisten.
Gebruik het huidige kwalificatieresultaat om subusecases, in aanmerking komende netwerk-ID’s, berichtvoorbeelden en opt-in/opt-out/helpverklaringen te kiezen. Vereisten kunnen per merk en netwerk verschillen. Dien niet de ID’s uit het voorbeeld in en kopieer de toestemmingsbeschrijving niet voor een bedrijf met een ander proces.
Houd sandbox en productie gescheiden
Gebruik voor een sandboxoefening uw eigen mockmerk en een actuele usecase waarvoor het in aanmerking komt. Gebruik TRIAL alleen wanneer die kwalificatie dit aanbiedt. De portal controleert of het geselecteerde merk en de campagneomgeving overeenkomen. Een direct API-verzoek voert de volledige wizardvalidatie van de portal niet voor u uit, dus behoud die scheiding in uw integratie.
Het aanmaken van een productiecampagne is factureerbaar en maakt een nummer niet automatisch verzendklaar. Houd de campagneomgeving consistent met het merk en controleer de kosten en de toepasselijke voorwaarden voordat u een livecampagne aanmaakt.
Dien de campagne-JSON in
Bereid campaign.json voor met uw gekwalificeerde waarden. R000000 betekent geen reseller; gebruik dit alleen wanneer dat de bedoelde configuratie is. Vraag voor de normale MultiTEL-resellerconfiguratie de toegestane reseller-ID van MultiTEL LLC op via de resellerverzameling van uw account of de voorbereidingsflow van de portal, in plaats van de ID van iemand anders hard te coderen.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
'https://api.multitel.net/tcr/v2/reseller?companyName=MultiTEL%20LLC&recordsPerPage=500'De volgende JSON illustreert een proefcampagne voor een eigen mockmerk. Vervang het merk, de usecase, de reseller en de toestemmingstekst door de waarden die daadwerkelijk voor uw test in aanmerking komen.
{
"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"
}Stel termsAndConditions alleen in op true nadat de bevoegde persoon de toepasselijke voorwaarden heeft beoordeeld en geaccepteerd. Het voorbeeld is geen toestemming namens u. Gebruik JSON-booleans voor de vlaggen, geen tekenreeksen tussen aanhalingstekens.
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'Campagnevelden en voorwaardelijke vereisten
| Velden | Wat u moet opgeven |
|---|---|
| brandId, channelId, usecase | Uw eigen merk, kanaal 10DLC en een in aanmerking komende actuele usecasecode. Gebruik codes uit de kwalificatie, geen vertaalde labels. |
| subUsecases | Een array met in aanmerking komende subusecasecodes. Respecteer het minimum- en maximumaantal van de geselecteerde kwalificatie. |
| resellerId | Een toegestane reseller-ID. De accountgebonden route accepteert eigen resellers, de geconfigureerde gedeelde reseller of de bewust gekozen waarde zonder reseller. Een niet-gerelateerde reseller wordt geweigerd. |
| description, messageFlow | Beschrijf het werkelijke doel en hoe toestemming wordt verzameld. Elk moet 40–4096 tekens bevatten. Vermeld de werkelijke gebruikersactie, het formulier of het proces; verzin geen toestemming die uw applicatie niet verzamelt. |
| sample1 … sample5 | Representatieve berichten, normaal 20–1024 tekens per bericht. De portal vereist er minimaal één; in aanmerking komende netwerken kunnen er meer vereisen. Lever het aantal dat de huidige kwalificatie vereist. |
| subscriberOptin, subscriberOptout, subscriberHelp | Declareer ondersteunde ontvangersflows met deze exacte veldnamen. Wanneer een flow is ingeschakeld, geeft u de bijbehorende trefwoord- en berichtvelden op. Netwerkvereisten kunnen bepaalde flows verplicht maken. |
| optinKeywords, optoutKeywords, helpKeywords | De werkelijk herkende trefwoorden, maximaal 255 tekens. Deze moeten overeenkomen met het gedrag van de ontvangende applicatie. |
| optinMessage, optoutMessage, helpMessage | De bijbehorende berichten. De huidige gepubliceerde veldregels schrijven 20–1024 tekens voor. Vermeld echt ondersteunings- en opt-outgedrag. |
| embeddedLink, embeddedPhone, embeddedLinkSample | Declareer ingesloten links of telefoonnummers naar waarheid. Een overigens gekwalificeerd netwerk kan deze weigeren. Een linkvoorbeeld mag maximaal 255 tekens bevatten. |
| mnoIds | Een optionele array met in aanmerking komende numerieke netwerk-ID’s uit de kwalificatie. Ga er niet van uit dat elk netwerk de geselecteerde usecase ondersteunt. |
| numberPool, ageGated, directLending | Toepasselijke campagnekenmerken als JSON-booleans. Kies deze op basis van de werkelijke dienst. |
| privacyPolicyLink, termsAndConditionsLink | Uw relevante openbare beleids- en voorwaarden-URL’s indien van toepassing, elk maximaal 2048 tekens. Deze moeten de werkelijke berichtendienst beschrijven. |
| termsAndConditions | Expliciete acceptatie van de toepasselijke campagnevoorwaarden. De portal vereist true en de wizard verzamelt ook de huidige individuele bevestigingen. |
| autoRenewal | Of de campagne wordt verlengd. De standaardwaarde is true. Het uitschakelen van verlenging verwijdert geen minimumverplichting die al aan een productiecampagne is gekoppeld. |
| referenceId, tag | Uw campagnereferentie, maximaal 50 tekens, en optionele tags. referenceId is niet de header Idempotency-Key. |
Het gepubliceerde schema bevat inconsistent hoofdlettergebruik in beschrijvende tabellen. Het huidige portalverzoek gebruikt subscriberOptin en subscriberOptout zoals hierboven weergegeven. Behoud exact die schrijfwijze. Deze handleiding behandelt de tenantgerichte 10DLC-workflow; leid hieruit niet af dat de vereiste velden of activeringsstappen van een ander kanaal hetzelfde zijn.
Probeer dezelfde beoogde aanvraag veilig opnieuw
Gebruik één Idempotency-Key voor deze beoogde aanmaak. De sleutel is 1–128 afdrukbare ASCII-tekens zonder spaties en is gekoppeld aan het eigenaarsaccount. Houd de HTTP-methode, het pad, de querystring en de exacte bodybytes ongewijzigd bij een nieuwe poging. Een opnieuw geformatteerd JSON-bestand conflicteert, zelfs als de waarden gelijkwaardig zijn.
Een in behandeling zijnd duplicaat kan HTTP 409 met Retry-After retourneren; voltooide aanvragen kunnen hun opgeslagen antwoord opnieuw afspelen. Een gecachte fout bewijst niet dat het register niets heeft aangemaakt. Bewaar campaignId, requestId en eventuele correlatieheaders, inspecteer de bestaande campagne en controleer de werkelijke toestand en verhelp de verschillen die door een gedeeltelijke fout zijn ontstaan voordat u een nieuwe sleutel overweegt.
Een campagne-ID is niet de definitieve verzendconfiguratie
Het antwoord gebruikt HTTP-status en directe JSON. Bewaar bij een geslaagde aanmaak campaignId en lees de huidige status:
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
"https://api.multitel.net/tcr/v2/campaign/$CAMPAIGN_ID"De huidige productieworkflow van de portal deelt de campagne ook met de berichtencarrier en laadt het merk/de campagne in het verzendaccount. Dat zijn aparte bewerkingen naast deze openbare aanmaakaanroep. Een registercampagne kan bestaan, zelfs als een latere deel- of carrierlaadstap mislukt.
Gebruik de geïntegreerde productieaanmaakworkflow van de portal wanneer u de gecombineerde registratie-, deel- en carrierlaadvolgorde nodig heeft. Bewaar voor een productiecampagne die al direct via deze API is aangemaakt de campagne-ID en laat de carrierconfiguratie van het account via support afstemmen. De huidige klant-UI biedt geen algemene hervatknop voor elke direct aangemaakte productiecampagne. Maak geen nieuwe registratie aan om de activering opnieuw te proberen. Bevestig dat de campagne actief is en dat de carrierconfiguratie is voltooid voordat u een verzendnummer toewijst. Het nummer moet ook in eigendom, actief en SMS-ingeschakeld zijn. Het aanmaken van een campagne verzendt geen berichten.
Kosten van productiecampagnes
| Usecase | Maandelijkse kosten |
|---|---|
| LOW_VOLUME, UCAAS_LOW | $1.67 |
| SOLE_PROPRIETOR | $2.23 |
| CHARITY | $3.34 |
| EMERGENCY | $5.56 |
| AGENTS_FRANCHISES | $33.34 |
| Overige geconfigureerde fallback-usecases | $11.12 |
Deze retailbedragen zijn op 24 oktober 2026 gecontroleerd aan de hand van de huidige portalconfiguratie. Bevestig de huidige gekwalificeerde usecase en de weergegeven prijs vóór een productie-inzending. Een monthlyFee in een registerkwalificatieantwoord is niet automatisch uw MultiTEL-retailprijs.
De huidige portal vermeldt een minimumverplichting van drie maanden voor niet-politieke productiecampagnes. Controleer de toepasselijke voorwaarden en de verlengingskeuze vóór bevestiging. Registratie, nummerhuur, aanvullende vetting en berichtgebruik zijn aparte kosten. Een geslaagd aanmaakantwoord bewijst niet zelfstandig dat elke facturerings- of carrieractiveringsstap is voltooid.
Validatie- en gedeeltelijke fouten afhandelen
Lees HTTP-status en de geretourneerde JSON. Validatiefouten kunnen arrays van code/description-objecten zijn; lokale fouten kunnen in plaats daarvan objecten zijn met message, status en, voor sommige verwerkingsfouten, requestId.
| HTTP-resultaat | Volgende actie |
|---|---|
| 400 | Corrigeer de specifieke velden of de idempotency-sleutel. Lees de huidige kwalificatie, het vereiste aantal voorbeelden en de ontvangersflowvereisten opnieuw. |
| 401, 403 of 404 | Controleer de API-referenties en het toegestane bron-IP, vervolgens het merk-/resellereigendom en de machtigingen. Gebruik geen ID’s van een ander account. |
| 402 | Controleer de productiefinanciering en de aankoopmachtiging voordat u dezelfde beoogde aanmaak opnieuw probeert. |
| 409 | Maak onderscheid tussen het opnieuw afspelen van een lopende aanvraag en een gewijzigde aanvraag met dezelfde sleutel. Behoud de bestaande campagne- en aanvraagdetails bij het afstemmen. |
| 429 of limiter niet beschikbaar | Respecteer Retry-After indien aanwezig en behoud de oorspronkelijke sleutel en het exacte verzoek. |
| 500 of 502 | De aanmaak heeft mogelijk al plaatsgevonden. Bewaar campaignId en requestId, controleer de bestaande campagne en hervat of stem de activering af in plaats van een duplicaat aan te maken. |