Ako poslať viacero SMS z Delphi

Najjednoduchší spôsob, ako poslať SMS z Delphi, je použiť vstavané HTTP/Rest SMS API Ozeki SMS Gateway. Keď použijete toto API, budete posielať SMS správy vydaním HTTP POST požiadavky na SMS bránu. HTTP POST požiadavka bude obsahovať správu formátovanú v json formáte. SMS brána pošle túto SMS príjemcovi a vráti HTTP 200 OK odpoveď na vašu požiadavku.

ako poslať viacero sms z delphi
Obrázok 1 - Ako poslať viacero SMS z Delphi

Delphi kód na odoslanie SMS na mobil

Ukážka kódu Delphi pre SMS nižšie demonštruje, ako môžete posielať SMS pomocou HTTP REST SMS API Ozeki SMS Gateway pomocou jednotky Ozeki.Libs.Rest v Delphi. Táto jednotka je vám poskytovaná bezplatne a môžete ju používať a upravovať v akomkoľvek z vašich projektov.

SendMultipleSms.delphi
program SendMultipleSms;

{$APPTYPE CONSOLE}

{$R *.res}

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

var configuration : Ozeki.Libs.Rest.Configuration;
var msg1, msg2, msg3 : Ozeki.Libs.Rest.Message;
var api : Ozeki.Libs.Rest.MessageApi;
var result : MessageSendResults;
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';

    msg1 := Ozeki.Libs.Rest.Message.Create;
    msg1.ToAddress := '+36201111111';
    msg1.Text := 'Hello world 1';

    msg2 := Ozeki.Libs.Rest.Message.Create;
    msg2.ToAddress := '+36202222222';
    msg2.Text := 'Hello world 2';

    msg3 := Ozeki.Libs.Rest.Message.Create;
    msg3.ToAddress := '+36203333333';
    msg3.Text := 'Hello world 3';

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

    result := api.SendMessages([ msg1, msg2, msg3 ]);

    Writeln(result.ToString());

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

Ako použiť ukážku kódu Delphi pre SMS:

Táto ukážka kódu Delphi pre SMS môže byť použitá v akejkoľvek aplikácii Delphi. Na použitie je potrebné pridať jednotku Ozeki.Libs.Rest.pas do vášho projektu. Po pridaní jednotky musíte vložiť direktívu uses Ozeki.Libs.Rest in 'Ozeki.Libs.Rest.pas'; do hlavičkovej časti vášho zdrojového kódu Delphi. To vám umožní používať triedy poskytované jednotkou Ozeki.Libs.Rest. Môžete použiť triedu Message na vytvorenie SMS. Môžete použiť triedu MessageApi na odoslanie SMS na SMS bránu. SMS brána prepošle vašu správu do mobilnej siete buď prostredníctvom bezdrôtového pripojenia alebo cez internet.

Stiahnuť SendMultipleSms.delphi

Zdrojový kód vysvetlený v tomto článku môže byť stiahnutý, použitý a upravený bezplatne.
Stiahnuť: SendMultipleSms.delphi.zip (11.8Kb)

Čo obsahuje súbor SendMultipleSms.delphi.zip?

Súbor SendMultipleSms.delphi.zip obsahuje jednotku Ozeki.Libs.Rest, ktorá vám poskytuje všetky potrebné nástroje na odosielanie a prijímanie SMS správ. Nájdete tu aj projekt SendMultipleSms, ktorý obsahuje ukážkový kód, ktorý vám ukáže, ako odoslať SMS. Tento ukážkový kód je uvedený nižšie.

adresár pre odosielanie viacerých sms z delphi
Obrázok 2 - Čo je vo vnútri SendMultipleSms.delphi.zip

Ako poslať SMS z Delphi (Jednoduché pokyny)

Na odoslanie SMS z Delphi:

  1. Nainštalujte používateľa HTTP API
  2. Povoľte Logovanie komunikačných udalostí na karte Pokročilé
  3. Nastavte Embarcadero Delphi Studio
  4. Stiahnite a rozbaľte súbor SendMultipleSms.delphi.zip
  5. Otvorte súbor SendMultipleSms.dproj v Delphi Studio dvojklikom naň
  6. Spustite aplikáciu Ozeki SMS Gateway
  7. Spustite kód Delphi SendMultipleSms.dpr v Delphi Studio
  8. Skontrolujte logy, či bola SMS odoslaná
Nainštalujte Ozeki SMS Gateway a vytvorte používateľa HTTP API

Na odosielanie SMS z Delphi je potrebné najprv nainštalovať Ozeki SMS Gateway. SMS bránu je možné nainštalovať na rovnakom počítači, kde vyvíjate svoj kód Delphi v Visual Studio. Po inštalácii je ďalším krokom pripojenie Ozeki SMS Gateway k mobilnej sieti. Môžete odoslať testovaciu SMS z grafického rozhrania Ozeki na overenie, či vaše pripojenie k mobilnej sieti funguje. Posledným krokom pri príprave vášho prostredia je vytvorenie používateľa HTTP SMS API. Vytvorte používateľa s menom "http_user" a heslom "qwe123", aby ukážka fungovala bez úprav.

Po nastavení prostredia môžete spustiť svoj kód Delphi.

URL HTTP API na odosielanie SMS z Delphi

Na odosielanie SMS z Delphi bude vaše Delphi musieť vydať HTTP požiadavku na SMS bránu. API URL je uvedené nižšie. Upozorňujeme, že IP adresa (127.0.0.1) by mala byť nahradená IP adresou vašej SMS brány. Ak je Ozeki SMS Gateway nainštalovaný na rovnakom počítači, kde beží vaša aplikácia Delphi pre SMS, môže to byť 127.0.0.1. Ak je nainštalovaný na inom počítači, mala by to byť IP adresa toho počítača.

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

HTTP autentifikácia na odosielanie SMS z Delphi

Na autentifikáciu SMS klienta v Delphi je potrebné odoslať používateľské meno a heslo v reťazci zakódovanom do base64 na server v HTTP požiadavke. Používa sa formát: base64(používateľské meno+":"+heslo). V Delphi môžete na toto kódovanie použiť nasledujúci kód:

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

Napríklad, ak zakódujete používateľské meno 'http_user' a heslo 'qwe123', dostanete nasledujúci reťazec zakódovaný do base64: aHR0cF91c2VyOnF3ZTEyMw==. Na odoslanie

HTTP hlavička požiadavky na odoslanie SMS z Delphi

Na odoslanie SMS správ je potrebné zahrnúť nasledujúce riadky ako hlavičky do HTTP požiadavky. Upozorňujeme, že obsahuje hlavičku typu obsahu a autorizačnú hlavičku.

Content-Type: application/json
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	
HTTP požiadavka na odoslanie SMS z Delphi

Na odoslanie SMS vaša aplikácia v Delphi odošle HTTP požiadavku podobnú nižšie uvedenej. Upozorňujeme, že táto požiadavka obsahuje časť HTTP hlavičky a časť HTTP tela. Telo HTTP je reťazec dát zakódovaný do JSON. Obsahuje čísla príjemcov a texty správ, ktoré chceme odoslať.

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

{
	"messages": [
		{
			"message_id": "b984812c-6af0-47ac-83e6-c162b1743272",
			"from_connection": "",
			"from_address": "",
			"from_station": "",
			"to_connection": "",
			"to_address": "+36201111111",
			"to_station":"",
			"text":" Hello world 1",
			"create_date": "2021-07-27T14:59:43",
			"valid_until": "2021-08-03T14:59:43",
			"time_to_send": "2021-07-27T14:59:43",
			"submit_report_requested": true,
			"delivery_report_requested": true,
			"view_report_requested": true
		},
		{
			"message_id":"cccb9fc0-820c-47e0-9f8d-8a29f2f8dce8",
			"from_connection": "",
			"from_address": "",
			"from_station": "",
			"to_connection": "",
			"to_address": "+36202222222",
			"to_station": "",
			"text": "Hello world 2",
			"create_date": "2021-07-27T14:59:43",
			"valid_until": "2021-08-03T14:59:43",
			"time_to_send": "2021-07-27T14:59:43",
			"submit_report_requested": true,
			"delivery_report_requested": true,
			"view_report_requested": true
		},
		{
			"message_id": "395197a7-14bf-484b-97bc-ef25056b1669",
			"from_connection": "",
			"from_address": "",
			"from_station": "",
			"to_connection": "",
			"to_address": "+36203333333",
			"to_station": "",
			"text": "Hello world 3",
			"create_date": "2021-07-27T14:59:43",
			"valid_until": "2021-08-03T14:59:43",
			"time_to_send": "2021-07-27T14:59:43",
			"submit_report_requested": true,
			"delivery_report_requested": true,
			"view_report_requested": true
		}
	]
}
	
HTTP odpoveď prijatá príkladom SMS v Delphi

Keď SMS brána prijme túto požiadavku, vygeneruje HTTP odpoveď. HTTP odpoveď bude obsahovať stavový kód, ktorý indikuje, či bola požiadavka na odoslanie SMS úspešná alebo nie. Taktiež vráti štruktúru zakódovanú do JSON, ktorá poskytne užitočné informácie o odoslaných správach.

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

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "response_msg": "Správy zaradené do fronty na odoslanie.",
  "data": {
    "total_count": 3,
    "success_count": 3,
    "failed_count": 0,
    "messages": [
      {
        "message_id": "b984812c-6af0-47ac-83e6-c162b1743272",
        "from_station": "%",
        "to_address": "+36201111111",
        "to_station": "%",
        "text": "Hello world 1",
        "create_date": "2021-07-27 14:59:43",
        "valid_until": "2021-08-03 14:59:43",
        "time_to_send": "2021-07-27 14:59:43",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      },
      {
        "message_id": "cccb9fc0-820c-47e0-9f8d-8a29f2f8dce8",
        "from_station": "%",
        "to_address": "+36202222222",
        "to_station": "%",
        "text": "Hello world 2",
        "create_date": "2021-07-27 14:59:43",
        "valid_until": "2021-08-03 14:59:43",
        "time_to_send": "2021-07-27 14:59:43",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      },
      {
        "message_id": "395197a7-14bf-484b-97bc-ef25056b1669",
        "from_station": "%",
        "to_address": "+36203333333",
        "to_station": "%",
        "text": "Hello world 3",
        "create_date": "2021-07-27 14:59:43",
        "valid_until": "2021-08-03 14:59:43",
        "time_to_send": "2021-07-27 14:59:43",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      }
    ]
  }
}

Ako poslať SMS z Delphi pomocou Delphi SMS API (Video návod)

Toto video vám ukáže, ako stiahnuť súbor SendMultipleSms.delphi.zip z tejto stránky a ako stiahnuť jeho obsah v Delphi štúdiu. Ak sledujete video, všimnete si, že obsah SendMultipleSms.delphi zip je umiestnený na pracovnej ploche Windows. Uvidíte tiež, že dvakrát klikneme na súbor projektu SendMultipleSms.dproj, aby sme otvorili projekt.

Video 1 - Ako stiahnuť a spustiť ukážkový projekt (Video návod)

Príklad SMS v Delphi: SendMultipleSms.dproj

V tomto riešení je len jeden projekt: SendMultipleSms.dproj a dva súbory: SendMultipleSms.dpr a Ozeki.Libs.Rest.pas.

Obrázok 3 - SendMultipleSms.dproj

Ako skontrolovať, že SMS bola prijatá HTTP používateľom

Po odoslaní SMS je dobré skontrolovať svoju SMS bránu, aby ste videli, čo prijala. Protokol môžete skontrolovať otvorením detailov HTTP používateľa v konzole na správu Ozeki SMS Gateway. Nasledujúce video vám ukáže, čo hľadať.

Video 2 - Odosielanie SMS pomocou vyššie uvedeného kódu v Delphi (Video návod)

Zhrnutie

Po prečítaní tohto popisu o odosielaní viacerých SMS z Delphi budete vedieť, ako pripraviť HTTP API používateľa v Ozeki SMS Gateway pre toto riešenie. Použitie tohto systému vám pomáha kontrolovať náklady a sledovať správy. Prichádzajúce SMS správy a udalosti doručenia budú prezentované vo forme udalostí a chyby budú správne spracované.

V žiadnom prípade sa tu nezastavujte, na stránke Ozeki je veľa článkov, z ktorých sa môžete učiť. Prejdite na ďalší návod o Delphi Ako naplánovať SMS.

Stiahnite si Ozeki SMS Gateway hneď teraz a vyskúšajte to, čo ste sa naučili!

More information