Jak zaplanować wysłanie SMS-a w F#

Najprostszym sposobem wysyłania SMS-ów z F# jest użycie wbudowanego interfejsu HTTP/Rest SMS API bramki SMS Ozeki. 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.

jak wysłać sms w przyszłości f sharp
Rysunek 1 - Planowanie wysłania SMS-a w F# na późniejszą dostawę

Kod F# do wysyłania zaplanowanych SMS-ów na telefon

Poniższy przykład kodu F# do wysyłania SMS-ów demonstruje, jak można wysyłać SMS-y przy użyciu interfejsu HTTP REST SMS API bramki SMS Ozeki, wykorzystując bibliotekę Ozeki.Libs.Rest w F#. Ta biblioteka jest dostarczana bezpłatnie i możesz jej używać oraz modyfikować w dowolnym ze swoich projektów.

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 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

Jak używać przykładu SMS w F#:

Ten przykład SMS w F# 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 Message do stworzenia SMS-a. Możesz użyć klasy MessageApi, aby wysłać SMS do bramki SMS. Bramka SMS przekaże Twoją wiadomość do sieci komórkowej poprzez połączenie bezprzewodowe lub przez Internet.

Pobierz SendScheduledSms.fs

Kod źródłowy omówiony w tym artykule można pobrać, używać i modyfikować bezpłatnie.
Pobierz: SendScheduledSms.fs.zip (59.8Kb)

Co znajduje się w pliku SendScheduledSms.fs?

Plik SendScheduledSms.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 SendScheduledSms w archiwum zip, który zawiera przykładowy kod pokazujący, jak wysłać SMS. Ten przykładowy kod jest wymieniony poniżej.

Rysunek 2 - Co znajduje się w SendScheduledSms.fs.zip

Jak wysłać SMS z F# (Szybkie kroki)

Aby wysłać SMS z F#:

  1. Zainstaluj bramkę SMS Ozeki
  2. Podłącz bramkę SMS Ozeki do sieci komórkowej
  3. Wyślij testowego SMS-a z interfejsu Ozeki
  4. Utwórz użytkownika HTTP SMS API
  5. Uruchom Visual Studio
  6. Utwórz rozwiązanie o nazwie SendScheduledSms.sln
  7. Dodaj projekt konsolowy F#: SendScheduledSms.fsproj
  8. Wprowadź kod do Program.fs lub SendScheduledSms.fs
  9. Odczytaj odpowiedź HTTP
  10. Sprawdź logi w bramce SMS

Zainstaluj bramkę SMS Ozeki i utwórz użytkownika HTTP API

Aby móc wysyłać SMS-y z F#, najpierw musisz zainstalować bramkę SMS Ozeki. 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 bramki SMS Ozeki 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 wysyłania SMS-ów z F#

Aby wysłać SMS 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 bramka SMS Ozeki jest zainstalowana na tym samym komputerze, na którym działa aplikacja SMS w F#, 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 wysyłania 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 wysyłania SMS-ów z F#

Aby wysłać wiadomości SMS, musisz uwzględnić następujące linie jako nagłówki w żądaniu HTTP. Zauważ, że uwzględniamy typ zawartości i nagłówek Authorization.

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

Żądanie HTTP do wysłania zaplanowanej wiadomości SMS z F#

Aby przesłać wiadomość 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 tekst wiadomości.

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

Odpowiedź HTTP otrzymana przez przykład SMS w F#

Gdy brama SMS odbierze to żądanie, wygeneruje odpowiedź HTTP. Odpowiedź HTTP będzie zawierać kod statusu, aby wskazać, czy żądanie wysłania SMS zakończyło się sukcesem czy nie. Zwróci również strukturę zakodowaną w JSON, aby dostarczyć przydatne informacje o przesłaniu wiadomości.

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": "Wiadomości zakolejkowane do wysłania.",
  "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"
      }
    ]
  }
}

Przykład SMS w F#: SendScheduledSms.sln



Jak pobrać plik projektu ze strony pobierania (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 zrobić później. Film trwa tylko 1 minutę, ale jest bardzo pomocny. Dzięki tak szczegółowemu opisowi nie będziesz miał problemu z wykonaniem kroków.

Wideo 1 - Jak pobrać i uruchomić przykładowy projekt powyżej (Samouczek wideo)

Poniższy przykładowy kod jest częścią rozwiązania Visual Studio SendScheduledSms.sln. Rozwiązanie Visual Studio może zawierać wiele projektów i wiele plików. W tym rozwiązaniu jest tylko jeden projekt: SendScheduledSms.fsproj i jeden plik: Program.fs.

Rysunek 3 - SendScheduledSms.sln

Jak używać projektu zaplanowanych wiadomości SMS (Samouczek wideo)

W tym filmie dowiesz się, jak używać projektu do wysyłania zaplanowanych wiadomości SMS. Film zaczyna się od otwarcia bramki SMS Ozeki i prowadzi Cię aż do sprawdzenia folderu odroczonego wypełnionego wiadomościami. Film trwa tylko 1:26 i jest bardzo szczegółowy. Dzięki temu nie będziesz miał problemu z wykonaniem samouczka.

Wideo 2 - Jak używać rozwiązania Send-scheduled-SMS.fs (Samouczek wideo)

Uruchamianie przykładu SMS w F# na Windows

Gdy używasz systemu Windows do uruchomienia tego przykładu SMS napisanego w F#, zauważysz, że uzyskasz nieco lepszą wydajność niż podczas uruchamiania na Linuxie. Aby zrozumieć, dlaczego tak się dzieje, należy 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 trochę do nadrobienia w tej dziedzinie.

Podsumowanie

Artykuł wyjaśnił kroki planowania SMS w F# z pomocą bramki SMS Ozeki. Planowanie SMS jest bardzo przydatnym narzędziem, jeśli chcesz upewnić się, że Twoje wiadomości unikną godzin szczytu odbiorców, więc wiadomości nie zostaną zignorowane lub zapomniane. Bramka SMS Ozeki pozwala na logowanie wiadomości SMS w bazie danych i oferuje różne możliwości raportowania, aby dostarczyć informacje o połączeniu SMS.

Nie kończ swoich badań tutaj, odwiedź stronę samouczków Ozeki, gdzie możesz przeczytać więcej na tematy takie jak usuwanie w F#.

Teraz jedyne, co pozostaje, to pobrać bramkę SMS Ozeki i zacząć pracę!

More information