Jak odbierać SMS w Delphi

Najprostszym sposobem na odbieranie SMS z Delphi jest użycie wbudowanego interfejsu HTTP/Rest SMS API Ozeki SMS Gateway. Kiedy używasz 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ść sformatowaną w formacie json. Bramka SMS wyśle tę wiadomość SMS do odbiorcy i zwróci odpowiedź HTTP 200 OK na twoje żądanie.

jak odbierać sms w delphi
Rysunek 1 - Jak odbierać SMS w Delphi

Kod Delphi do odbierania SMS

Poniższy przykładowy kod SMS w Delphi demonstruje, jak możesz 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 z twoich projektów.

ReceiveSms.delphi
program ReceiveSms;

{$APPTYPE CONSOLE}

{$R *.res}

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

var configuration : Ozeki.Libs.Rest.Configuration;
var api : Ozeki.Libs.Rest.MessageApi;
var result : MessageReceiveResult;
var message : Ozeki.Libs.Rest.Message;
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';

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

    result := api.DownloadIncoming;

    Writeln(result.ToString);

    for message in result.Messages do
    begin
      Writeln(message.ToString);
    end;

    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.pas'; w sekcji nagłówkowej twojego 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 do wysłania SMS do bramki SMS. Bramka SMS przekaże twoją wiadomość do sieci komórkowej albo przez połączenie bezprzewodowe, albo przez Internet.

Pobierz ReceiveSms.delphi

Kod źródłowy omówiony w tym artykule może być pobrany, używany i modyfikowany bezpłatnie.
Pobierz: ReceiveSms.delphi.zip (11.9Kb)

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

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

katalog odbierania sms w delphi
Rysunek 2 - Co znajduje się w ReceiveSms.delphi.zip

Jak wysył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 ReceiveSms.delphi.zip
  5. Otwórz plik ReceiveSms.dproj w Delphi Studio, klikając na niego dwukrotnie
  6. Uruchom aplikację Ozeki SMS Gateway
  7. Uruchom kod Delphi ReceiveSms.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ć testową wiadomość SMS z interfejsu Ozeki GUI, 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 wysyłać SMS z Delphi, twoje Delphi będzie musiało wysłać żądanie HTTP do bramki SMS. URL API jest pokazany poniżej. Zauważ, ż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 zakodowanym ciągu base64 do serwera w żądaniu HTTP. Używany format to: base64(nazwa_użytkownika+":"+hasło). W Delphi możesz 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 uwzględnić następujące linie jako nagłówki w żądaniu HTTP. Zauważ, że zawieramy typ zawartości i nagłówek Authorization.

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. Zauważ, że to żądanie zawiera tylko część nagłówka HTTP, która przechowuje wszystkie informacje potrzebne do pobrania każdej pojedynczej wiadomości z określonego folderu.

GET /api?action=receivemsg&folder=inbox HTTP/1.1
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509
Accept: application/json
User-Agent: Mozilla/3.0 (compatible; Indy Library)
	

Odpowiedź HTTP otrzymana przez przykład SMS w Delphi

Gdy brama SMS otrzyma to żądanie, 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
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf8
Last-Modified: Tue, 27 Jul 2021 15:49:18 GMT
Server: 10/10.3.123 Microsoft-HTTPAPI/2.0
User-Agent: OZEKI 10.3.123 (myozeki.com)
Date: Tue, 27 Jul 2021 14:10:33 GMT

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "response_msg": "",
  "data": {
    "folder": "inbox",
    "limit": "1000",
    "data": [
      {
        "message_id": "be5e98cf-2bcb-d8dc-94ae-aa909504afe7",
        "from_connection": "http_user@localhost",
        "from_address": "+36201111111",
        "from_station": "%",
        "to_connection": "http_user@localhost",
        "to_address": "http_user",
        "to_station": "%",
        "text": "Hello world 1",
        "create_date": "2021-07-27 16:06:02",
        "valid_until": "2021-08-03 16:06:02",
        "time_to_send": "2021-07-27 16:06:02",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": true,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ]
      },
      {
        "message_id": "466d737f-68d5-f64d-84d8-ac0a3f950543",
        "from_connection": "http_user@localhost",
        "from_address": "+36202222222",
        "from_station": "%",
        "to_connection": "http_user@localhost",
        "to_address": "http_user",
        "to_station": "%",
        "text": "Hello world 2",
        "create_date": "2021-07-27 16:06:02",
        "valid_until": "2021-08-03 16:06:02",
        "time_to_send": "2021-07-27 16:06:02",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": true,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ]
      },
      {
        "message_id": "36069eca-95c1-bced-8876-ece0dcd74acd",
        "from_connection": "http_user@localhost",
        "from_address": "+36203333333",
        "from_station": "%",
        "to_connection": "http_user@localhost",
        "to_address": "http_user",
        "to_station": "%",
        "text": "Hello world 3",
        "create_date": "2021-07-27 16:06:02",
        "valid_until": "2021-08-03 16:06:02",
        "time_to_send": "2021-07-27 16:06:02",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": true,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ]
      }
    ]
  }
}	
	

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

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

Przykład SMS w Delphi: ReceiveSms.dproj

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

Rysunek 2 - ReceiveSms.dproj

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

Po wysłaniu SMS-a warto sprawdzić bramkę SMS, aby zobaczyć, co otrzymała. Możesz sprawdzić log, otwierając szczegóły użytkownika HTTP z konsoli zarządzania Ozeki SMS Gateway. Poniższy film pokazuje, na co zwrócić uwagę.

Wideo 2 - Wysyłanie SMS-a za pomocą powyższego kodu Delphi (samouczek wideo)

Podsumowanie

Postępując zgodnie z tym samouczkiem, nauczyłeś się, jak używać użytkownika HTTP SMS API w Ozeki SMS Gateway do odbierania SMS-ów z Delphi. Ten przykład SMS w Delphi jest prosty i łatwy do skonfigurowania, będzie kompatybilny z każdym rodzajem aplikacji Delphi, którą posiadasz. Ta usługa może zwiększyć efektywność Twojej organizacji, ponieważ pozwala na szybkie i płynne dostarczanie cennych informacji.

Możesz potrzebować Delphi SMS API z innymi funkcjonalnościami, więc nie przestawaj czytać tutaj. Więcej możliwości znajdziesz w artykule Jak pobrać najnowszą jednostkę Delphi SMS API z GitHub.

Pobierz Ozeki SMS Gateway i rozwijaj swoją firmę już teraz!

More information