Cum să primești un SMS în F#
Cea mai simplă metodă de a trimite SMS din F# este utilizarea API-ului HTTP/Rest SMS încorporat al Ozeki SMS Gateway. Când folosești acest API, vei trimite mesaje SMS prin emiterea unei cereri HTTP Post către gateway-ul SMS. Cererea HTTP Post va conține un mesaj formatat în format json. Gateway-ul SMS va trimite acest SMS către telefonul destinatar și va returna un răspuns HTTP 200 OK la cererea ta.
Exemplul de cod F# pentru SMS de mai jos demonstrează cum poți primi SMS folosind API-ul http rest sms al Ozeki SMS Gateway cu ajutorul bibliotecii F# Ozeki.Libs.Rest. Această bibliotecă este oferită gratuit și o poți folosi și modifica în oricare dintre proiectele tale.
Program.fsopen 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 $"Există {result.Length} mesaje în directorul inbox:" for message in result do printfn $"De la: {message.FromAddress} - Text: {message.Text}" 0
Cum să folosești exemplul F# pentru SMS:
Acest exemplu F# pentru SMS poate fi folosit în orice aplicație .NET sau .NET core. Pentru a-l folosi, trebuie să adaugi DLL-ul Ozeki.Libs.Rest ca referință în proiectul tău. După ce referința este adăugată, trebuie să incluzi directiva using Ozeki.Libs.Rest; în secțiunea de antet a codului sursă F#. Acest lucru îți va permite să folosești clasele furnizate de biblioteca Ozeki.Libs.Rest. Poți folosi clasa MessageApi pentru a primi SMS de la gateway-ul SMS.
Descarcă ReceiveSms.fs
Codul sursă explicat în acest articol poate fi descărcat, folosit și modificat gratuit.
Descarcă: ReceiveSms.fs.zip (51.2Kb)
Fișierul ReceiveSms.fs conține biblioteca Ozeki.Libs.Rest, care îți oferă toate instrumentele necesare pentru a trimite și primi mesaje SMS. Vei găsi de asemenea proiectul ReceiveSms în arhivă, care conține codul exemplu pentru a-ți arăta cum să primești SMS. Acest cod exemplu este listat mai jos.
Pentru a primi SMS din F#:
- Instalează Ozeki SMS Gateway
- Conectează Ozeki SMS Gateway la rețeaua mobilă
- Trimite un SMS test din interfața Ozeki
- Creează un utilizator HTTP sms api
- Pornește Visual Studio
- Creează o soluție numită ReceiveSms.sln
- Adaugă un proiect consolă F#: ReceiveSms.fsproj
- Pune codul în Program.fs sau ReceiveSms.fs
- Creează o cerere HTTP pentru a primi SMS
- Citește răspunsul HTTP
- Scrie răspunsul pe consolă
- Verifică jurnalele în gateway-ul SMS
Pentru a putea trimite SMS din F#, mai întâi trebuie să instalezi Ozeki SMS Gateway. Gateway-ul SMS poate fi instalat pe același calculator unde dezvolți codul F# în Visual Studio. După instalare, următorul pas este să conectezi Ozeki SMS Gateway la rețeaua mobilă. Poți trimite un SMS test din interfața Ozeki pentru a verifica dacă conexiunea ta la rețeaua mobilă funcționează. Ultimul pas pentru a-ți pregăti mediul este să creezi un utilizator HTTP sms api. Creează un utilizator cu numele de utilizator "http_user" și parola "qwe123" pentru a face exemplul să funcționeze fără modificări.
După ce mediul este configurat, poți rula codul F#.
URL API HTTP pentru a primi SMS din F#Pentru a trimite SMS din F#, aplicația ta F# va trebui să emită o cerere HTTP către gateway-ul SMS. URL-ul API este afișat mai jos. Reține că adresa IP (127.0.0.1) ar trebui să fie înlocuită cu adresa IP a gateway-ului tău SMS. Dacă Ozeki SMS Gateway este instalat pe același calculator unde rulează aplicația F# pentru SMS, aceasta poate fi 127.0.0.1. Dacă este instalat pe un calculator diferit, ar trebui să fie adresa IP a acelui calculator.
http://127.0.0.1:9509/api?action=rest
Pentru a autentifica clientul F# pentru SMS, trebuie să trimiți numele de utilizator și parola într-un șir codat base64 către server într-o cerere HTTP. Formatul folosit este: base64(nume_utilizator+":"+parolă). În C# poți folosi următorul cod pentru a face această codare:
var encoding = Encoding.GetEncoding("iso-8859-1"); var usernamePassword = username + ":" + password; var usernamePasswordEncoded = Convert.ToBase64String(encoding.GetBytes(usernamePassword));
De exemplu, dacă codezi numele de utilizator 'http_user' și parola 'qwe123', vei obține următorul șir codat base64: aHR0cF91c2VyOnF3ZTEyMw==. Pentru a trimite
Antet cerere HTTP pentru a primi SMS din F#Pentru a trimite mesajele SMS, trebuie să incluzi următoarele linii ca antete în cererea HTTP. Reține că includem un antet Content-Type și un antet Authorization.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cerere HTTP pentru primirea SMS-urilor folosind F#
Pentru a trimite SMS-ul, aplicația ta F# va trimite o cerere HTTP similară cu cea de mai jos. Reține că această cerere conține o parte de antet HTTP și o parte de corp HTTP. Corpul HTTP este un șir de date codificat în JSON. Acesta conține numărul destinatarului și textul mesajului.
GET /api?action=receivemsg&folder=inbox HTTP/1.1 Connection: Keep-Alive Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw== Host: 127.0.0.1:9509
Răspuns HTTP primit de exemplul F# pentru SMS
Odată ce gateway-ul SMS primește această cerere, va genera un răspuns HTTP. Răspunsul HTTP va conține un cod de stare, pentru a indica dacă cererea de trimitere a SMS-ului a fost reușită sau nu. De asemenea, va returna o structură codificată în JSON pentru a vă oferi detalii utile despre trimiterea mesajului.
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" } ] } ] } }
Exemplu F# pentru SMS: ReceiveSms.sln
Cum să descarci proiectul ReceiveSms.sln (Tutorial video)
În acest videoclip, vei învăța cum să descarci proiectul exemplu F#. Videoclipul începe cu pagina de descărcare și se termină cu proiectul deschis. Vei învăța cum să descarci proiectul și ce să faci cu el pentru a primi mesaje SMS. Videoclipul durează doar 58 de secunde, dar este foarte util. Datorită faptului că este atât de detaliat, nu vei avea probleme în a urmări pașii.
Codul exemplu de mai jos face parte din ReceiveSms.sln, o soluție Visual Studio. O soluție Visual Studio poate conține mai multe proiecte și mai multe fișiere. În această soluție sunt doar două proiecte: ReceiveSms.fsproj, Ozeki.Libs.Rest.csproj, și un fișier: Program.fs.
Cum să folosești proiectul ReceiveSms.sln (Tutorial video)
În acest videoclip, vei învăța cum să folosești proiectul pentru a primi mesaje SMS cu ajutorul F#. Videoclipul va începe cu deschiderea Ozeki SMS Gateway și te va duce până la verificarea liniei de comandă cu mesajele primite. Videoclipul durează doar 54 de secunde și este foarte detaliat. Datorită acestui fapt, nu vei avea probleme în a urmări tutorialul.
Rularea exemplului F# pentru SMS pe Windows
Când folosești Windows pentru a rula acest exemplu de SMS scris în F#, vei observa că obții o performanță ușor mai bună decât atunci când îl rulezi pe Linux. Pentru a înțelege de ce se întâmplă acest lucru, trebuie să ții cont că F# folosește cadrul .NET pentru execuția codului. Acest lucru se datorează faptului că implementarea .NET pe Windows este optimizată pentru performanță, în timp ce mono, implementarea .NET pe Linux, mai are de recuperat în acest domeniu.
Concluzie
Articolul de mai sus a explicat pașii de primire a SMS-urilor în F# folosind Ozeki SMS Gateway. Cu această soluție, puteți primi mesaje text de la clienți în programul dvs. F# cu ajutorul Ozeki SMS Gateway. Este important de menționat că Ozeki SMS Gateway funcționează în orice țară și poate trimite și primi SMS prin diverse conexiuni mobile, așa că nu trebuie să vă faceți griji dacă schimbul de informații devine internațional.
Pentru a continua călătoria de învățare, vizitați pagina de tutoriale Ozeki unde puteți găsi mai multe informații despre subiecte precum programarea în F#.
Acum, singurul lucru care vă rămâne de făcut este să descărcați Ozeki SMS Gateway și să începeți lucrul!
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#