Jak wysłać SMS z Delphi

Najprostszym sposobem na wysłanie SMS z Delphi jest użycie wbudowanego interfejsu HTTP/Rest SMS API Ozeki SMS Gateway. Korzystając z tego API, będziesz wysyłać wiadomości SMS poprzez wysłanie żądania HTTP Post do bramki SMS. Żądanie HTTP Post będzie zawierać wiadomość w formacie JSON. Bramka SMS wyśle tę wiadomość na telefon odbiorcy i zwróci odpowiedź HTTP 200 OK na Twoje żądanie.

jak wysłać sms z delphi
Rysunek 1 - Jak wysłać SMS z Delphi

Kod Delphi do wysyłania SMS na telefon komórkowy

Poniższy przykładowy kod SMS w Delphi demonstruje, jak można wysyłać SMS przy użyciu interfejsu HTTP REST SMS API Ozeki SMS Gateway, wykorzystując jednostkę Ozeki.Libs.Rest w Delphi. Ta jednostka jest dostarczana bezpłatnie i możesz jej używać oraz modyfikować w dowolnym ze swoich projektów.

SendSms.delphi
program SendSms;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Ozeki.Libs.Rest in '../Ozeki.Libs.Rest/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!';

    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.
	

Jak używać przykładu SMS w Delphi:

Ten przykład SMS w Delphi może być używany w dowolnej aplikacji Delphi. Aby go użyć, musisz dodać jednostkę Ozeki.Libs.Rest.pas do swojego projektu. Po dodaniu jednostki, musisz umieścić dyrektywę uses Ozeki.Libs.Rest in '../Ozeki.Libs.Rest/Ozeki.Libs.Rest.pas'; w sekcji nagłówkowej swojego kodu źródłowego Delphi. To pozwoli Ci na korzystanie z klas dostarczonych przez jednostkę Ozeki.Libs.Rest. Możesz użyć klasy Message do tworzenia SMS. Możesz użyć klasy MessageApi, aby wysłać SMS do bramki SMS. Bramka SMS przekaże Twoją wiadomość do sieci komórkowej poprzez połączenie bezprzewodowe lub przez Internet.

Pobierz SendSMS.delphi

Kod źródłowy omówiony w tym artykule można pobrać, używać i modyfikować bezpłatnie.
Pobierz: SendSms.delphi.zip (11.8Kb)

Co znajduje się w pliku SendSms.delphi.zip?

Plik SendSms.delphi.zip zawiera jednostkę Ozeki.Libs.Rest, która dostarcza wszystkich narzędzi niezbędnych do wysyłania i odbierania wiadomości SMS. Znajdziesz tam również projekt SendSms, który zawiera przykładowy kod pokazujący, jak wysłać SMS. Ten przykładowy kod jest wymieniony poniżej.

katalog wysyłania sms z delphi
Rysunek 2 - Co znajduje się w SendSms.delphi.zip

Jak wysłać SMS z Delphi (Proste wskazówki)

Aby wysłać SMS z Delphi:

  1. Zainstaluj użytkownika HTTP API
  2. Włącz Logowanie zdarzeń komunikacyjnych na karcie Zaawansowane
  3. Skonfiguruj Embarcadero Delphi Studio
  4. Pobierz, a następnie rozpakuj plik SendSms.delphi.zip
  5. Otwórz plik SendSms.dproj w Delphi Studio, klikając na niego dwukrotnie
  6. Uruchom aplikację Ozeki SMS Gateway
  7. Uruchom kod Delphi SendSms.dpr w Delphi Studio
  8. Sprawdź logi, aby zobaczyć, czy SMS został wysłany

Zainstaluj Ozeki SMS Gateway i utwórz użytkownika HTTP API

Aby móc wysyłać SMS z Delphi, najpierw musisz zainstalować Ozeki SMS Gateway. Bramka SMS może być zainstalowana na tym samym komputerze, na którym tworzysz swój kod Delphi w Visual Studio. Po instalacji kolejnym krokiem jest podłączenie Ozeki SMS Gateway do sieci komórkowej. Możesz wysłać testowego SMS z interfejsu Ozeki, aby sprawdzić, czy Twoje połączenie z siecią komórkową działa. Ostatnim krokiem przygotowania środowiska jest utworzenie użytkownika HTTP SMS API. Utwórz użytkownika z nazwą "http_user" i hasłem "qwe123", aby przykład działał bez modyfikacji.

Po skonfigurowaniu środowiska możesz uruchomić swój kod Delphi.

URL API HTTP do wysyłania SMS z Delphi

Aby wysłać SMS z Delphi, Twoje Delphi będzie musiało wysłać żądanie HTTP do bramki SMS. URL API jest pokazany poniżej. Pamiętaj, że adres IP (127.0.0.1) powinien zostać zastąpiony adresem IP Twojej bramki SMS. Jeśli Ozeki SMS Gateway jest zainstalowany na tym samym komputerze, na którym działa aplikacja SMS Delphi, może to być 127.0.0.1. Jeśli jest zainstalowany na innym komputerze, powinien to być adres IP tego komputera.

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

Uwierzytelnianie HTTP do wysyłania SMS z Delphi

Aby uwierzytelnić klienta SMS w Delphi, należy wysłać nazwę użytkownika i hasło w postaci zakodowanej w base64 do serwera w żądaniu HTTP. Używany format to: base64(nazwa_użytkownika+":"+hasło). W Delphi można użyć następującego kodu do wykonania tego kodowania:

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

Na przykład, jeśli zakodujesz nazwę użytkownika 'http_user' i hasło 'qwe123', otrzymasz następujący zakodowany ciąg base64: aHR0cF91c2VyOnF3ZTEyMw==. Aby wysłać

Nagłówek żądania HTTP do wysyłania SMS z Delphi

Aby wysłać wiadomości SMS, należy dołączyć następujące linie jako nagłówki w żądaniu HTTP. Należy zauważyć, że zawieramy typ zawartości i nagłówek autoryzacji.

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

Żądanie HTTP do wysyłania SMS z Delphi

Aby przesłać SMS, Twoja aplikacja Delphi wyśle żądanie HTTP podobne do poniższego. Należy zauważyć, że to żądanie zawiera część nagłówka HTTP i część ciała HTTP. Ciało HTTP to ciąg danych zakodowany w JSON. Zawiera numer odbiorcy i tekst wiadomości.

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": "ae0d1fe5-7e93-4241-b31c-5b3ebf867c5b",
			"from_connection": "",
			"from_address": "",
			"from_station": "",
			"to_connection": "",
			"to_address": "+36201111111",
			"to_station": "",
			"text": "Hello world!",
			"create_date": "2021-07-27T14:22:12",
			"valid_until": "2021-08-03T14:22:12",
			"time_to_send": "2021-07-27T14:22:12",
			"submit_report_requested": true,
			"delivery_report_requested": true,
			"view_report_requested": true
		}
	]
}
	

Odpowiedź HTTP otrzymana przez przykład SMS w Delphi

Po otrzymaniu tego żądania brama SMS wygeneruje odpowiedź HTTP. Odpowiedź HTTP będzie zawierać kod statusu, aby wskazać, czy żądanie wysłania SMS zakończyło się sukcesem, czy nie. Zwróci również strukturę zakodowaną w JSON, aby dostarczyć przydatne informacje o przesłaniu wiadomości.

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf8
Last-Modified: Tue, 27 Jul 2021 06:58:42 GMT
Server: 10/10.3.123 Microsoft-HTTPAPI/2.0
User-Agent: OZEKI 10.3.123 (myozeki.com)
Date: Tue, 27 Jul 2021 12:22:12 GMT
Connection: close

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "response_msg": "Messages queued for delivery.",
  "data": {
    "total_count": 1,
    "success_count": 1,
    "failed_count": 0,
    "messages": [
      {
        "message_id": "ae0d1fe5-7e93-4241-b31c-5b3ebf867c5b",
        "from_station": "%",
        "to_address": "+36201111111",
        "to_station": "%",
        "text": "Hello world!",
        "create_date": "2021-07-27 14:22:12",
        "valid_until": "2021-08-03 14:22:12",
        "time_to_send": "2021-07-27 14:22:12",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      }
    ]
  }
}

Podłącz swoją bramkę SMS do sieci komórkowej i utwórz konto użytkownika HTTP API

Zakładamy, że masz już zainstalowaną bramkę SMS Ozeki i podłączoną do sieci komórkowej. Aby móc wysyłać SMS na telefon komórkowy z Delphi, musisz skonfigurować konto użytkownika HTTP API w bramce SMS Ozeki.

Wideo 1 - Jak skonfigurować konto użytkownika HTTP API (Samouczek wideo)

Jak wysłać SMS z Delphi za pomocą API SMS Delphi (Samouczek wideo)

To wideo pokazuje, jak pobrać plik SendSms.delphi.zip z tej strony i jak pobrać jego zawartość w Delphi studio. Jeśli obejrzysz wideo, zauważysz, że zawartość pliku SendSms.delphi.zip jest umieszczana na pulpicie Windows. Zobaczysz również, że klikamy dwukrotnie plik projektu SendSms.dproj, aby otworzyć projekt.

Przykład SMS w Delphi: SendSms.dproj

W tym rozwiązaniu jest tylko jeden projekt: SendSms.dproj i dwa pliki: SendSms.dpr oraz Ozeki.Libs.Rest.pas.

Rysunek 3 - SendSms.dproj

Jak sprawdzić, czy SMS został zaakceptowany przez użytkownika HTTP

Po przesłaniu SMS warto sprawdzić w bramce SMS, co zostało odebrane. Możesz sprawdzić log, otwierając szczegóły użytkownika HTTP w konsoli zarządzania bramką SMS Ozeki. Poniższe wideo pokazuje, na co zwrócić uwagę.

Wideo 3 - Wysyłanie SMS za pomocą powyższego kodu Delphi (Samouczek wideo)

Jak sprawdzić, czy SMS został wysłany do sieci komórkowej

Ostatnim krokiem weryfikacji procedury jest sprawdzenie logów połączenia z siecią komórkową. Może być konieczne włączenie logowania w konfiguracji połączenia przed wysłaniem wiadomości, aby zobaczyć logi. Jeśli logowanie jest włączone, zobaczysz numer telefonu i treść wysłanej wiadomości.

Wideo 4 - Jak sprawdzić, czy żądanie zostało zaakceptowane przez klienta SMPP (Samouczek wideo)

Jak wygląda odbieranie wiadomości SMS na Androidzie (Samouczek wideo)

W tym filmie pokażemy, jak wygląda odbieranie wiadomości SMS na Androidzie. Film trwa tylko 18 sekund, ale można na nim zobaczyć cały proces. Zacznie się od zwykłej strony głównej Androida. Zobaczysz powiadomienie o SMS-ie oraz otwartą aplikację Wiadomości z widoczną wiadomością.

Wideo 5 - Wiadomość SMS odebrana na telefonie komórkowym (Samouczek wideo)

Podsumowanie

W tym artykule pokazano najprostszy sposób wysyłania SMS-ów z Delphi. Jeśli przeczytałeś ten samouczek, wiesz, jak utworzyć użytkownika HTTP SMS API w Ozeki SMS Gateway, aby móc wysyłać SMS-y z Delphi. Jedną z wielu zalet tego rozwiązania jest to, że podany przykład SMS w Delphi może być przez Ciebie wykorzystany i zmodyfikowany w dowolnym projekcie.

Możesz znaleźć więcej dokumentów oferujących inne kody programów w Delphi, wykorzystaj każdą okazję i przestudiuj je. Jeśli chcesz używać tej usługi Ozeki SMS Gateway w szerszym zakresie, zajrzyj do artykułu Jak pobrać najnowszą jednostkę API SMS Delphi z Github i dowiedz się więcej.

Pobierz Ozeki SMS Gateway już teraz i skonfiguruj system!

More information