Cum să trimiți SMS din Delphi

Cea mai simplă metodă de a trimite SMS din Delphi este utilizarea API-ului HTTP/REST SMS încorporat al Ozeki SMS Gateway. Când folosești acest API, vei trimite mesaje SMS prin efectuarea unei cereri HTTP Post către gateway-ul SMS. Cererea HTTP Post va conține un mesaj formatat în format json. Gateway-ul SMS va trimite acest SMS către telefonul destinatar și va returna un răspuns HTTP 200 OK la cererea ta.

cum să trimiți sms din delphi
Figura 1 - Cum să trimiți SMS din Delphi

Cod Delphi pentru trimiterea SMS către mobil

Exemplul de cod SMS Delphi de mai jos demonstrează cum poți trimite SMS folosind API-ul HTTP REST SMS al Ozeki SMS Gateway cu ajutorul unității Delphi Ozeki.Libs.Rest. Această unitate este oferită gratuit și poți să o folosești și să o modifici în oricare dintre proiectele tale.

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 := 'Salut lume!';

    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.
	

Cum să folosești exemplul de SMS Delphi:

Acest exemplu de SMS Delphi poate fi folosit în orice aplicație Delphi. Pentru a-l utiliza, trebuie să adaugi unitatea Ozeki.Libs.Rest.pas în proiectul tău. După ce unitatea este adăugată, trebuie să introduci directiva uses Ozeki.Libs.Rest in '../Ozeki.Libs.Rest/Ozeki.Libs.Rest.pas'; în secțiunea de antet a codului sursă Delphi. Acest lucru îți va permite să folosești clasele furnizate de unitatea Ozeki.Libs.Rest. Poți folosi clasa Message pentru a crea SMS-ul. Poți folosi clasa MessageApi pentru a trimite SMS-ul către gateway-ul SMS. Gateway-ul SMS va transmite mesajul tău către rețeaua mobilă fie printr-o conexiune fără fir, fie prin Internet.

Descarcă SendSMS.delphi

Codul sursă explicat în acest articol poate fi descărcat, folosit și modificat gratuit.
Descarcă: SendSms.delphi.zip (11.8Kb)

Ce conține fișierul SendSms.delphi.zip?

Fișierul SendSms.delphi.zip conține unitatea Ozeki.Libs.Rest, care îți oferă toate instrumentele necesare pentru a trimite și primi mesaje SMS. De asemenea, vei găsi proiectul SendSms în arhivă, care conține codul exemplu pentru a-ți arăta cum să trimiți un SMS. Acest cod exemplu este listat mai jos.

director send sms delphi
Figura 2 - Ce conține SendSms.delphi.zip

Cum să trimiți SMS din Delphi (Ghid simplu)

Pentru a trimite SMS din Delphi:

  1. Instalează un utilizator HTTP API
  2. Activează Log communication events în fila Advanced
  3. Configurează Embarcadero Delphi Studio
  4. Descarcă apoi extrage fișierul SendSms.delphi.zip
  5. Deschide fișierul SendSms.dproj în Delphi Studio făcând dublu clic pe el
  6. Lansează aplicația Ozeki SMS Gateway
  7. Rulează codul Delphi SendSms.dpr în Delphi Studio
  8. Verifică jurnalele pentru a vedea dacă SMS-ul a fost trimis
Instalează Ozeki SMS Gateway și creează un utilizator HTTP API

Pentru a putea trimite SMS din Delphi, mai întâi trebuie să instalezi Ozeki SMS Gateway. Gateway-ul SMS poate fi instalat pe același computer pe care dezvolți codul Delphi în Visual Studio. După instalare, următorul pas este să conectezi Ozeki SMS Gateway la rețeaua mobilă. Poți trimite un SMS test din interfața grafică Ozeki pentru a verifica dacă conexiunea ta la rețeaua mobilă funcționează. Ultimul pas pentru a-ți pregăti mediul este să creezi un utilizator HTTP SMS API. Creează un utilizator cu numele de utilizator "http_user" și parola "qwe123" pentru a face exemplul să funcționeze fără modificări.

După ce mediul este configurat, poți rula codul tău Delphi.

URL API HTTP pentru a trimite SMS din Delphi

Pentru a trimite SMS din Delphi, Delphi-ul tău va trebui să efectueze o cerere HTTP către gateway-ul SMS. URL-ul API este afișat mai jos. Reține că adresa IP (127.0.0.1) ar trebui să fie înlocuită cu adresa IP a gateway-ului tău SMS. Dacă Ozeki SMS Gateway este instalat pe același computer pe care rulează aplicația Delphi SMS, aceasta poate fi 127.0.0.1. Dacă este instalat pe un computer diferit, ar trebui să fie adresa IP a acelui computer.

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

Autentificare HTTP pentru a trimite SMS din Delphi

Pentru a autentifica clientul SMS Delphi, trebuie să trimiteți numele de utilizator și parola într-un șir codat base64 către server într-o cerere HTTP. Formatul utilizat este: base64(nume de utilizator+":"+parolă). În Delphi puteți utiliza următorul cod pentru a face această codare:

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

De exemplu, dacă codificați numele de utilizator 'http_user' și parola 'qwe123', veți obține următorul șir codat base64: aHR0cF91c2VyOnF3ZTEyMw==. Pentru a trimite

Antetul cererii HTTP pentru a trimite SMS din Delphi

Pentru a trimite mesajele SMS, trebuie să includeți următoarele linii ca anteturi în cererea HTTP. Rețineți că includem un tip de conținut și un antet de autorizare.

Content-Type: application/json
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	
Cererea HTTP pentru a trimite SMS din Delphi

Pentru a trimite SMS-ul, aplicația dvs. Delphi va trimite o cerere HTTP similară cu cea de mai jos. Rețineți că această cerere conține o parte de antet HTTP și o parte de corp HTTP. Corpul HTTP este un șir de date codat JSON. Acesta conține numărul destinatarului și textul mesajului.

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
		}
	]
}
	
Răspunsul HTTP primit de exemplul de SMS Delphi

Odată ce gateway-ul SMS primește această cerere, va genera un răspuns HTTP. Răspunsul HTTP va conține un cod de stare, pentru a indica dacă cererea de trimitere a SMS-ului a fost reușită sau nu. De asemenea, va returna o structură codată JSON pentru a vă oferi detalii utile despre trimiterea mesajului.

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"
      }
    ]
  }
}
Conectați-vă gateway-ul SMS la rețeaua mobilă și creați un cont de utilizator HTTP API

Presupunem că ați instalat deja Ozeki SMS Gateway și l-ați conectat la rețeaua mobilă. Pentru a putea trimite SMS către un telefon mobil din Delphi, trebuie să configurați un cont de utilizator HTTP API în Ozeki SMS Gateway.

Video 1 - Cum să configurați un cont de utilizator HTTP API (Tutorial video)

Cum să trimiteți SMS din Delphi folosind API-ul SMS Delphi (Tutorial video)

Acest videoclip vă arată cum să descărcați fișierul SendSms.delphi.zip de pe această pagină și cum să descărcați conținutul acestuia în Delphi studio. Dacă urmăriți videoclipul, veți observa că conținutul arhivei SendSms.delphi este plasat pe desktopul Windows. De asemenea, veți vedea că dăm dublu clic pe fișierul de proiect SendSms.dproj pentru a deschide proiectul.

Exemplu de SMS Delphi: SendSms.dproj

În această soluție există un singur proiect: SendSms.dproj și două fișiere: SendSms.dpr și Ozeki.Libs.Rest.pas.

Figura 3 - SendSms.dproj

Cum să verificați dacă SMS-ul a fost acceptat de utilizatorul HTTP

După ce SMS-ul a fost trimis, este o idee bună să verificați gateway-ul dvs. SMS pentru a vedea ce a primit. Puteți verifica jurnalul deschizând detaliile utilizatorului HTTP din consola de management Ozeki SMS Gateway. Următorul videoclip vă arată ce să căutați.

Video 3 - Trimiterea SMS cu codul Delphi de mai sus (Tutorial video)

Cum să verifici dacă SMS-ul a fost trimis către rețeaua mobilă

Pasul final în verificarea procedurii este să analizezi jurnalele conexiunii la rețeaua mobilă. Poate fi necesar să activezi înregistrarea în configurația conexiunii înainte de a trimite mesajul pentru a vedea jurnalele. Dacă înregistrarea este activată, vei vedea numărul de telefon și textul mesajului pe care l-ai trimis.

Video 4 - Cum să testezi dacă cererea a fost acceptată de clientul SMPP (Tutorial video)

Cum arată primirea unui mesaj SMS pe Android (Tutorial video)

În acest videoclip, îți vom arăta cum arată primirea unui mesaj SMS pe Android. Videoclipul durează doar 18 secunde, dar poți vedea întregul proces în el. Acesta va începe cu o pagină obișnuită de start Android. Vei vedea notificarea pentru SMS și aplicația Mesaje deschisă cu mesajul vizibil.

Video 5 - Mesaj SMS primit pe telefonul mobil (Tutorial video)

Rezumat

Acest articol ți-a arătat cea mai simplă metodă de a trimite SMS din Delphi. Dacă ai citit acest tutorial, știi cum să creezi un utilizator API SMS HTTP în Ozeki SMS Gateway pentru a putea trimite SMS din Delphi. Unul dintre numeroasele avantaje ale acestei soluții este că exemplul de SMS în Delphi poate fi folosit și modificat de tine în oricare dintre proiectele tale.

Poți găsi mai multe documente care oferă alte coduri de program Delphi, profită de fiecare oportunitate și studiază-le. Dacă dorești să folosești acest serviciu Ozeki SMS Gateway într-un cerc mai larg, consultă articolul Cum să descarci cea mai recentă unitate API SMS pentru Delphi de pe Github și află mai multe.

Descarcă acum Ozeki SMS Gateway și configurează sistemul!

More information