Jak přijímat SMS ve F#

Nejjednodušší způsob, jak odesílat SMS z F#, je použít vestavěné HTTP/Rest SMS API Ozeki SMS Gateway. Při použití tohoto API budete odesílat SMS zprávy pomocí HTTP Post požadavku na SMS bránu. HTTP Post požadavek bude obsahovat zprávu ve formátu JSON. SMS brána odešle tuto SMS příjemci a vrátí HTTP 200 OK odpověď na váš požadavek.

jak přijímat sms zprávy pomocí f sharp
Obrázek 1 - Příjem SMS zpráv pomocí F#

F# kód pro příjem SMS

Ukázka kódu F# pro SMS níže ukazuje, jak můžete přijímat SMS pomocí HTTP REST SMS API Ozeki SMS Gateway s využitím knihovny Ozeki.Libs.Rest pro F#. Tato knihovna je poskytována zdarma a můžete ji používat a upravovat v jakémkoli svém projektu.

Program.fs
open Ozeki.Libs.Rest

[<EntryPoint>]
let main argv =
    let configuration = new Configuration (
        Username = "http_user",
        Password = "qwe123",
        ApiUrl = "http://127.0.0.1:9509/api")

    let api = new MessageApi(configuration)

    let result = api.DownloadIncoming();

    printfn $"V doručené poště je {result.Length} zpráv:"
    for message in result do
        printfn $"Od: {message.FromAddress} - Text: {message.Text}"
    0

Jak použít příklad F# pro SMS:

Tento příklad F# pro SMS lze použít v jakékoli aplikaci .NET nebo .NET core. Pro použití musíte přidat Ozeki.Libs.Rest DLL jako referenci do vašeho projektu. Po přidání reference do projektu musíte vložit direktivu using Ozeki.Libs.Rest; do hlavičkové části vašeho zdrojového kódu F#. To vám umožní používat třídy poskytované knihovnou Ozeki.Libs.Rest. Můžete použít třídu MessageApi k příjmu SMS z SMS brány.

Stáhnout ReceiveSms.fs

Zdrojový kód vysvětlený v tomto článku lze stáhnout, použít a upravit zdarma.
Stáhnout: ReceiveSms.fs.zip (51.2Kb)

Co obsahuje soubor ReceiveSms.fs?

Soubor ReceiveSms.fs obsahuje knihovnu Ozeki.Libs.Rest, která vám poskytuje všechny nástroje potřebné pro odesílání a příjem SMS zpráv. V zipu také najdete projekt ReceiveSms, který obsahuje ukázkový kód, který vám ukáže, jak přijímat SMS. Tento ukázkový kód je uveden níže.

co obsahuje ozeki receive sms zip
Obrázek 2 - Co je uvnitř ReceiveSms.fs.zip

Jak přijímat SMS z F# (Rychlé kroky)

Pro příjem SMS z F#:

  1. Nainstalujte Ozeki SMS Gateway
  2. Připojte Ozeki SMS Gateway k mobilní síti
  3. Odešlete testovací SMS z Ozeki GUI
  4. Vytvořte uživatele HTTP SMS API
  5. Spusťte Visual Studio
  6. Vytvořte řešení s názvem ReceiveSms.sln
  7. Přidejte F# konzolový projekt: ReceiveSms.fsproj
  8. Vložte kód do Program.fs nebo ReceiveSms.fs
  9. Vytvořte HTTP požadavek pro příjem SMS
  10. Přečtěte si HTTP odpověď
  11. Vypište odpověď na konzoli
  12. Zkontrolujte logy v SMS bráně

Instalace Ozeki SMS Gateway a vytvoření uživatele HTTP API

Pro možnost odesílání SMS z F# je nejprve potřeba nainstalovat Ozeki SMS Gateway. SMS bránu lze nainstalovat na stejný počítač, kde vyvíjíte svůj F# kód ve Visual Studiu. Po instalaci je dalším krokem připojení Ozeki SMS Gateway k mobilní síti. Můžete odeslat testovací SMS z Ozeki GUI pro ověření, že vaše připojení k mobilní síti funguje. Posledním krokem k přípravě prostředí je vytvoření uživatele HTTP SMS API. Vytvořte uživatele s uživatelským jménem "http_user" a heslem "qwe123", aby příklad fungoval bez úprav.

Po nastavení prostředí můžete spustit svůj F# kód.

URL HTTP API pro příjem SMS z F#

Pro odesílání SMS z F# bude vaše F# aplikace muset odeslat HTTP požadavek na SMS bránu. API URL je uvedeno níže. Všimněte si, že IP adresa (127.0.0.1) by měla být nahrazena IP adresou vaší SMS brány. Pokud je Ozeki SMS Gateway nainstalována na stejném počítači, kde běží F# SMS aplikace, může to být 127.0.0.1. Pokud je nainstalována na jiném počítači, měla by to být IP adresa tohoto počítače.

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

HTTP autentizace pro příjem SMS z F#

Pro autentizaci F# SMS klienta je třeba odeslat uživatelské jméno a heslo v base64 kódovaném řetězci na server v HTTP požadavku. Použitý formát je: base64(username+":"+password). V C# můžete použít následující kód pro toto kódování:

var encoding = Encoding.GetEncoding("iso-8859-1");
var usernamePassword = username + ":" + password;
var usernamePasswordEncoded = Convert.ToBase64String(encoding.GetBytes(usernamePassword));

Například, pokud zakódujete uživatelské jméno 'http_user' a heslo 'qwe123', získáte následující base64 kódovaný řetězec: aHR0cF91c2VyOnF3ZTEyMw==. Pro odeslání

Hlavička HTTP požadavku pro příjem SMS z F#

Pro odesílání SMS zpráv je třeba do hlavičky HTTP požadavku zahrnout následující řádky. Všimněte si, že zahrnujeme typ obsahu a autorizační hlavičku.

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

HTTP požadavek pro příjem SMS pomocí F#

Pro odeslání SMS bude vaše aplikace v F# odesílat HTTP požadavek podobný tomu níže. Všimněte si, že tento požadavek obsahuje část HTTP hlavičky a část HTTP těla. HTTP tělo je řetězec dat zakódovaný v JSON. Obsahuje číslo příjemce a text zprávy.

GET /api?action=receivemsg&folder=inbox HTTP/1.1
Connection: Keep-Alive
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509
	

HTTP odpověď přijatá příkladem SMS v F#

Jakmile SMS brána obdrží tento požadavek, vygeneruje HTTP odpověď. HTTP odpověď bude obsahovat stavový kód, který indikuje, zda byl požadavek na odeslání SMS úspěšný nebo ne. Vrátí také strukturu zakódovanou v JSON, která vám poskytne užitečné detaily o odeslání zprávy.

HTTP/1.1 200 OK
User-Agent: OZEKI 10.3.116 (www.myozeki.com)
Content-Type: application/json; charset=utf8
Last-Modified: Thu, 10 Jun 2021 11:02:26 GMT
Server: 10/10.3.116
Transfer-Encoding: chunked
{
	"http_code": 200,
	"response_code": "SUCCESS",
	"response_msg": "",
	"data": {
	  "folder": "inbox",
	  "limit": "1000",
	  "data": [
	    {
	      "message_id": "94219121-e5b5-4845-9721-074f5307c9a4",
	      "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-06-10 11:46:16",
	      "valid_until": "2021-06-17 11:46:16",
	      "time_to_send": "2021-06-10 11:46:16",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    },
	    {
	      "message_id": "d6f832b2-dbc8-4b1b-8b47-44b3bb6658bf",
	      "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-06-10 11:46:16",
	      "valid_until": "2021-06-17 11:46:16",
	      "time_to_send": "2021-06-10 11:46:16",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    },
	    {
	      "message_id": "0bf86b3a-e4a9-4d8e-970c-ed486b02db7a",
	      "from_connection": "http_user@localhost",
	      "from_address": "+362011111111",
	      "from_station": "%",
	      "to_connection": "http_user@localhost",
	      "to_address": "http_user",
	      "to_station": "%",
	      "text": "Hello world 1",
	      "create_date": "2021-06-10 11:46:16",
	      "valid_until": "2021-06-17 11:46:16",
	      "time_to_send": "2021-06-10 11:46:16",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    }
	  ]
	}
}
	

Příklad SMS v F#: ReceiveSms.sln

Jak stáhnout projekt ReceiveSms.sln (Video návod)

V tomto videu se naučíte, jak stáhnout příklad projektu v F#. Video začíná na stránce ke stažení a končí otevřeným projektem. Dozvíte se, jak stáhnout projekt a co s ním dělat, abyste mohli přijímat SMS zprávy. Video je dlouhé pouze 58 sekund, ale je velmi užitečné. Díky své podrobnosti nebudete mít problém následovat jednotlivé kroky.

Video 1 - Jak stáhnout a spustit příklad projektu výše (Video návod)

Příklad kódu níže je součástí ReceiveSms.sln řešení Visual Studio. Řešení Visual Studio může obsahovat více projektů a více souborů. V tomto řešení jsou pouze dva projekty: ReceiveSms.fsproj, Ozeki.Libs.Rest.csproj, a jeden soubor: Program.fs.

Obrázek 3 - ReceiveSms.sln

Jak používat projekt ReceiveSms.sln (Video návod)

V tomto videu se naučíte, jak používat projekt pro příjem SMS zpráv pomocí F#. Video začne otevřením Ozeki SMS brány a provede vás až ke kontrole příkazového řádku s přijatými zprávami. Video je dlouhé pouze 54 sekund a je velmi podrobné. Díky tomu nebudete mít problém následovat návod.

Video 2 - Jak používat řešení ReceiveSms.fs (Video návod)

Spuštění příkladu SMS v F# na Windows

Když použijete Windows pro spuštění tohoto příkladu SMS napsaného v F#, všimnete si, že získáte o něco lepší výkon než při spuštění na Linuxu. Abychom pochopili, proč k tomu dochází, musíme si uvědomit, že F# používá pro spouštění kódu framework .NET. Důvodem je, že implementace .NET na Windows je optimalizována pro výkon, zatímco mono, implementace .NET na Linuxu, má v této oblasti nějaké zpoždění.

Závěr

Výše uvedený článek vysvětluje kroky pro příjem SMS v jazyce F# pomocí Ozeki SMS Gateway. S tímto řešením můžete přijímat textové zprávy od svých zákazníků do vašeho programu v F# za pomoci Ozeki SMS Gateway. Je důležité zmínit, že Ozeki SMS Gateway funguje v jakékoli zemi a umí odesílat a přijímat SMS přes různé mobilní připojení, takže se nemusíte obávat, pokud se výměna informací stane mezinárodní.

Chcete-li pokračovat v procesu učení, navštivte tutoriálovou stránku Ozeki, kde najdete více informací o tématech, jako je plánování v jazyce F#.

Nyní už vám zbývá jen stáhnout Ozeki SMS Gateway a začít pracovat!

More information