So empfangen Sie SMS mit der SMPP-API
Das Short Message Peer-to-Peer (SMPP)-Protokoll ist ein leistungsstarkes, branchenübliches Protokoll, das den Austausch von SMS-Nachrichten zwischen External Short Message Entities (ESMEs) und Short Message Service Centers (SMSCs) erleichtert. Für Entwickler und Unternehmen, die die SMPP-API mit Ozeki SMS Gateway als primäre Plattform nutzen, ist das Verständnis der Low-Level-Operationen des Protokolls entscheidend für den Aufbau robuster SMS-Lösungen. Dieser Artikel bietet eine umfassende Anleitung zum Empfang von SMS-Nachrichten mit der SMPP-API, wobei der Schwerpunkt auf den Protokoll-Interaktionen und den spezifischen Protocol Data Units (PDUs) liegt, die für die Einrichtung, Wartung und Nutzung einer SMPP-API-Client-Verbindung mit Ozeki SMS Gateway erforderlich sind.
Einführung in die SMPP-API und Ozeki SMS Gateway
Die SMPP-API wird in der Telekommunikationsbranche häufig aufgrund ihrer Effizienz bei der Handhabung von Massen-SMS über TCP/IP-Verbindungen eingesetzt. Ozeki SMS Gateway, eine vielseitige SMPP-Software, fungiert sowohl als SMPP-Client als auch als Server und ist somit eine ideale Plattform für das Senden und Empfangen von SMS-Nachrichten. Durch die Implementierung des SMPP-Protokolls (Versionen 3.3 und 3.4, mit Unterstützung für 5.0 in Ozeki 10 SMS Gateway) ermöglicht Ozeki eine nahtlose Verbindung mit SMSCs und unterstützt Anwendungen wie Marketingkampagnen, Zwei-Faktor-Authentifizierung und Benachrichtigungssysteme. Dieser Artikel konzentriert sich auf den Empfang von SMS-Nachrichten und erläutert die SMPP-PDUs, die für die Verbindungseinrichtung, Wartung und Nachrichtenempfang erforderlich sind.
Grundlagen zu SMPP-PDUs
SMPP funktioniert durch den Austausch von Protocol Data Units (PDUs) zwischen dem SMPP-Client (z.B. Ozeki SMS Gateway) und dem SMPP-Server (z.B. einem SMSC). Jede PDU ist eine strukturierte Nachricht, die spezifische Anweisungen oder Daten enthält, wie Authentifizierungsdaten, SMS-Inhalte oder Verbindungsstatusabfragen. Um SMS-Nachrichten mit der SMPP-API zu empfangen, muss der Client eine Verbindung herstellen, aufrechterhalten und eingehende Nachrichten verarbeiten. Die wichtigsten beteiligten PDUs sind:
- bind_transceiver: Stellt eine Verbindung für das Senden und Empfangen von SMS her.
- enquire_link: Überprüft den Verbindungsstatus, um die Verbindung aufrechtzuerhalten.
- deliver_sm: Liefert eingehende SMS-Nachrichten vom SMSC an den Client.
- unbind: Beendet die SMPP-Sitzung.
Im Folgenden werden wir jede PDU detailliert betrachten, einschließlich ihrer Struktur, Konfiguration in Ozeki SMS Gateway und ihrer Rolle beim Empfang von SMS-Nachrichten über die SMPP-API.
Einrichten einer SMPP-API-Client-Verbindung
Um SMS-Nachrichten zu empfangen, ist der erste Schritt die Herstellung einer stabilen SMPP-API-Client-Verbindung mit dem SMSC. Ozeki SMS Gateway vereinfacht diesen Prozess mit seiner intuitiven Oberfläche, aber das Verständnis der protokollbasierten Operationen ist für fortgeschrittene Benutzer entscheidend.
1. Konfiguration des SMPP-Clients in Ozeki SMS Gateway
Um eine SMPP-API-Client-Verbindung in Ozeki SMS Gateway einzurichten, folgen Sie diesen Schritten:
- Anmeldung an der Management-Konsole: Greifen Sie auf die Ozeki SMS Gateway-Weboberfläche mit dem Administrator-Konto zu (Standard-Benutzername: "admin").
- Hinzufügen einer neuen Verbindung: Navigieren Sie zum "Verbindungen"-Panel, klicken Sie auf "Neue Verbindung hinzufügen" und wählen Sie "SMPP-Client" aus dem Abschnitt "IP-SMS-Verbindungen".
- Konfiguration der SMPP-Einstellungen: Geben Sie die folgenden Details an, die normalerweise von Ihrem SMS-Dienstanbieter bereitgestellt werden:
- Hostname: Die IP-Adresse oder der Hostname des SMSC (z.B. "192.168.1.1").
- Portnummer: Der TCP/IP-Port für die SMPP-Kommunikation (Standard ist 9500, aber bestätigen Sie dies mit Ihrem Anbieter).
- Benutzername (System-ID): Ihr Kontobezeichner für den SMSC.
- Passwort: Das Passwort, das mit der System-ID verknüpft ist.
- SMPP-Version: Wählen Sie v3.4 für Transceiver-Unterstützung (empfohlen für Senden und Empfangen).
- Systemtyp: Optional, oft "SMPP", wie vom Anbieter angegeben.
- Absenderadresse: Die standardmäßige Telefonnummer für ausgehende SMS (z.B. "+1234567890").
- Adressbereich: Optional, wird für den Empfang von Nachrichten von mehreren Nummern verwendet.
- Bind-Modus: Wählen Sie "Transceiver", um sowohl das Senden als auch das Empfangen von SMS über eine einzige Verbindung zu ermöglichen.
- Erweiterte Einstellungen: Aktivieren Sie "Automatisch beim Start verbinden" für nahtlose Wiederherstellung der Verbindung und aktivieren Sie "Keepalive-Pakete senden", um die Verbindung aufrechtzuerhalten.
- Protokollierung aktivieren: Aktivieren Sie im Tab "Erweitert" die Option "Kommunikationsereignisse protokollieren", um SMPP-PDUs für die Fehlerbehebung zu erfassen.
- Speichern und verbinden: Klicken Sie auf "OK", um die Konfiguration zu speichern, und dann auf "Verbinden", um die Verbindung zu initiieren.
Diese Einstellungen bereiten Ozeki SMS Gateway darauf vor, eine SMPP-API-Verbindung mit dem bind_transceiver-PDU herzustellen.
2. Der bind_transceiver-PDU
Der bind_transceiver-PDU ist der erste PDU, der vom SMPP-Client gesendet wird, um sich beim SMSC zu authentifizieren und eine Verbindung herzustellen. Er ermöglicht sowohl das Senden als auch das Empfangen von SMS-Nachrichten über eine einzige TCP/IP-Verbindung, was ihn ideal für die meisten SMPP-API-Anwendungen macht.
Struktur des bind_transceiver-PDU
Befehlslänge: 4 Bytes (Gesamtlänge des PDU) Befehlskennung: 0x00000009 (bind_transceiver) Befehlsstatus: 0x00000000 (für Anfragen auf 0 gesetzt) Sequenznummer: Eindeutige Kennung für den PDU System-ID: Benutzername für die Authentifizierung (z.B. "smppuser") Passwort: Passwort für die Authentifizierung (z.B. "password123") Systemtyp: Optional, oft "SMPP" Schnittstellenversion: SMPP-Version (z.B. 0x34 für v3.4) Adressbereich: Optional, für den Empfang von Nachrichten von bestimmten Nummern
Beispiel für einen bind_transceiver-PDU (hexadezimal):
0000002F 00000009 00000000 00000001 736D70707573657200 70617373776F726431323300 534D505000 34 00
Erklärung:
- Befehlslänge (0000002F): Gesamtlänge des PDU (47 Bytes).
- Befehlskennung (00000009): Identifiziert den PDU als bind_transceiver.
- Befehlsstatus (00000000): Für die Anfrage auf 0 gesetzt.
- Sequenznummer (00000001): Eine eindeutige ID zur Verfolgung des PDU.
- System-ID (736D70707573657200): ASCII für "smppuser" gefolgt von einem Null-Terminator.
- Passwort (70617373776F726431323300): ASCII für "password123" gefolgt von einem Null-Terminator.
- Systemtyp (534D505000): ASCII für "SMPP" gefolgt von einem Null-Terminator.
- Schnittstellenversion (34): Gibt SMPP v3.4 an.
- Adressbereich (00): Null, da optional.
Nach Erhalt des bind_transceiver-PDU validiert der SMSC die Anmeldeinformationen. Bei Erfolg antwortet er mit einem bind_transceiver_resp-PDU mit einem Befehlsstatus von 0x00000000, was eine erfolgreiche Verbindung anzeigt. Ozeki SMS Gateway protokolliert diese Interaktion, die im "Kommunikationsereignisse"-Log eingesehen werden kann.
Aufrechterhaltung der SMPP-API-Verbindung
Sobald die Verbindung hergestellt ist, muss sie aktiv gehalten werden, um einen kontinuierlichen SMS-Empfang zu gewährleisten. Das SMPP-Protokoll verwendet den enquire_link-PDU, um den Verbindungsstatus zu überprüfen und eine Unterbrechung aufgrund von Inaktivität zu verhindern.
Der enquire_link-PDU
Der enquire_link-PDU ist eine einfache Nachricht, die periodisch vom SMPP-Client an den SMSC gesendet wird, um zu bestätigen, dass die Verbindung aktiv ist. Dies ist besonders wichtig für die Aufrechterhaltung langfristiger Verbindungen, da Proxy-Server oder SMSCs inaktive Verbindungen beenden können.
Struktur des enquire_link-PDU
Befehlsänge: 0x00000010 (16 Bytes) Befehlskennung: 0x00000015 (enquire_link) Befehlsstatus: 0x00000000 (für Anfragen auf 0 gesetzt) Sequenznummer: Eindeutige Kennung für den PDU
Beispiel für einen enquire_link-PDU (hexadezimal):
00000010 00000015 00000000 00000002
Erklärung:
- Befehlsänge (00000010): Gesamtlänge (16 Bytes).
- Befehlskennung (00000015): Identifiziert den PDU als enquire_link.
- Befehlsstatus (00000000): Für die Anfrage auf 0 gesetzt.
- Sequenznummer (00000002): Eine eindeutige ID zur Verfolgung des PDU.
Der SMSC antwortet mit einem enquire_link_resp-PDU, der den Verbindungsstatus bestätigt. In Ozeki SMS Gateway stellt die Aktivierung der Option "Keepalive-Pakete senden" im Tab "Kommunikation" sicher, dass enquire_link-PDUs automatisch in regelmäßigen Abständen (z.B. alle 30 Sekunden) gesendet werden. Diese Einstellung ist entscheidend für die Aufrechterhaltung einer stabilen SMPP-API-Verbindung, insbesondere beim intermittierenden Empfang von SMS-Nachrichten.
SMS-Nachrichten mit der SMPP-API empfangen
Sobald die Verbindung hergestellt und aufrechterhalten wurde, kann der SMPP-API-Client SMS-Nachrichten über die deliver_sm-PDU empfangen. Diese PDU wird vom SMSC an den Client gesendet, wenn eine eingehende SMS oder ein Zustellbericht verfügbar ist.
Die deliver_sm-PDU
Die deliver_sm-PDU enthält den Inhalt einer eingehenden SMS-Nachricht oder eines Zustellberichts. Für den Empfang von SMS enthält die PDU die Telefonnummer des Absenders, die Empfängernummer (virtuelle Nummer, die vom Anbieter zugewiesen wurde) und den Nachrichtentext.
Aufbau der deliver_sm-PDU
Befehlslänge: Variabel (abhängig von der Nachrichtenlänge) Befehls-ID: 0x00000005 (deliver_sm) Befehlsstatus: 0x00000000 (für Anfragen auf 0 gesetzt) Sequenznummer: Eindeutige Kennung für die PDU Service-Typ: Optional, oft null Quelladresse TON: Typ der Nummer für den Absender Quelladresse NPI: Nummerierungsplan-Indikator für den Absender Quelladresse: Telefonnummer des Absenders (z.B. "+1234567890") Zieladresse TON: Typ der Nummer für den Empfänger Zieladresse NPI: Nummerierungsplan-Indikator für den Empfänger Zieladresse: Telefonnummer des Empfängers (z.B. virtuelle Nummer) ESM-Klasse: Nachrichtentyp (z.B. 0x04 für SMS) Datenkodierung: Zeichenkodierung (z.B. 0x00 für GSM 7-Bit) Kurznachricht: Der Nachrichtentext (bis zu 160 Zeichen für GSM)
Beispiel für eine deliver_sm-PDU (hexadezimal):
0000005F 00000005 00000000 00000003 00 01 01 2B3132333435363738393000 01 01 2B3938373635343332313000 00 00 00 00 00 48656C6C6F2C207468697320697320616E20534D5321
Erklärung:
- Befehlslänge (0000005F): Gesamtlänge (95 Bytes).
- Befehls-ID (00000005): Identifiziert die PDU als deliver_sm.
- Befehlsstatus (00000000): Für die Anfrage auf 0 gesetzt.
- Sequenznummer (00000003): Eine eindeutige ID zur Verfolgung der PDU.
- Service-Typ (00): Null, da optional.
- Quelladresse TON (01): Internationale Nummer.
- Quelladresse NPI (01): ISDN/Telefonnummerierungsplan.
- Quelladresse (2B3132333435363738393000): ASCII für "+1234567890".
- Zieladresse TON (01): Internationale Nummer.
- Zieladresse NPI (01): ISDN/Telefonnummerierungsplan.
- Zieladresse (2B3938373635343332313000): ASCII für "+9876543210".
- ESM-Klasse (00): Zeigt eine Standard-SMS an.
- Datenkodierung (00): GSM 7-Bit-Kodierung.
- Kurznachricht (48656C6C6F2C207468697320697320616E20534D5321): ASCII für "Hello, this is an SMS!".
Beim Empfang einer deliver_sm-PDU verarbeitet Ozeki SMS Gateway die Nachricht und leitet sie an die konfigurierte Anwendung oder Datenbank weiter. Der Client muss mit einer deliver_sm_resp-PDU antworten, um den Empfang zu bestätigen und eine zuverlässige Zustellung sicherzustellen. In Ozeki wird diese Antwort automatisch behandelt, und die Nachricht wird im "Nachrichten"-Panel protokolliert oder in der Datenbank gespeichert, falls konfiguriert.
Konfiguration von Ozeki SMS Gateway für den SMS-Empfang
Um sicherzustellen, dass Ozeki SMS Gateway SMS-Nachrichten empfangen kann:
- Einrichtung einer virtuellen Nummer: Arbeiten Sie mit Ihrem SMS-Dienstanbieter zusammen, um eine virtuelle Nummer (IMSI) für den SMS-Empfang zuzuweisen. Diese Nummer wird im Feld "Adressbereich" während der Konfiguration angegeben.
- Datenbankintegration: Konfigurieren Sie Ozeki so, dass eingehende Nachrichten in einer Datenbank gespeichert werden, indem Sie die SQL-SELECT-Anweisung in der "Datenbankbenutzer"-Konfiguration anpassen (z.B. "SELECT id, sender, receiver, msg, msgtype FROM ozekimessagein").
- Protokollierung: Aktivieren Sie die SMPP-PDU-Protokollierung, um eingehende deliver_sm-PDUs zu Debugging-Zwecken zu überwachen.
Nach der Konfiguration werden eingehende SMS-Nachrichten automatisch an die angegebene Anwendung oder Datenbank weitergeleitet, wodurch Ozeki SMS Gateway eine robuste Plattform für den SMPP-API-basierten SMS-Empfang ist.
Beenden der SMPP-API-Verbindung
Wenn die SMPP-API-Sitzung nicht mehr benötigt wird, sendet der Client eine unbind-PDU, um die Verbindung ordnungsgemäß zu beenden.
Die unbind-PDU
Die unbind-PDU signalisiert dem SMSC, die SMPP-Sitzung zu schließen.
Aufbau der unbind-PDU
Befehlslänge: 0x00000010 (16 Bytes) Befehls-ID: 0x00000006 (unbind) Befehlsstatus: 0x00000000 (für Anfragen auf 0 gesetzt) Sequenznummer: Eindeutige Kennung für die PDU
Beispiel für eine unbind-PDU (hexadezimal):
00000010 00000006 00000000 00000004
Erklärung:
- Befehlslänge (00000010): Gesamtlänge (16 Bytes).
- Befehls-ID (00000006): Identifiziert die PDU als unbind.
- Befehlsstatus (00000000): Für die Anfrage auf 0 gesetzt.
- Sequenznummer (00000004): Eine eindeutige ID zur Verfolgung der PDU.
Der SMSC antwortet mit einer unbind_resp-PDU, die die Beendigung der Sitzung bestätigt. In Ozeki SMS Gateway können Sie dies durch Klicken auf "Trennen" im "Verbindungen"-Panel initiieren.
Beste Praktiken für SMPP-API-Benutzer
Um Ihre SMPP-API-Implementierung mit Ozeki SMS Gateway für den SMS-Empfang zu optimieren:
- Keepalive-Pakete aktivieren: Stellen Sie sicher, dass die Option "Keepalive-Pakete senden" aktiviert ist, um eine stabile Verbindung aufrechtzuerhalten.
- Protokolle überwachen: Überprüfen Sie regelmäßig die SMPP-PDU-Protokolle, um Probleme mit bind_transceiver, enquire_link oder deliver_sm-PDUs zu beheben.
- Transceiver-Modus verwenden: Bevorzugen Sie den Transceiver-Modus für Effizienz, da er sowohl das Senden als auch das Empfangen über eine einzige Verbindung unterstützt.
- Sichere Verbindungen: Verwenden Sie, falls von Ihrem Anbieter unterstützt, SMPPS (SMPP über SSL/TLS) für verschlüsselte Kommunikation.
- Zustellberichte verarbeiten: Konfigurieren Sie Ozeki so, dass deliver_sm-PDUs mit Zustellberichten verarbeitet werden, um den Nachrichtenstatus zu verfolgen.
Das Empfangen von SMS-Nachrichten über die SMPP-API mit Ozeki SMS Gateway erfordert das Herstellen einer Verbindung mit der bind_transceiver-PDU, deren Aufrechterhaltung mit enquire_link-PDUs und die Verarbeitung eingehender Nachrichten über deliver_sm-PDUs. Durch das Verständnis dieser PDUs und die entsprechende Konfiguration von Ozeki SMS Gateway können Entwickler zuverlässige, leistungsstarke SMS-Anwendungen erstellen. Die Flexibilität der SMPP-API und die robuste Implementierung von Ozeki machen es zu einer hervorragenden Wahl für Unternehmen, die skalierbare SMS-Lösungen benötigen. Weitere Einzelheiten finden Sie in der Ozeki SMS Gateway-Dokumentation oder wenden Sie sich an Ihren SMS-Dienstanbieter für spezifische Konfigurationsparameter.
More information
- Wie man eine SMPP-API-Client-Verbindung mit Ihrem SMSC einrichtet
- Wie man einen SMPP-API-Server einrichtet, um SMS von mehreren Apps zu senden und zu empfangen
- Wie man den richtigen SMPP-API-Anbieter für Ihr Unternehmen auswählt
- Wie man SMS mit der SMPP-API auf Protokollebene sendet
- Wie man SMS über die SMPP-API mit Python sendet
- Wie man SMS über die SMPP-API mit Javascript sendet
- Wie man SMS über die SMPP-API mit Java sendet
- Wie man SMS über die SMPP-API mit PHP sendet
- Wie man SMS über die SMPP API mit C# sendet
- Wie man SMS über die SMPP-API mit C/C++ sendet
- Wie man SMS mit der SMPP-API empfängt
- Wie man einen SMS-Zustellungsbericht mit der SMPP-API empfängt
- SMPP-API FAQ