Een applicatie kan een bericht verzenden voordat de telefoon van de ontvanger bereikbaar is. Een SMPP-verbinding draagt die verzending en de latere operaties die rapporteren wat er is gebeurd.
Wat draagt de verbinding over?
SMPP draagt berichtverzendingen, inkomende berichten en afleverrapporten over tussen verbonden systemen.
Je applicatie kan verbinding maken met een gateway die verkeer doorstuurt. Ze kan ook rechtstreeks verbinding maken met een berichtencentrale als de provider dat ondersteunt.
De SMPP-referentie beschrijft die rollen en operaties. Een berichtencentrale slaat berichten op en stuurt ze door naar ontvangers.
Een gateway tussen je applicatie en de centrale voegt een extra routeringsstap toe. De protocolnaam alleen vertelt je niet hoeveel systemen het bericht verwerken.
Hoe werkt een SMPP-sessie?
Je client opent een verbinding. De client authenticeert de sessie en houdt deze beschikbaar voor berichtoperaties.
De authenticatiestap heet een bind. Een transmitter-sessie verzendt berichten. Een receiver-sessie ontvangt ze. Een transceiver-sessie ondersteunt beide richtingen.
Gebruik het sessietype dat je workflow vereist. Een verbinding die alleen kan verzenden, kan een ontvangstsessie niet vervangen wanneer je inkomende operaties nodig hebt.
Je client moet herstellen van verbindingsverlies. De client moet ook ontvangen operaties bevestigen. Houd bij welke verzoeken op een antwoord wachten, zodat een vertraagd antwoord aan het juiste verzoek wordt gekoppeld.
Bewijst een verzendantwoord dat het bericht is afgeleverd?
Een verzendantwoord rapporteert of de verbonden dienst de verzending heeft geaccepteerd, niet of de telefoon het bericht heeft ontvangen.
De submit_sm-operatie verzendt een bericht. Het bijbehorende submit_sm_resp rapporteert het resultaat van dat verzoek.
Inkomende berichten en afleverbevestigingen kunnen binnenkomen via deliver_sm. De referentie voor afleverbevestigingen legt de ontvangstoperaties en hun inhoud uit.
Houd het verzendresultaat gescheiden van het afleverresultaat in je applicatie. Een bericht kan geaccepteerd worden en later mislukken omdat de ontvanger onbereikbaar blijft.
Wat verandert er als ik een HTTP API gebruik?
HTTP biedt verzoek- en antwoordoperaties zonder dat je applicatie een SMPP-bind hoeft te beheren.
Je applicatie moet nog steeds opnieuw proberen afhandelen. Ze moet ook latere afleverresultaten verwerken. HTTP maakt de asynchrone aflevering van een carrier niet tot een synchrone garantie.
Met Bird verzend je via POST /v1/sms/messages en volg je de geretourneerde berichtidentifier. De verzendgids legt het 202-acceptatieantwoord uit. SMS-events levert de daaropvolgende afleverrapporten.
Die API-verantwoordelijkheden staan los van het beheren van een SMPP-verbinding met een provider. API's en gateways legt de lagen uit.
Maakt SMPP providers uitwisselbaar?
Providers zijn niet uitwisselbaar alleen omdat ze hetzelfde protocol delen. Ze kunnen verschillende operaties, encodings en limieten ondersteunen.
Test de mogelijkheden die je applicatie gebruikt voordat je verkeer verplaatst. Een succesvolle bind bewijst niet dat elke vereiste operatie bij die provider werkt.
De gatewayreferentie raadt aan om implementatieondersteuning en prestaties te testen. Behoud je aflevercontroles bij het wisselen van verbindingen, in plaats van een nieuw endpoint als een volledige migratie te behandelen.
Wanneer kies je voor SMPP?
Kies SMPP wanneer een bestaand systeem een persistente bind of SMPP-specifieke inkomende operaties nodig heeft.
- Gebruik HTTP voor een nieuwe applicatie zonder specifieke SMPP-vereiste.
- Gebruik SMPP wanneer een bestaand systeem een persistente bind of SMPP-specifieke inkomende operaties nodig heeft.
- Test providerondersteuning en afleverresultaten voordat je productieverkeer verplaatst.
Kort gezegd
Je client beheert een sessie.
De client authenticeert de verbinding en herstelt wanneer die verbinding wegvalt.
Verzending en aflevering zijn verschillende operaties.
Een succesvol verzendantwoord bewijst niet dat het toestel het bericht heeft ontvangen.
Ondersteuning verschilt per provider.
Test operaties, encoding en capaciteit in plaats van aan te nemen dat het protocol providers uitwisselbaar maakt.
HTTP kan SMPP-sessiebeheer overbodig maken.
HTTP maakt het beheren van een SMPP-bind overbodig, terwijl je applicatie nog steeds aflevergebeurtenissen afhandelt.