Wie man eine SMS in Delphi plant

Der einfachste Weg, SMS von Delphi aus zu versenden, ist die Verwendung der integrierten HTTP/Rest-SMS-API des Ozeki SMS Gateways. Wenn Sie diese API verwenden, senden Sie SMS-Nachrichten, indem Sie eine HTTP-Post-Anfrage an das SMS-Gateway stellen. Die HTTP-Post-Anfrage wird eine Nachricht im JSON-Format enthalten. Das SMS-Gateway sendet diese SMS an die Empfängertelefonnummer und gibt eine HTTP-200-OK-Antwort auf Ihre Anfrage zurück.

wie man eine sms in delphi plant
Abbildung 1 - Wie man eine SMS in Delphi plant

Delphi-Code zum Senden einer SMS an ein Mobiltelefon

Das folgende Delphi-SMS-Codebeispiel zeigt, wie Sie SMS mit der HTTP-Rest-SMS-API des Ozeki SMS Gateways unter Verwendung der Delphi-Ozeki.Libs.Rest-Unit senden können. Diese Unit wird Ihnen kostenlos zur Verfügung gestellt und Sie können sie in Ihren Projekten verwenden und modifizieren.

SendScheduledSms.delphi
program SendScheduledSms;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Ozeki.Libs.Rest in 'Ozeki.Libs.Rest.pas';

var configuration : Ozeki.Libs.Rest.Configuration;
var msg : Ozeki.Libs.Rest.Message;
var api : Ozeki.Libs.Rest.MessageApi;
var result : MessageSendResult;
var read : string;

begin
  try
    configuration := Ozeki.Libs.Rest.Configuration.Create;
    configuration.Username := 'http_user';
    configuration.Password := 'qwe123';
    configuration.ApiUrl := 'http://127.0.0.1:9509/api';

    msg := Ozeki.Libs.Rest.Message.Create;
    msg.ToAddress := '+36201111111';
    msg.Text := 'Hello world!';
    msg.TimeToSend := StrToDateTime('7/27/21 4:00:00 PM');

    api := Ozeki.Libs.Rest.MessageApi.Create(configuration);

    result := api.SendMessage( msg );

    Writeln(result.ToString());

    Readln(read);
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

	

Wie man das Delphi-SMS-Beispiel verwendet:

Dieses Delphi-SMS-Beispiel kann in jeder Delphi-Anwendung verwendet werden. Um es zu verwenden, müssen Sie die Ozeki.Libs.Rest.pas-Unit zu Ihrem Projekt hinzufügen. Nachdem die Unit hinzugefügt wurde, müssen Sie die uses Ozeki.Libs.Rest in 'Ozeki.Libs.Rest.pas';-Direktive in den Kopfbereich Ihres Delphi-Quellcodes einfügen. Dies ermöglicht Ihnen die Verwendung der Klassen, die von der Ozeki.Libs.Rest-Unit bereitgestellt werden. Sie können die Message-Klasse verwenden, um die SMS zu erstellen. Sie können die MessageApi-Klasse verwenden, um die SMS an das SMS-Gateway zu senden. Das SMS-Gateway leitet Ihre Nachricht entweder über eine drahtlose Verbindung oder über das Internet an das Mobilfunknetz weiter.

SendScheduledSms.delphi herunterladen

Der in diesem Artikel erklärte Quellcode kann kostenlos heruntergeladen, verwendet und modifiziert werden.
Download: SendScheduledSms.delphi.zip (12.4Kb)

Was befindet sich in der SendScheduledSms.delphi.zip-Datei?

Die SendScheduledSms.delphi.zip-Datei enthält die Ozeki.Libs.Rest-Unit, die Ihnen alle notwendigen Tools zum Senden und Empfangen von SMS-Nachrichten bietet. Sie finden auch das SendScheduledSms-Projekt in der Zip-Datei, das den Beispielcode enthält, der Ihnen zeigt, wie Sie eine SMS senden können. Dieser Beispielcode ist unten aufgeführt.

mehrere sms delphi verzeichnis senden
Abbildung 2 - Was befindet sich in SendScheduledSms.delphi.zip

Wie man SMS von Delphi aus sendet (Einfache Anleitung)

Um SMS von Delphi aus zu senden:

  1. Installieren Sie einen HTTP-API-Benutzer
  2. Aktivieren Sie "Log communication events" auf der Registerkarte "Advanced"
  3. Richten Sie Embarcadero Delphi Studio ein
  4. Laden Sie die SendScheduledSms.delphi.zip-Datei herunter und entpacken Sie sie
  5. Öffnen Sie die SendScheduledSms.dproj-Datei in Delphi Studio durch Doppelklick
  6. Starten Sie die Ozeki SMS Gateway App
  7. Führen Sie den SendScheduledSms.dpr-Delphi-Code in Delphi Studio aus
  8. Überprüfen Sie die Protokolle, um zu sehen, ob die SMS gesendet wurde

Ozeki SMS Gateway installieren und einen HTTP-API-Benutzer erstellen

Um SMS von Delphi aus senden zu können, müssen Sie zunächst Ozeki SMS Gateway installieren. Das SMS-Gateway kann auf demselben Computer installiert werden, auf dem Sie Ihren Delphi-Code in Visual Studio entwickeln. Nach der Installation ist der nächste Schritt, Ozeki SMS Gateway mit dem Mobilfunknetz zu verbinden. Sie können eine Test-SMS von der Ozeki-GUI senden, um zu überprüfen, ob Ihre Mobilfunknetzverbindung funktioniert. Der letzte Schritt zur Vorbereitung Ihrer Umgebung ist die Erstellung eines HTTP-SMS-API-Benutzerkontos. Erstellen Sie einen Benutzer mit dem Benutzernamen "http_user" und dem Passwort "qwe123", damit das Beispiel ohne Änderungen funktioniert.

Nachdem die Umgebung eingerichtet ist, können Sie Ihren Delphi-Code ausführen.

HTTP-API-URL zum Senden von SMS von Delphi aus

Um SMS von Delphi aus zu senden, muss Ihre Delphi-Anwendung eine HTTP-Anfrage an das SMS-Gateway stellen. Die API-URL wird unten angezeigt. Beachten Sie, dass die IP-Adresse (127.0.0.1) durch die IP-Adresse Ihres SMS-Gateways ersetzt werden sollte. Wenn Ozeki SMS Gateway auf demselben Computer installiert ist, auf dem die Delphi-SMS-Anwendung läuft, kann dies 127.0.0.1 sein. Wenn es auf einem anderen Computer installiert ist, sollte es die IP-Adresse dieses Computers sein.

http://127.0.0.1:9509/api?action=rest
	

HTTP-Authentifizierung zum Senden von SMS aus Delphi

Um den Delphi-SMS-Client zu authentifizieren, müssen Sie den Benutzernamen und das Passwort in einer base64-kodierten Zeichenkette an den Server in einer HTTP-Anfrage senden. Das verwendete Format lautet: base64(Benutzername+":"+Passwort). In Delphi können Sie den folgenden Code verwenden, um diese Kodierung durchzuführen:

var usernamePassword := username + ':' + password;
var Encoder := TBase64Encoding.Create();
var usernamePasswordEncoded := Encoder.Encode(usernamePassword);
result := Format('Basic %s', [usernamePasswordEncoded]);
	

Wenn Sie beispielsweise den Benutzernamen 'http_user' und das Passwort 'qwe123' kodieren, erhalten Sie die folgende base64-kodierte Zeichenkette: aHR0cF91c2VyOnF3ZTEyMw==. Zum Senden

HTTP-Anfrageheader zum Senden von SMS aus Delphi

Um die SMS-Nachrichten zu senden, müssen Sie die folgenden Zeilen als Header in die HTTP-Anfrage aufnehmen. Beachten Sie, dass wir einen Content-Type-Header und einen Authorization-Header einfügen.

Content-Type: application/json
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	

HTTP-Anfrage zum Senden von SMS aus Delphi

Um die SMS zu übermitteln, sendet Ihre Delphi-Anwendung eine HTTP-Anfrage ähnlich der untenstehenden. Beachten Sie, dass diese Anfrage einen HTTP-Header-Teil und einen HTTP-Body-Teil enthält. Der HTTP-Body ist eine JSON-kodierte Datenzeichenkette. Er enthält die Empfängernummer, den Zeitpunkt zum Senden der SMS und den Text der Nachricht.

POST /api?action=sendmsg HTTP/1.0
Connection: keep-alive
Content-Type: application/json
Content-Length: 412
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509
Accept: application/json
User-Agent: Mozilla/3.0 (compatible; Indy Library)

{
	"messages": [ 
		{
			"message_id": "910663ad-85d8-44cc-aad3-8a5da4024148",
			"from_connection": "",
			"from_address": "",
			"from_station": "",
			"to_connection": "",
			"to_address": "+36201111111",
			"to_station": "",
			"text": "Hallo Welt!",
			"create_date": "2021-07-27T15:35:39",
			"valid_until": "2021-08-03T15:35:39",
			"time_to_send": "2021-07-27T14:00:00",
			"submit_report_requested": true,
			"delivery_report_requested": true,
			"view_report_requested": true
		}
	]
}
	

HTTP-Antwort, die vom Delphi-SMS-Beispiel empfangen wird

Sobald das SMS-Gateway diese Anfrage empfängt, wird es eine HTTP-Antwort generieren. Die HTTP-Antwort enthält einen Statuscode, der angibt, ob die SMS-Übermittlungsanfrage erfolgreich war oder nicht. Sie gibt auch eine JSON-kodierte Struktur zurück, die Ihnen nützliche Details über die Übermittlung der Nachricht liefert.

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf8
Last-Modified: Tue, 27 Jul 2021 15:09:55 GMT
Server: 10/10.3.123 Microsoft-HTTPAPI/2.0
User-Agent: OZEKI 10.3.123 (myozeki.com)
Date: Tue, 27 Jul 2021 13:35:39 GMT
Connection: close

{
  "http_code": 200,
  "response_code": "ERFOLG",
  "response_msg": "Nachrichten wurden zur Zustellung in die Warteschlange gestellt.",
  "data": {
    "total_count": 1,
    "success_count": 1,
    "failed_count": 0,
    "messages": [
      {
        "message_id": "910663ad-85d8-44cc-aad3-8a5da4024148",
        "from_station": "%",
        "to_address": "+36201111111",
        "to_station": "%",
        "text": "Hallo Welt!",
        "create_date": "2021-07-27 15:35:39",
        "valid_until": "2021-08-03 15:35:39",
        "time_to_send": "2021-07-27 14:00:00",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Typ",
            "value": "SMS:TEXT"
          }
        ],
        "status": "ERFOLG"
      }
    ]
  }
}

Wie man SMS aus Delphi mit der Delphi-SMS-API sendet (Video-Tutorial)

Dieses Video zeigt Ihnen, wie Sie die Datei SendScheduledSms.delphi.zip von dieser Seite herunterladen und wie Sie deren Inhalt in Delphi Studio herunterladen. Wenn Sie das Video ansehen, werden Sie feststellen, dass der Inhalt der SendScheduledSms.delphi-Zip-Datei auf den Windows-Desktop platziert wird. Sie werden auch sehen, dass wir auf die Datei SendScheduledSms.dproj doppelklicken, um das Projekt zu öffnen.

Delphi-SMS-Beispiel: SendScheduledSms.dproj

In dieser Lösung gibt es nur ein Projekt: SendScheduledSms.dproj und zwei Dateien: SendScheduledSms.dpr und Ozeki.Libs.Rest.pas.

Abbildung 3 - SendScheduledSms.dproj

Wie man überprüft, ob die SMS vom HTTP-Benutzer akzeptiert wurde

Nachdem die SMS übermittelt wurde, ist es eine gute Idee, Ihr SMS-Gateway zu überprüfen, um zu sehen, was es empfangen hat. Sie können das Protokoll überprüfen, indem Sie die Details des HTTP-Benutzers aus der Ozeki SMS Gateway Management-Konsole öffnen. Das folgende Video zeigt Ihnen, worauf Sie achten müssen.

Video 2 - SMS mit dem obigen Delphi-Code senden (Video-Tutorial)

Zusammenfassend

Dieser Artikel wurde geschrieben, um Ihnen beizubringen, wie Sie geplante SMS von Delphi aus über die HTTP-API des Ozeki SMS Gateways versenden können. Dieses Delphi-SMS-Beispiel kann in jeder Delphi-Anwendung verwendet werden, um sicherzustellen, dass es Ihren Erwartungen entspricht. Es bietet korrekte, gut geschriebene Methodenaufrufe zum Absenden einer SMS und eine gut gestaltete SMS-Klasse, mit der Sie die SMS-Parameter konfigurieren können.

Wenn Sie diesen Artikel hilfreich finden – und ich bin sicher, das tun Sie – hören Sie hier nicht auf, sondern lesen Sie mehr auf der Ozeki-Webseite. Sehen Sie sich das Delphi-Tutorial zum Thema Empfangen einer SMS an.

Nutzen Sie das Gelernte und laden Sie jetzt das Ozeki SMS Gateway herunter!

More information