Jak odbierać SMS-y w F#
Najprostszym sposobem wysyłania SMS-ów z F# jest użycie wbudowanego interfejsu HTTP/Rest SMS API Ozeki SMS Gateway. Korzystając z tego API, wysyłasz wiadomości SMS poprzez wysłanie żądania HTTP Post do bramki SMS. Żądanie HTTP Post będzie zawierać wiadomość w formacie json. Bramka SMS wyśle tę wiadomość na telefon odbiorcy i zwróci odpowiedź HTTP 200 OK na Twoje żądanie.
Kod F# do odbierania SMS-ów
Poniższy przykład kodu F# demonstruje, jak można odbierać SMS-y za pomocą interfejsu HTTP REST SMS API Ozeki SMS Gateway, korzystając z biblioteki Ozeki.Libs.Rest dla F#. Ta biblioteka jest dostarczana bezpłatnie i możesz jej używać oraz modyfikować w dowolnym ze swoich projektów.
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 $"There are {result.Length} messages in the inbox folder:" for message in result do printfn $"From: {message.FromAddress} - Text: {message.Text}" 0
Jak używać przykładu F# do SMS-ów:
Ten przykład F# do SMS-ów może być używany w dowolnej aplikacji .NET lub .NET Core. Aby go użyć, musisz dodać bibliotekę Ozeki.Libs.Rest jako referencję do swojego projektu. Po dodaniu referencji do projektu, musisz umieścić dyrektywę using Ozeki.Libs.Rest; w sekcji nagłówkowej swojego kodu źródłowego F#. To pozwoli Ci korzystać z klas dostarczonych przez bibliotekę Ozeki.Libs.Rest. Możesz użyć klasy MessageApi, aby odbierać SMS-y z bramki SMS.
Pobierz ReceiveSms.fs
Kod źródłowy omówiony w tym artykule można pobrać, używać i modyfikować bezpłatnie.
Pobierz: ReceiveSms.fs.zip (51.2Kb)
Co znajduje się w pliku ReceiveSms.fs?
Plik ReceiveSms.fs zawiera bibliotekę Ozeki.Libs.Rest, która dostarcza wszystkich narzędzi niezbędnych do wysyłania i odbierania wiadomości SMS. Znajdziesz tam również projekt ReceiveSms w archiwum zip, który zawiera przykładowy kod pokazujący, jak odbierać SMS-y. Ten przykładowy kod jest wymieniony poniżej.
Jak odbierać SMS-y z F# (Szybkie kroki)
Aby odbierać SMS-y z F#:
- Zainstaluj Ozeki SMS Gateway
- Podłącz Ozeki SMS Gateway do sieci komórkowej
- Wyślij testowego SMS-a z interfejsu Ozeki
- Utwórz użytkownika HTTP SMS API
- Uruchom Visual Studio
- Utwórz rozwiązanie o nazwie ReceiveSms.sln
- Dodaj projekt konsolowy F#: ReceiveSms.fsproj
- Umieść kod w Program.fs lub ReceiveSms.fs
- Utwórz żądanie HTTP, aby odebrać SMS
- Odczytaj odpowiedź HTTP
- Wyświetl odpowiedź na konsoli
- Sprawdź logi w bramce SMS
Zainstaluj Ozeki SMS Gateway i utwórz użytkownika HTTP API
Aby móc wysyłać SMS-y z F#, najpierw musisz zainstalować Ozeki SMS Gateway. Bramka SMS może być zainstalowana na tym samym komputerze, na którym tworzysz swój kod F# w Visual Studio. Po instalacji następnym krokiem jest podłączenie Ozeki SMS Gateway do sieci komórkowej. Możesz wysłać testowego SMS-a z interfejsu Ozeki, aby sprawdzić, czy Twoje połączenie z siecią komórkową działa. Ostatnim krokiem przygotowania środowiska jest utworzenie użytkownika HTTP SMS API. Utwórz użytkownika z nazwą "http_user" i hasłem "qwe123", aby przykład działał bez modyfikacji.
Po skonfigurowaniu środowiska możesz uruchomić swój kod F#.
URL API HTTP do odbierania SMS-ów z F#
Aby wysyłać SMS-y z F#, Twój kod F# będzie musiał wysłać żądanie HTTP do bramki SMS. URL API jest pokazany poniżej. Zauważ, że adres IP (127.0.0.1) powinien zostać zastąpiony adresem IP Twojej bramki SMS. Jeśli Ozeki SMS Gateway jest zainstalowana na tym samym komputerze, na którym działa aplikacja F# do SMS-ów, może to być 127.0.0.1. Jeśli jest zainstalowana na innym komputerze, powinien to być adres IP tego komputera.
http://127.0.0.1:9509/api?action=rest
Uwierzytelnianie HTTP do odbierania SMS-ów z F#
Aby uwierzytelnić klienta SMS w F#, musisz wysłać nazwę użytkownika i hasło w zakodowanym ciągu base64 do serwera w żądaniu HTTP. Używany format to: base64(nazwa_użytkownika+":"+hasło). W C# możesz użyć następującego kodu do wykonania tego kodowania:
var encoding = Encoding.GetEncoding("iso-8859-1"); var usernamePassword = username + ":" + password; var usernamePasswordEncoded = Convert.ToBase64String(encoding.GetBytes(usernamePassword));
Na przykład, jeśli zakodujesz nazwę użytkownika 'http_user' i hasło 'qwe123', otrzymasz następujący zakodowany ciąg base64: aHR0cF91c2VyOnF3ZTEyMw==. Aby wysłać
Nagłówek żądania HTTP do odbierania SMS-ów z F#
Aby wysyłać wiadomości SMS, musisz uwzględnić następujące linie jako nagłówki w żądaniu HTTP. Zauważ, że zawieramy typ zawartości i nagłówek Authorization.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Żądanie HTTP do odbierania SMS-ów przy użyciu F#
Aby przesłać SMS, Twoja aplikacja w F# wyśle żądanie HTTP podobne do poniższego. Zauważ, że to żądanie zawiera część nagłówka HTTP i część ciała HTTP. Ciało HTTP to ciąg danych zakodowany w formacie JSON. Zawiera numer odbiorcy i treść wiadomości.
GET /api?action=receivemsg&folder=inbox HTTP/1.1 Connection: Keep-Alive Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw== Host: 127.0.0.1:9509
Odpowiedź HTTP otrzymana przez przykład SMS w F#
Gdy brama SMS otrzyma to żądanie, wygeneruje odpowiedź HTTP. Odpowiedź HTTP będzie zawierać kod statusu, wskazujący, czy żądanie przesłania SMS zakończyło się sukcesem czy nie. Zwróci również strukturę zakodowaną w JSON, aby dostarczyć Ci przydatne informacje dotyczące przesłania wiadomości.
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" } ] } ] } }
Przykład SMS w F#: ReceiveSms.sln
Jak pobrać projekt ReceiveSms.sln (Samouczek wideo)
W tym filmie dowiesz się, jak pobrać przykładowy projekt w F#. Film zaczyna się od strony pobierania i kończy na otwartym projekcie. Dowiesz się, jak pobrać projekt i co z nim zrobić, aby odbierać wiadomości SMS. Film trwa tylko 58 sekund, ale jest bardzo pomocny. Dzięki tak szczegółowemu opisowi nie będziesz miał problemu z wykonaniem kroków.
Poniższy przykładowy kod jest częścią rozwiązania Visual Studio ReceiveSms.sln. Rozwiązanie Visual Studio może zawierać wiele projektów i wiele plików. W tym rozwiązaniu są tylko dwa projekty: ReceiveSms.fsproj, Ozeki.Libs.Rest.csproj, oraz jeden plik: Program.fs.
Jak używać projektu ReceiveSms.sln (Samouczek wideo)
W tym filmie dowiesz się, jak używać projektu do odbierania wiadomości SMS za pomocą F#. Film zaczyna się od otwarcia bramki SMS Ozeki i przeprowadzi Cię aż do sprawdzenia wiersza poleceń z odebranymi wiadomościami. Film trwa tylko 54 sekundy i jest bardzo szczegółowy. Dzięki temu nie będziesz miał problemu z wykonaniem samouczka.
Uruchamianie przykładu SMS w F# na Windows
Kiedy używasz systemu Windows do uruchomienia tego przykładu SMS napisanego w F#, zauważysz, że uzyskasz nieco lepszą wydajność niż podczas uruchamiania go na Linuxie. Aby zrozumieć, dlaczego tak się dzieje, musisz pamiętać, że F# używa frameworka .NET do wykonywania kodu. Dzieje się tak, ponieważ implementacja .NET w systemie Windows jest zoptymalizowana pod kątem wydajności, podczas gdy mono, implementacja .NET na Linuxie, ma jeszcze pewne zaległości w tej dziedzinie.
Podsumowanie
Powyższy artykuł wyjaśnił kroki odbierania SMS-ów w F# przy użyciu Ozeki SMS Gateway. Dzięki temu rozwiązaniu, możesz odbierać wiadomości tekstowe od swoich klientów w programie F# z pomocą Ozeki SMS Gateway. Warto wspomnieć, że Ozeki SMS Gateway działa w każdym kraju i może wysyłać oraz odbierać SMS-y przez różne połączenia mobilne, więc nie musisz się martwić, jeśli wymiana informacji stanie się międzynarodowa.
Aby kontynuować naukę, odwiedź stronę z tutorialami Ozeki, gdzie znajdziesz więcej informacji na tematy takie jak harmonogramowanie w F#.
Teraz jedyne, co musisz zrobić, to pobrać Ozeki SMS Gateway i rozpocząć pracę!
More information
- Jak wysłać SMS z F#
- Jak wysłać wiele SMS z F#
- F# zaplanuj SMS za pomocą interfejsu HTTP REST API (przykładowy kod)
- F# odbierz SMS za pomocą interfejsu HTTP REST API (przykładowy kod)
- F# usuń SMS za pomocą interfejsu HTTP REST API (przykładowy kod)
- Github: F# SMS API
- Biblioteka NuGet SMS dla F#