Hogyan küldjünk több SMS-t F#-ból

A legegyszerűbb módja az SMS küldésének F#-ból az Ozeki SMS Gateway beépített HTTP/Rest SMS API-jának használata. Amikor ezt az API-t használod, SMS üzeneteket küldhetsz HTTP POST kérések kiadásával az SMS gateway felé. A HTTP POST kérés egy JSON formátumban formázott üzenetet fog tartalmazni. Az SMS gateway elküldi ezt az SMS-t a címzett telefonszámára, és egy HTTP 200 OK választ küld vissza a kérésedre.

több sms küldése f#-ból
1. ábra - Több SMS küldése F#-ból

F# kód több SMS mobilra küldéséhez

Az alábbi F# SMS kód minta bemutatja, hogyan küldhetsz 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ő számodra, és bármely projektben felhasználhatod és módosíthatod.

Program.fs
open System
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 msg1 = new Message(
        ToAddress = "+36201111111", 
        Text = "Hello, World 1")

    let msg2 = new Message(
        ToAddress = "+36202222222", 
        Text = "Hello, World 2")

    let msg3 = new Message(
        ToAddress = "+36203333333", 
        Text = "Hello, World 3")

    let messages = [msg1; msg2; msg3]

    let api = new MessageApi(configuration)

    let result = api.Send(messages)

    printfn $"{result.ToString()}"
    0

Az F# SMS példa használata:

Ez az F# SMS példa bármely .NET vagy .NET core alkalmazásban használható. A használatához hozzá kell adnod az Ozeki.Libs.Rest DLL-t referenciaként a projektedhez. A projekt referenca hozzáadása után az using Ozeki.Libs.Rest; direktívát be kell illesztened az 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 Message osztály segítségével hozhatod létre az SMS-t. A MessageApi osztály segítségével elküldheted az SMS-t az SMS gatewaynek. Az SMS gateway továbbítja az üzenetedet a mobil hálózatba vezeték nélküli kapcsolaton vagy az interneten keresztül.

SendMultipleSms.fs letöltése

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

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

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

2. ábra - Mi található a SendMultipleSms.fs.zip fájlban

Hogyan küldjünk SMS-t F#-ból (Gyors lépések)

SMS küldése F#-ból:

  1. Telepítsd az Ozeki SMS Gateway-t
  2. Kapcsold össze az Ozeki SMS Gateway-t a mobil hálózattal
  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 SendMultipleSms.sln nevű megoldást
  7. Adj hozzá egy F# konzol projektet: SendMultipleSms.fsproj
  8. Helyezd bele a kódot a Program.cs vagy SendMultipleSms.fs fájlba
  9. Olvasd el a HTTP választ
  10. Ellenőrizd a naplókat az SMS gateway-ben

Hogyan írd meg első F# programodat (Gyors lépések)

Első F# programod megírása:

  1. Állítsd be a Visual Studio-t
  2. Töltsd le a SendMultipleSms.fs.zip fájlt
  3. Csomagold ki a .zip fájlt a Letöltések mappából
  4. Nyisd meg a SendMultipleSms.sln fájlt a Visual Studio-ban
  5. Indítsd el az Ozeki SMS Gateway alkalmazást
  6. Kattints a HTTP felhasználóra a Felhasználók és alkalmazások lapon
  7. Futtasd a Program.fs-t a Visual Studio-ban
  8. Ellenőrizd a Küldött mappát az Ozeki SMS Gateway-ben

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

Ahhoz, hogy SMS-t tudj küldeni 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, hogy összekapcsolod az Ozeki SMS Gateway-t a mobil hálózattal. Küldhetsz egy teszt SMS-t az Ozeki GUI-ból, hogy ellenőrizd, működik-e a mobil hálózati kapcsolatod. A környezet előkészítésének utolsó lépése egy 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.

Miután a környezet be van állítva, futtathatod az F# kódodat.

HTTP API URL SMS küldéséhez F#-ból

Ahhoz, hogy SMS-t küldj F#-ból, a C# kódodnak HTTP kérést kell küldenie az SMS gateway felé. Az API URL az alábbiakban látható. Fontos, hogy az IP cím (127.0.0.1) helyére az SMS gateway IP címét írd. 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 megadnod.

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

HTTP hitelesítés SMS küldéséhez F#-ból

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 SMS küldéséhez F#-ból

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

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

HTTP kérés SMS küldéséhez F#-ból

Az SMS beküldéséhez az F# alkalmazásod egy olyan HTTP kérést fog küldeni, 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.

HTTP request received from 127.0.0.1:56003
POST /api?action=sendmsg HTTP/1.1
Connection: Keep-Alive
Content-Length: 983
Content-Type: application/json
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509

{
  "messages": [
    {
      "message_id": "dcea98a0-7338-406a-96c8-86ddf9ccc1b6",
      "to_address": "+36201111111",
      "text": "Hello, World 1",
      "create_date": "2021-06-11 14:04:52",
      "valid_until": "2021-06-18 14:04:52",
      "time_to_send": "2021-06-11 14:04:52",
      "submit_report_requested": true,
      "delivery_report_requested": true,
      "view_report_requested": true,
      "tags": []
    },
    {
      "message_id": "7af033fe-fc31-464a-b59a-992ec268f156",
      "to_address": "+36202222222",
      "text": "Hello, World 2",
      "create_date": "2021-06-11 14:04:52",
      "valid_until": "2021-06-18 14:04:52",
      "time_to_send": "2021-06-11 14:04:52",
      "submit_report_requested": true,
      "delivery_report_requested": true,
      "view_report_requested": true,
      "tags": []
    },
    {
      "message_id": "29be6c7d-2474-4ab2-ad3c-d8d58e1cdd76",
      "to_address": "+36203333333",
      "text": "Hello, World 3",
      "create_date": "2021-06-11 14:04:52",
      "valid_until": "2021-06-18 14:04:52",
      "time_to_send": "2021-06-11 14:04:52",
      "submit_report_requested": true,
      "delivery_report_requested": true,
      "view_report_requested": true,
      "tags": []
    }
  ]
}

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

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

HTTP/1.1 200 OK
User-Agent: OZEKI 10.3.118 (www.myozeki.com)
Content-Type: application/json; charset=utf8
Last-Modified: Fri, 11 Jun 2021 08:44:45 GMT
Server: 10/10.3.118
Transfer-Encoding: chunked

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "response_msg": "Messages queued for delivery.",
  "data": {
    "total_count": 3,
    "success_count": 3,
    "failed_count": 0,
    "messages": [
      {
        "message_id": "00da7d71-93f1-44c3-9975-4f9ce2ef6b28",
        "from_station": "%",
        "to_address": "+36201111111",
        "to_station": "%",
        "text": "Hello, World 1",
        "create_date": "2021-06-11 14:04:52",
        "valid_until": "2021-06-18 14:04:52",
        "time_to_send": "2021-06-11 14:04:52",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      },
      {
        "message_id": "dde86f6d-7db6-4f77-aea2-2bafc8d09cf8",
        "from_station": "%",
        "to_address": "+36202222222",
        "to_station": "%",
        "text": "Hello, World 2",
        "create_date": "2021-06-11 14:04:52",
        "valid_until": "2021-06-18 14:04:52",
        "time_to_send": "2021-06-11 14:04:52",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      },
      {
        "message_id": "c2a3275c-7015-4462-bde3-db0c9d45701b",
        "from_station": "%",
        "to_address": "+36203333333",
        "to_station": "%",
        "text": "Hello, World 3",
        "create_date": "2021-06-11 14:04:52",
        "valid_until": "2021-06-18 14:04:52",
        "time_to_send": "2021-06-11 14:04:52",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      }
    ]
  }
}

F# SMS példa: SendMultipleSms.sln


Hogyan töltsd le és nyisd meg a projektet (Videó útmutató)

Ebben a videóban megtanulhatod, hogyan töltheted le az F# példa projektet. 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 tegyél utána. A videó mindössze 1 perc hosszú és nagyon részletes. Nem lesz gondod a lépések követésével. A letöltési linket az útmutató oldalon találod.

1. videó - Hogyan töltsd le és nyisd meg a fenti megoldást (Videó útmutató)

Az alábbi példakód a SendMultipleSms.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 egy projekt található: SendMultipleSms.fsproj, és egy fájl: Program.fs.

3. ábra - SendMultipleSms.sln

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

Ebben a videóban megtanulhatod, hogyan használd a projektet több SMS egyszerre történő küldéséhez F# segítségével. A videó az Ozeki SMS Gateway megnyitásával kezdődik, és egészen a küldött mappához vezet, amely több üzenetet tartalmaz. Megtanulod, hogyan futtasd a kódot és hogyan ellenőrizd a küldött mappát. Érdemes megnézni a videót, mert könnyen követhető és részletes, de mindössze 1 perc hosszú.

2. videó - Hogyan használd a SendMultipleSms.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énye, mint Linux-on történő futtatáskor. Ennek megértéséhez észben kell tartanod, hogy az F# a .NET keretrendszert használja a kód végrehajtásához. Ez azért van, mert a .NET implementációja Windows-on optimalizált a teljesítmény érdekében, míg a mono, a .NET Linux-os implementációja ezen a téren még kissé le van maradva.

Összefoglalás

Ahogy a fenti cikkben is látható, több SMS küldése F#-ból az Ozeki SMS Gateway segítségével nagyon egyszerű. Ez a megoldás lehetővé teszi, hogy egyetlen kóddal több ügyfélhez is eljuss, ezzel költséget és időt takarítva meg. Fontos megjegyezni, hogy az Ozeki SMS Gateway egy általad irányított környezetben fut, így az adataid és a kapcsolati listád biztonságban vannak. Ha gondosan követted a lépéseket, az ügyfelekkel való üzenetküldés bonyolódás nélkül megvalósítható.

Folytasd a tanulást az Ozeki útmutató oldalán, ahol többet is megtudhatsz olyan témákról, mint az SMS fogadás F#-ban.

A következő lépés most az, hogy letöltöd az Ozeki SMS Gateway-t és elkezdesz dolgozni!

More information