Wie man SMS in C# empfängt

Dieser Artikel gibt Informationen darüber, wie man SMS in C# mit der Ozeki SMS Gateway gesendet wurde. Lesen Sie weiter, um mehr über dieses Verfahren zu erfahren!

Warum möchten Sie SMS in C# empfangen?

Es gibt verschiedene Gründe, warum Sie SMS in C# empfangen möchten. Sie möchten möglicherweise Daten von Sensoren oder Mobilfunknutzern sammeln, Sie können SMS-Dienste erstellen, die eine Antwort mit Informationen senden, oder Sie können Ihre Nutzer einfach bitten, den Empfang einer SMS zu bestätigen.

Voraussetzungen

Wie man SMS in C# empfängt (Schnelle Schritte)

Wie man SMS in C# empfängt
  1. Laden Sie das C# SMS-Empfangsbeispiel herunter
  2. Öffnen Sie die Lösung in Visual Studio
  3. Verbinden Sie sich mit der Ozeki SMS Gateway
  4. Empfangen Sie eine simulierte SMS in C#
  5. Verbinden Sie sich mit dem Mobilfunknetz
  6. Empfangen Sie eine SMS in C#, die von einem Mobiltelefon gesendet wurde
  7. Überprüfen Sie die Protokolle in der SMS Gateway
  8. Überprüfen Sie den Zustellbericht auf Ihrem Mobiltelefon

SMS in C# empfangen
Abbildung 1 - SMS in C# empfangen

C# Codebeispiel zum Empfangen von Textnachrichten

Das folgende C# SMS-Codebeispiel skizziert die wichtigsten Schritte, um einen SMS-Empfangsdienst zu erstellen. Die Ozeki C# SMS API ist kostenlos. Sie können die API-Bibliothek, die mitgelieferten Beispiele ändern und sie in Ihrem Projekt verwenden und frei weiterverteilen oder davon abgeleitete Werke erstellen. Das folgende Beispiel zeigt, wie Sie sich für das OnMessageReceived-Ereignis in C# anmelden und wie Sie dieses Ereignis behandeln. Das Beispiel gibt die eingehende SMS-Nachricht auf der Konsole aus.


class Program
{
    static OzxClient Client;

    static void Main(string[] args)
    {
        Client = new OzxClient();
        Client.AutoReconnect = true;
        Client.OnMessageReceived += Client_OnMessageReceived;
        
        Client.Connect("127.0.0.1",9580,"testuser","testpass");
    }

    static void Client_OnMessageReceived(object sender, OzxArgs<IOzxMessage> e)
    {
        Console.WriteLine("Nachricht empfangen: " + e.Item.ToString());
    }
}

Der e.Item-Parameter ist eine vollständige OzxMessage. Das bedeutet, dass Sie alle Details der SMS-Nachricht in Ihrem C# SMS API-Ereignis haben. Diese Details umfassen die Absender-ID der SMS, die Telefonnummer, an die die SMS gesendet wurde, den SMS-Text und die entsprechenden Zeitstempel.

Einer der größten Vorteile der Verwendung der Ozeki C# SMS API ist, dass Sie eingehende SMS-Nachrichten sofort erhalten. Sobald sie die SMS Gateway erreichen, werden sie über die bestehende TCP/IP-Verbindung an Ihren C# SMS-Client weitergeleitet. Das bedeutet, dass Sie keine Verzögerungen erleben werden.

Wenn Ihr C# SMS API-Client nicht mit der SMS Gateway verbunden ist, wenn die SMS empfangen wird, wird die SMS im Posteingangsordner der SMS Gateway gespeichert. Das bedeutet, dass Ihre eingehenden Nachrichten nicht verloren gehen, selbst wenn die SMS-Software, die Sie mit der C# SMS API geschrieben haben, offline ist. Dies liegt daran, dass die Ozeki SMS Gateway tatsächlich ein SMS-Server ist.

Schritt 1 - Laden Sie die Ozeki C# SMS-Bibliothek herunter

Navigieren Sie zu https://ozeki-sms-gateway.com/attachments/5755/OzekiConsole.zip und laden Sie die Zip-Datei mit Ihrem Browser herunter. Die Zip-Datei landet in Ihrem Download-Verzeichnis (Abbildung 2). Sie können den Download direkt im Windows Explorer öffnen. Die heruntergeladene Zip-Datei enthält den Beispielcode, den Sie verwenden können, um SMS in C# zu empfangen.

Ozeki SMS-Bibliothek heruntergeladen
Abbildung 2 - Ozeki SMS-Bibliothek heruntergeladen

Schritt 2 - Extrahieren Sie die C# SMS-Bibliothek

Extrahieren Sie die C# SMS-Bibliothek, indem Sie mit der rechten Maustaste auf die Datei OzekiConsole.zip klicken (Abbildung 2). Dadurch wird das Kontextmenü angezeigt. Wählen Sie im Kontextmenü "Alle extrahieren...". Dadurch wird das "Extrahieren"-Dialogfenster angezeigt, in dem Sie auf "Extrahieren" klicken müssen.

Klicken Sie auf die Schaltfläche "Extrahieren" im Dialogfenster "Alle extrahieren" (Abbildung 3).

Extrahieren Sie das C# SMS-Empfangsbeispiel
Abbildung 3 - Extrahieren Sie das C# SMS-Empfangsbeispiel

Schritt 3 - Öffnen Sie das Projekt in Visual Studio

Öffnen Sie den Ordner OzekiConsole. Dieser Ordner wird angezeigt, nachdem Sie das OzekiConsole.zip-Paket extrahiert haben. Doppelklicken Sie im OzekiConsole-Ordner auf die Datei OzekiConsole.sln. Dadurch wird das Dialogfeld "Wie möchten Sie diese Datei öffnen?" angezeigt. Wählen Sie in diesem Dialogfeld "Visual Studio" aus. Nachdem Visual Studio ausgewählt wurde, klicken Sie auf OK, um das C#-Beispielprojekt zu öffnen. (Abbildung 4)

Öffnen Sie das C# SMS-Empfangsbeispiel in Visual Studio
Abbildung 4 - Öffnen Sie das C# SMS-Empfangsbeispiel in Visual Studio

Schritt 4 - Klicken Sie auf Program.cs

Öffnen Sie Program.cs, indem Sie auf die Datei im Projektmappen-Explorer auf der linken Seite des Bildschirms klicken. Dies ist der Hauptcode dieses C#-Beispielprojekts. Dieser Code enthält Beispiele, wie Sie SMS von C# aus senden und wie Sie SMS in C# empfangen können. Der Code ist nicht zu lang, er umfasst etwa 300 Zeilen. Er demonstriert die volle Funktionalität der C# SMS API. (Abbildung 5)

Program.cs in den Editor laden
Abbildung 5 - Program.cs in den Editor laden

Schritt 5 - Setzen Sie einen Haltepunkt im SMS-Empfangscode

Finden Sie den OnMessageReceived-Ereignishandler und setzen Sie einen Haltepunkt auf die Anfangszeile der Prozedur. Dieser Haltepunkt gibt Ihnen die Möglichkeit, das OnMessageReceived-Ereignis zu erfassen. Das OnMessageReceived-Ereignis wird ausgelöst, wenn Ihr C# SMS-Client die SMS-Nachricht vom SMS-Gateway empfängt. (Abbildung 6)

Setzen Sie einen Haltepunkt im Ereignis 'On SMS Received'
Abbildung 6 - Setzen Sie einen Haltepunkt im Ereignis 'On Message Received'

Schritt 6 - Erstellen Sie ein OZX-Benutzerkonto für die SMS-API

Damit sich das C# SMS-API-Beispiel mit dem SMS-Gateway verbinden kann, müssen Sie ein OZX-Benutzerkonto im SMS-Gateway erstellen. Navigieren Sie dazu zur Verwaltungskonsole des SMS-Gateways, indem Sie die URL https://127.0.0.1:9515 öffnen und auf den Link "Neuen Benutzer/Anwendung hinzufügen" auf der rechten Seite des Bildschirms klicken. (Abbildung 7)

Erstellen Sie ein SMS-Benutzerkonto zum Empfangen von Textnachrichten
Abbildung 7 - Erstellen Sie ein SMS-Benutzerkonto zum Empfangen von Textnachrichten in C#

Der Link "Neuen Benutzer/Anwendung hinzufügen" zeigt eine Liste installierbarer Benutzertypen an. Sie müssen das OZX-Benutzerkonto in der Liste finden. Das OZX-Benutzerkonto verwendet ein hochoptimiertes SMS-Protokoll, das es Ihrer C# SMS-Anwendung ermöglicht, über das Netzwerk mit dem SMS-Gateway zu kommunizieren. Da das SMS-Gateway und der C# SMS-Client über das Netzwerk kommunizieren, können Sie eine Textnachricht in Ihrem C#-Projekt empfangen, selbst wenn das Projekt auf einem anderen Computer läuft. (Abbildung 8)

Installieren Sie das C# SMS-API-Benutzerkonto
Abbildung 8 - Klicken Sie auf Installieren, um das C# SMS-API-Benutzerkonto (OZX-Benutzer) zu installieren

Geben Sie einen Benutzernamen und ein Passwort an. In unserem Beispiel verwenden wir testuser als Benutzernamen und testpass als Passwort. Der C# SMS-Client verwendet diese Anmeldedaten, um eine Verbindung zum SMS-Gateway herzustellen. Wenn Sie mehr als eine C# SMS-API-Verbindung wünschen, können Sie mehrere OZX-Benutzerkonten erstellen. Jedes Benutzerkonto hostet seinen eigenen C# SMS-API-Client. Um zu entscheiden, welcher C# SMS-Client eine eingehende SMS empfängt, müssen Sie eingehende Routen in der Ozeki SMS-Routing-Tabelle erstellen. (Abbildung 9)

Setzen Sie testuser als C# SMS-API-Benutzernamen
Abbildung 9 - Setzen Sie testuser als C# SMS-API-Benutzernamen

Aktivieren Sie die Protokollierungsoptionen für das C# SMS-API-Konto, um Kommunikationsprotokolle zu erhalten. Ich empfehle, zunächst alle Protokollierungs-Checkboxen anzukreuzen, damit Sie detaillierte Informationen darüber erhalten, was mit einer Nachricht passiert. Wenn Sie eine Textnachricht erhalten, sehen Sie diese im Protokoll, bevor sie an Ihren C# SMS-Client weitergeleitet wird. (Abbildung 10)

Aktivieren Sie die Protokollierung, um empfangene SMS zu sehen, bevor sie den C# SMS-Client erreicht
Abbildung 10 - Aktivieren Sie die Protokollierung, um empfangene SMS zu sehen, bevor sie den C# SMS-Client erreicht

Schritt 6 - Fügen Sie eine neue Route hinzu, um eingehende SMS zu simulieren

Erstellen Sie eine neue SMS-Route, um dem Administrator-Benutzer zu ermöglichen, Test-SMS-Nachrichten an den C# SMS-API-Client zu senden. Eines der besten Dinge bei der Verwendung des Ozeki SMS-Gateways ist, dass es Ihnen ermöglicht, Ihre SMS-Nachrichten mit einer Routing-Tabelle zu verwalten. Sie können verschiedene Mobilfunkverbindungen einrichten und entscheiden, welche SMS wohin gesendet werden soll. In unserem Beispiel möchten wir SMS-Nachrichten, die vom Administrator-Konto kommen, an den C# SMS-API-Client weiterleiten. In einem realen System leiten Sie keine SMS vom Administrator-Konto weiter, sondern Sie leiten SMS-Nachrichten, die über Mobilfunkverbindungen empfangen werden, an Ihren C# SMS-API-Client weiter.

Um eine neue SMS-Route zu erstellen, klicken Sie im Ozeki SMS-Gateway-Dashboard auf "Neue Route hinzufügen" (Abbildung 11).

Fügen Sie eine neue SMS-Route für den C# SMS-Client hinzu
Abbildung 11 - Neue SMS-Route hinzufügen

Um eine Textnachricht zu empfangen, während Sie Ihren C# SMS-Code schreiben, verwenden Sie das SMS-Gateway-Verfassen-Formular und senden die SMS als Administrator-Benutzer. Die SMS-Route, die wir erstellen werden, leitet die SMS-Nachrichten, die vom Administrator kommen, an das testuser-Konto weiter. Das testuser-Konto leitet die SMS dann an den C# SMS-Client weiter (Abbildung 12).

SMS von der GUI zu C#
Abbildung 12 - SMS vom Administrator an den C#-Client

Wählen Sie testuser als Ziel für Ihre eingehenden SMS-Nachrichten im Routing-Details-Formular aus. Diese Route sendet SMS-Nachrichten vom Administrator-Benutzer an testuser. Der testuser leitet die empfangenen SMS-Nachrichten an den C# API-Client weiter (Abbildung 13).

Erstellen Sie eine SMS-Route zum Simulieren eingehender Texte
Abbildung 13 - Erstellen Sie eine SMS-Route zum Simulieren eingehender Texte

Schritt 7 - Starten Sie das C# SMS-Beispielprojekt

Um Ihr C# SMS-Projekt zu starten, müssen Sie auf die Start-Schaltfläche in der Visual Studio-Symbolleiste klicken. Nachdem Sie diese Schaltfläche angeklickt haben, wird Visual Studio den Code kompilieren und in der Entwicklungsumgebung ausführen. Die Programmausführung wird angehalten, wenn der Algorithmus einen Haltepunkt erreicht. Da unser Beispiel eine Konsolenanwendung ist, erscheint das schwarze Konsolenfenster, sobald die Ausführung beginnt. (Abbildung 14)

Abbildung 14 - Starten Sie das C# SMS API-Projekt

Geben Sie "help" in das Konsolenfenster ein. Der Hilfetext listet die verfügbaren Befehle für dieses Beispielprojekt auf. Der erste Befehl, den Sie verwenden werden, ist der "connect"-Befehl. Geben Sie "connect 127.0.0.1:9580 testuser testpass" in das Konsolenfenster ein, um Ihren C# SMS-Code mit dem SMS-Gateway zu verbinden. Beachten Sie, dass 127.0.0.1 bedeutet, dass das SMS-Gateway auf demselben PC läuft wie Ihr C# SMS-Code. 9580 ist der TCP/IP-Port, den das SMS-Gateway verwendet, um C# SMS-Clients (OZX-Benutzer) zu akzeptieren, und die Anmeldedaten testuser und testpass sind diejenigen, die wir in Schritt 6 dieses SMS-Tutorials beim Erstellen des OZX-Benutzerkontos definiert haben. (Abbildung 15)

Abbildung 15 - Starten Sie die C# SMS-Konsolenanwendung

Sobald Sie mit dem SMS-Gateway verbunden sind, können Sie Ihre erste SMS an Ihren C# API-Client senden.

Schritt 8 - Senden Sie eine Test-SMS

Senden Sie eine Test-SMS-Nachricht, indem Sie auf die Schaltfläche "Neu" in der Ozeki-Symbolleiste in der SMS-Gateway-Verwaltungskonsole klicken. Beim Senden Ihrer Test-SMS müssen Sie eine Empfängeradresse und den Nachrichtentext angeben. Auf der Registerkarte "Erweitert" können Sie auch eine Absender-ID definieren, wie z.B. einen alphanumerische Absender-ID für Ihre SMS. (Abbildung 16)

Test-SMS, die empfangen werden soll
Abbildung 16 - Verfassen Sie die Test-SMS, die empfangen werden soll

Klicken Sie auf OK, um die Test-SMS zu senden. Ihr SMS-Gateway zeigt Ihnen die Ereignisse im Zusammenhang mit dem SMS-Versand an, und Sie erhalten eine Nachrichten-ID. Sie können die GUID-Zeichenfolge in der letzten Zeile von Abbildung 17 erkennen.

SMS-Nachrichten-ID, die in der C# SMS API verwendet wird
Abbildung 17 - SMS-Nachrichten-ID, die in der C# SMS API verwendet wird

Nachdem die SMS vom Administrator gesendet wurde, wird sie vom OZX-Benutzerkonto "testuser" empfangen. Dieses Benutzerkonto leitet die SMS über das Netzwerk an den C# SMS-Client weiter. Der C# SMS-Client empfängt den Text über die TCP/IP-Verbindung, die durch die "connect"-Methode hergestellt wurde. Wenn Sie einen Haltepunkt im OnMessageReceived-Ereignis gesetzt haben, wird die Programmausführung an dieser Stelle angehalten.

Schritt 9 - Empfangen Sie SMS in der C#-Konsole

Lesen Sie die empfangene Nachricht in der C#-Konsole. Sie werden sehen, dass die SMS von admin@localhost an die Telefonnummer +361111111 gesendet wurde. Der C# SMS API-Client hat den Text "Hello c sharp client" empfangen (Abbildung 18). Die Textnachricht wurde dem C#-Client in Form eines C#-Ereignisses übermittelt. Der OnMessageReceived-Ereignishandler wird aufgerufen, wenn dieses Ereignis ausgelöst wird, und die Nachricht wurde in den Eingabeparameter der OzMessageReceived-Ereignishandlermethode eingefügt.

SMS in C#-Konsole empfangen
Abbildung 18 - SMS in C#-Konsole empfangen

Als Nächstes sollten Sie sich das Protokoll im SMS-Gateway ansehen.

Schritt 10 - Protokolle im SMS-Gateway anzeigen

Öffnen Sie die Detailseite des "testuser"-Kontos, indem Sie auf den Link "testuser" im Ozeki SMS-Gateway-Dashboard klicken. Dies führt uns zum Ereignisprotokoll des "testuser"-Kontos. In diesem Ereignisprotokoll erwarten wir die Kommunikation zwischen dem C# SMS-Client und dem SMS-Gateway zu sehen. Wir erwarten auch, die empfangene SMS-Nachricht im Kommunikationsprotokoll zu finden. (Abbildung 19)

Abbildung 19 - Öffnen Sie die Detailseite des "testuser"-Kontos

Suchen Sie nach der Zeile "Received." im Ereignisprotokoll des "testuser"-Kontos. In dieser Zeile sehen Sie die SMS, die vom C# SMS-Client empfangen wurde. Sie können das Datum und die Uhrzeit des Ereignisses sowie die Nachrichtendetails sehen. Unterhalb des menschenlesbaren Protokolleintrags sehen Sie das OZX-Protokollkommunikationsprotokoll. Dieses Protokoll ermöglicht es Ihnen, die Kommunikation zu debuggen, falls Probleme auftreten. (Abbildung 20)

Abbildung 20 - Überprüfen Sie die eingehende SMS im Benutzerkonto, das mit der C# SMS API verknüpft ist

Eine Textnachricht vom Mobilfunknetz empfangen

In den oben beschriebenen Schritten haben wir eine eingehende Nachricht simuliert. Der Admin-Benutzer hat eine Nachricht gesendet, die an das C#-SMS-Beispiel weitergeleitet wurde. Der nächste Schritt besteht darin, das System mit dem Mobilfunknetz zu verbinden. Dafür haben Sie verschiedene Möglichkeiten. Sie können sich über eine Android-SMS-Gateways nutzen. (Abbildung 21)

Abbildung 21 - SMS mit einem Android-Telefon empfangen

Damit die oben beschriebene Lösung mit einem Android-Telefon funktioniert, müssen Sie lediglich eine eingehende Route in der Ozeki SMS-Routing-Tabelle erstellen. Sie müssen diese Route zwischen der Mobilfunknetzverbindung und dem C#-SMS-API-Benutzer (testuser) einrichten. Um die beste Mobilfunknetzverbindungsmethode für Ihr Projekt zu finden, lesen Sie unsere Anleitung wie Sie Ihr SMS-Gateway mit dem Mobilfunknetz verbinden. (Abbildung 22)

Abbildung 22 - SMS-Routing-Tabelle empfangen

Zusammenfassend

Dies war eine lange und sehr detaillierte Anleitung, die Ihnen den Einstieg in die Entwicklung eines C#-SMS-Projekts erleichtern soll, das SMS-Nachrichten empfangen kann. Wenn Sie diese Lösung nutzen, werden Sie schnell feststellen, dass sie sehr gut geeignet ist, wenn Sie SMS-Nachrichten schnell über verschiedene Mobilfunknetzverbindungen empfangen möchten. Diese Lösung funktioniert unabhängig davon, ob Sie SMS über ein Android-Mobiltelefon oder über eine IP-SMS-Verbindung wie eine SMPP-Client-Verbindung empfangen möchten.

More information