Hogyan ütemezhetünk SMS-t F#-ban
Az F#-ból történő SMS küldés legegyszerűbb módja 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 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.
F# kód SMS ütemezéséhez mobilra
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.fsopen 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 msg = new Message( ToAddress = "+36201111111", Text = "Hello, World!", TimeToSend = DateTime.Parse("2021-06-07 11:44:00")) let api = new MessageApi(configuration) let result = api.Send(msg) 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 kell elhelyezned 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ályt használhatod az SMS küldéséhez az SMS gateway felé. Az SMS gateway továbbítja az üzenetedet a mobil hálózat felé vezeték nélküli kapcsolaton vagy az interneten keresztül.
SendScheduledSms.fs letöltése
A cikkben ismertetett forráskód letölthető, felhasználható és módosítható ingyenesen.
Letöltés: SendScheduledSms.fs.zip (59.8Kb)
Mi található a SendScheduledSms.fs fájlban?
A SendScheduledSms.fs fájl tartalmazza az Ozeki.Libs.Rest könyvtárat, amely minden szükséges eszközt biztosít az SMS üzenetek küldéséhez és fogadásához. A zip fájlban megtalálod a SendScheduledSms projektet is, amely tartalmazza a példakódot, amely bemutatja, hogyan küldj SMS-t. Ez a példakód az alábbiakban látható.
Hogyan küldjünk SMS-t F#-ból (Gyors lépések)
SMS küldése F#-ból:
- Telepítsd az Ozeki SMS Gateway-t
- Kapcsold össze az Ozeki SMS Gateway-t a mobil hálózattal
- Küldj egy teszt SMS-t az Ozeki GUI-ból
- Hozz létre egy HTTP SMS API felhasználót
- Indítsd el a Visual Studio-t
- Hozz létre egy SendScheduledSms.sln nevű megoldást
- Adj hozzá egy F# konzol projektet: SendScheduledSms.fsproj
- Helyezd el a kódot a Program.fs vagy SendScheduledSms.fs fájlba
- Olvasd el a HTTP választ
- Ellenőrizd a naplókat az 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, a mobil hálózati kapcsolatod működik-e. 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, az F# alkalmazásodnak HTTP kérést kell küldenie az SMS gateway felé. 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 lehet 127.0.0.1. Ha másik számítógépre van telepítve, akkor annak a számítógépnek az IP címét kell megadni.
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 a jelszót base64 kódolású karakterláncként kell elküldeni 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 ehhez 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 arra, hogy egy Content-Type és egy Authorization fejlécet is tartalmazunk.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
HTTP kérés ütemezett 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 arra, 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ú adat karakterlánc. Ez tartalmazza a címzett számát és az üzenet szövegét.
POST /api?action=sendmsg HTTP/1.1 Connection: Keep-Alive Content-Length: 336 Content-Type: application/json Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw== Host: 127.0.0.1:9509 { "messages": [ { "message_id": "d51ca3ba-4159-4dee-8541-106f8df76f91", "to_address": "+36201111111", "text": "Hello, World!", "create_date": "2021-06-11 14:09:22", "valid_until": "2021-06-18 14:09:22", "time_to_send": "2021-06-11 14:44:00", "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átusz kódot, amely jelzi, hogy az SMS beküldési kérés sikeres volt-e vagy sem. Ezen kí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": 1, "success_count": 1, "failed_count": 0, "messages": [ { "message_id": "04682902-5360-4189-8082-ab455433d141", "from_station": "%", "to_address": "+36201111111", "to_station": "%", "text": "Hello, World!", "create_date": "2021-06-11 14:09:22", "valid_until": "2021-06-18 14:09:22", "time_to_send": "2021-06-11 14:44:00", "submit_report_requested": true, "delivery_report_requested": true, "view_report_requested": false, "tags": [ { "name": "Type", "value": "SMS:TEXT" } ], "status": "SUCCESS" } ] } }
F# SMS példa: SendScheduledSms.sln
Hogyan töltsd le a projektfájlt a letöltési oldalról (Videó útmutató)
Ebben a videóban megtanulhatod, hogyan töltsd le az F# példaprojektet. 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 tenni utána. A videó mindössze 1 perc hosszú, de nagyon hasznos. A részletességnek köszönhetően nem lesz gondod a lépések követésével.
Az alábbi példakód a SendScheduledSms.sln Visual Studio megoldás része. Egy Visual Studio megoldás több projektet és több fájlt is tartalmazhat. Ebben a megoldásban csak egy projekt található: SendScheduledSms.fsproj, és egy fájl: Program.fs.
Hogyan használd az ütemezett SMS projektet (Videó útmutató)
Ebben a videóban megtanulhatod, hogyan használd a projektet ütemezett SMS üzenetek küldéséhez. A videó az Ozeki SMS Gateway megnyitásával kezdődik, és egészen az elhalasztott mappák ellenőrzéséig vezet, amelyek tele vannak üzenetekkel. A videó mindössze 1:26 perc hosszú és nagyon részletes. Ennek köszönhetően nem lesz gondod az útmutató követésével.
Az F# SMS példa futtatása Windows-on
Amikor Windows-on futtatod ezt az F# nyelven írt SMS példát, észreveheted, hogy kissé jobb teljesítményt kapsz, 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 implementáció Windows-on teljesítményre van optimalizálva, míg a mono, a .NET implementáció Linux-on még ezen a téren felzárkózóban van.
Összegzés
A cikk bemutatta az SMS ütemezés lépéseit F#-ban az Ozeki SMS Gateway segítségével. Az SMS ütemezés nagyon hasznos eszköz, ha biztosítani szeretnéd, hogy az üzeneteid elkerüljék a címzettek forgalmas óráit, így az üzenetek nem lesznek figyelmen kívül hagyva vagy elfelejtve. Az Ozeki SMS Gateway lehetővé teszi az SMS üzenetek adatbázisba történő naplózását, és különféle jelentéskészítési lehetőségeket kínál az SMS kapcsolatról szóló információk nyújtásához.
Ne állj meg itt a tanulmányaidban, látogass el az Ozeki oktatóanyag oldalára, ahol további témákról olvashatsz, mint például az SMS törlése F#-ban.
Most már csak annyi a teendő, hogy letöltöd az Ozeki SMS Gateway-t és megkezdheted a munkát!
More information
- How to send SMS from F#
- How to send multiple SMS from F#
- F# schedule SMS with the HTTP rest API (code sample)
- F# receive SMS with the HTTP rest API (code sample)
- F# delete SMS with the HTTP rest API (code sample)
- Github: F# SMS API
- SMS nuget library for F#