Hogyan kapjunk SMS-t F#-ban

Az SMS küldésének legegyszerűbb módja F#-ban a beépített HTTP/Rest SMS API használata az Ozeki SMS Gateway segítségével. Ezt az API-t használva HTTP POST kérést küldhetsz az SMS gatewaynek. A HTTP POST kérés tartalmazni fog egy JSON formátumban formázott üzenetet. Az SMS gateway továbbítja ezt az SMS-t a címzett telefonszámára, és egy HTTP 200 OK választ küld vissza a kérésedre.

hogyan kapjunk sms üzeneteket f sharp használatával
1. ábra - SMS üzenetek fogadása F#-ban

F# kód SMS fogadásához

Az alábbi F# SMS kódminta bemutatja, hogyan fogadhatsz SMS-t az Ozeki SMS Gateway HTTP REST SMS API-jával az F# Ozeki.Libs.Rest könyvtár segítségével. Ez a könyvtár ingyenesen elérhető, és bármilyen projektben felhasználhatod és módosíthatod.

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 $"A beérkező mappában {result.Length} üzenet található:"
    for message in result do
        printfn $"Feladó: {message.FromAddress} - Szöveg: {message.Text}"
    0

Az F# SMS példa használata:

Ez az F# SMS példa bármilyen .NET vagy .NET core alkalmazásban használható. A használathoz hozzá kell adnod az Ozeki.Libs.Rest dll-t referenciaként a projektedhez. A projekt referenciája hozzáadása után az using Ozeki.Libs.Rest; direktívát kell elhelyezned a F# forráskódod fejléc részébe. Ez lehetővé teszi az Ozeki.Libs.Rest könyvtár által nyújtott osztályok használatát. A MessageApi osztály segítségével fogadhatod az SMS-t az SMS gatewaytől.

ReceiveSms.fs letöltése

A cikkben ismertetett forráskód ingyenesen letölthető, felhasználható és módosítható.
Letöltés: ReceiveSms.fs.zip (51.2Kb)

Mi található a ReceiveSms.fs fájlban?

A ReceiveSms.fs fájl tartalmazza az Ozeki.Libs.Rest könyvtárat, amely minden szükséges eszközt nyújt az SMS küldéséhez és fogadásához. A zip fájlban megtalálod a ReceiveSms projektet is, amely tartalmazza a példakódot, amely bemutatja, hogyan fogadj SMS-t. Ez a példakód az alábbiakban látható.

mi található az ozeki receive sms zip fájlban
2. ábra - Mi található a ReceiveSms.fs.zip fájlban

Hogyan fogadjunk SMS-t F#-ban (Gyors lépések)

Az SMS fogadása F#-ban:

  1. Telepítsd az Ozeki SMS Gateway-t
  2. Kapcsold az Ozeki SMS Gateway-t a mobil hálózathoz
  3. Küldj egy teszt SMS-t az Ozeki GUI-ból
  4. Hozz létre egy HTTP SMS API felhasználót
  5. Indítsd el a Visual Studio-t
  6. Hozz létre egy ReceiveSms.sln nevű megoldást
  7. Adj hozzá egy F# konzol projektet: ReceiveSms.fsproj
  8. Helyezd el a kódot a Program.fs vagy ReceiveSms.fs fájlban
  9. Hozz létre egy HTTP kérést az SMS fogadásához
  10. Olvasd el a HTTP választ
  11. Írd ki a választ a konzolra
  12. Ellenőrizd a naplókat az SMS gatewayben

Ozeki SMS Gateway telepítése és HTTP API felhasználó létrehozása

Ahhoz, hogy SMS-t küldhess F#-ból, először telepítened kell az Ozeki SMS Gateway-t. Az SMS gateway telepíthető ugyanarra a számítógépre, ahol a Visual Studio-ban fejleszted az F# kódodat. A telepítés után a következő lépés az Ozeki SMS Gateway csatlakoztatása a mobil hálózathoz. Küldhetsz egy teszt SMS-t az Ozeki GUI-ból annak ellenőrzésére, hogy a mobil hálózati kapcsolat működik-e. A környezet előkészítésének utolsó lépése az HTTP SMS API felhasználói fiók létrehozása. Hozz létre egy felhasználót "http_user" felhasználónévvel és "qwe123" jelszóval, hogy a példa módosítás nélkül működjön.

A környezet beállítása után futtathatod az F# kódodat.

HTTP API URL az SMS fogadásához F#-ban

Az SMS küldéséhez F#-ból a F# alkalmazásodnak HTTP kérést kell küldenie az SMS gatewaynek. Az API URL az alábbiakban látható. Fontos, hogy az IP címet (127.0.0.1) le kell cserélni az SMS gateway IP címére. Ha az Ozeki SMS Gateway ugyanarra a számítógépre van telepítve, ahol az F# SMS alkalmazás fut, ez maradhat 127.0.0.1. Ha másik számítógépre van telepítve, annak az IP címét kell megadni.

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

HTTP hitelesítés az SMS fogadásához F#-ban

Az F# SMS kliens hitelesítéséhez a felhasználónevet és jelszót base64 kódolású karakterláncként kell elküldened a szervernek egy HTTP kérésben. A használt formátum: base64(felhasználónév+":"+jelszó). C#-ban a következő kódot használhatod a kódoláshoz:

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

Például, ha a 'http_user' felhasználónevet és a 'qwe123' jelszót kódolod, a következő base64 kódolású karakterláncot kapod: aHR0cF91c2VyOnF3ZTEyMw==.

HTTP kérés fejléc az SMS fogadásához F#-ban

Az SMS üzenetek küldéséhez a következő sorokat kell fejléc részként tartalmaznia a HTTP kérésnek. Figyelj arra, hogy tartalomtípust és egy Authorization fejlécet is tartalmazunk.

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

HTTP kérés az SMS fogadásához F#-ban

Az SMS beküldéséhez az F# alkalmazásod egy olyan HTTP kérést küld, mint az alábbi. Figyelj rá, hogy ez a kérés tartalmaz egy HTTP fejléc részt és egy HTTP törzs részt. A HTTP törzs egy JSON kódolású adatsor. Tartalmazza a címzett számát és az üzenet szövegét.

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

HTTP válasz az F# SMS példa által fogadva

Amint az SMS gateway megkapja ezt a kérést, generál egy HTTP választ. A HTTP válasz tartalmaz egy állapotkódot, amely jelzi, hogy az SMS beküldési kérés sikeres volt-e vagy sem. Egy JSON kódolású struktúrát is visszaad, ami hasznos részleteket nyújt az üzenet beküldéséről.

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"
	        }
	      ]
	    }
	  ]
	}
}
	

F# SMS példa: ReceiveSms.sln

Hogyan töltsd le a ReceiveSms.sln projektet (Videó útmutató)

Ebben a videóban megtanulhatod, hogyan töltsd le az F# példaprojketet. A videó a letöltési oldallal kezdődik, és a megnyitott projekttel ér véget. Megtanulod, hogyan töltsd le a projektet, és mit kell vele tenned az SMS üzenetek fogadásához. A videó mindössze 58 másodperc hosszú, de nagyon hasznos. A részletességnek köszönhetően nem lesz gondod a lépések követésével.

1. videó - Hogyan töltsd le és futtasd a fenti példaprojketet (Videó útmutató)

Az alábbi példakód a ReceiveSms.sln Visual Studio Megoldás része. Egy Visual Studio megoldás több projektet és fájlt is tartalmazhat. Ebben a megoldásban csak két projekt található: ReceiveSms.fsproj, Ozeki.Libs.Rest.csproj, és egy fájl: Program.fs.

3. ábra - ReceiveSms.sln

Hogyan használd a ReceiveSms.sln projektet (Videó útmutató)

Ebben a videóban megtanulhatod, hogyan használd a projektet az SMS üzenetek fogadásához F# segítségével. A videó az Ozeki SMS Gateway megnyitásával kezdődik, és elvisz a fogadott üzenetek ellenőrzéséig a parancssorban. A videó mindössze 54 másodperc hosszú és nagyon részletes. Ennek köszönhetően nem lesz gondod az útmutató követésével.

2. videó - Hogyan használd a ReceiveSms.fs megoldást (Videó útmutató)

Az F# SMS példa futtatása Windows-on

Amikor Windows-on futtatod ezt az F#-ban írt SMS példát, észreveheted, hogy kissé jobb a teljesítmény, mint Linux-on történő futtatáskor. Ennek megértéséhez szem előtt kell tartanod, hogy az F# a .NET keretrendszert használja a kód végrehajtásához. Ez azért van, mert a .NET Windows-on történő implementációja optimalizált a teljesítményre, míg a mono, a .NET Linux-on történő implementációja még fejlődik ezen a téren.

Összegzés

A fenti cikk bemutatta az SMS fogadásának lépéseit F#-ban az Ozeki SMS Gateway segítségével. Ezzel a megoldással, szöveges üzeneteket fogadhatsz az ügyfelektől az F# programodba az Ozeki SMS Gateway segítségével. Fontos megjegyezni, hogy az Ozeki SMS Gateway bármely országban működik, és különféle mobil kapcsolatokon keresztül küldhet és fogadhat SMS-t, így nem kell aggódnod, ha az információcsere nemzetközivé válik.

A tanulási út folytatásához látogass el az Ozeki oktatóanyag oldalára, ahol további információkat találsz olyan témákról, mint az ütemezés F#-ban.

Most már csak annyi a dolgod, hogy letöltöd az Ozeki SMS Gateway-t és elkezded a munkát!

More information