Jak wysłać SMS z F#

Najprostszym sposobem wysłania SMS 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ść sformatowaną w formacie json. Bramka SMS wyśle tę wiadomość SMS na telefon odbiorcy i zwróci odpowiedź HTTP 200 OK na Twoje żądanie.

jak wysłać sms z f
Rysunek 1 - Jak wysłać SMS z F#

Przykładowy kod wysyłania SMS w F#

Program.fs
open System
open Ozeki.Libs.Rest

[]
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!")

    let api = new MessageApi(configuration)

    let result = api.Send(msg)

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

Pobierz SendSms.fs

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

Co znajduje się w pliku SendSms.fs.zip?

Plik SendSms.fs.zip 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 SendSms, 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 SendSms.fs.zip

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

Aby wysłać SMS z F#:

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

Jak napisać swój pierwszy program w F# (Szybkie komendy)

Aby napisać swój pierwszy program w F#:

  1. Skonfiguruj Visual Studio
  2. Pobierz plik SendSms.fs.zip
  3. Wypakuj plik .zip z folderu Pobrane
  4. Otwórz plik SendSms.sln w Visual Studio
  5. Uruchom aplikację Ozeki SMS Gateway
  6. Kliknij na użytkownika HTTP w zakładce Użytkownicy i aplikacje
  7. Uruchom SendSMS.fs w Visual Studio
  8. Sprawdź skrzynkę Wysłane w Ozeki SMS Gateway
  9. Wybierz połączenie klienta SMPP na stronie głównej
  10. Zaznacz wszystkie pola Log level w zakładce Zaawansowane w menu Konfiguracja
  11. Uruchom ponownie Program.fs w Visual Studio
  12. Znajdź zdarzenie, jeśli odbiorca otrzymał Twoją wiadomość

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

Aby móc wysyłać SMS 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ć testową wiadomość SMS 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 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 Ozeki SMS Gateway 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 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 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 SMS-a z F#

Aby wysł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.

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

{
  "messages": [
    {
      "message_id": "9380ab2d-a185-4cc1-abad-c18ec459e40f",
      "to_address": "+36201111111",
      "text": "Hello, World!",
      "create_date": "2021-06-11 13:45:30",
      "valid_until": "2021-06-18 13:45:30",
      "time_to_send": "2021-06-11 13:45:30",
      "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-a 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.116 (www.myozeki.com)
Content-Type: application/json; charset=utf8
Last-Modified: Fri, 11 Jun 2021 13:06:37 GMT
Server: 10/10.3.116
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": "9380ab2d-a185-4cc1-abad-c18ec459e40f",
        "from_station": "%",
        "to_address": "+36201111111",
        "to_station": "%",
        "text": "Hello, World!",
        "create_date": "2021-06-11 13:45:30",
        "valid_until": "2021-06-18 13:45:30",
        "time_to_send": "2021-06-11 13:45:30",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      }
    ]
  }
}

Jak wysłać SMS z F# (Samouczek wideo)

Ten film pokazuje, jak utworzyć nowy projekt konsoli .Net core w Visual Studio, jak nazwać go SendSms.sln. Po utworzeniu rozwiązania możesz zauważyć, że SendSms.fsproj został dodany do rozwiązania, a domyślnie otwiera się plik Program.cs. Możesz zmienić nazwę Program.fs na SendSms.fs, jeśli chcesz. Zobaczysz również na filmie, jak poniższy przykładowy kod można skopiować do pliku Program.fs oraz jak można go skompilować i uruchomić.

Wideo 1 - Jak pobrać i otworzyć rozwiązanie (Samouczek wideo)

SendSms.sln

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

Rysunek 3 - SendSms.sln

Jak sprawdzić, czy SMS został zaakceptowany przez użytkownika HTTP

Po wysłaniu SMS-a warto sprawdzić w swojej bramie SMS, co otrzymała. Możesz sprawdzić log, otwierając szczegóły użytkownika HTTP z konsoli zarządzania Ozeki SMS Gateway. Poniższy film pokazuje, na co zwrócić uwagę.

Wideo 2 - Jak wysłać SMS za pomocą kodu F# powyżej (Samouczek wideo)

Jak sprawdzić, czy SMS został wysłany do sieci komórkowej

Ostatnim krokiem weryfikacji procedury jest spojrzenie na logi połączenia z siecią komórkową. Może być konieczne włączenie logowania w konfiguracji połączenia przed wysłaniem wiadomości, aby zobaczyć logi. Jeśli logowanie jest włączone, zobaczysz numer telefonu i tekst wiadomości, którą wysłałeś.

Wideo 3 - Jak włączyć logowanie w Ozeki SMS Gateway (Samouczek wideo)

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

Powyższy artykuł przedstawił kroki wysyłania SMS-ów w F#. Dzięki podanej instrukcji wysyłanie wiadomości za pomocą F# i Ozeki SMS Gateway jest szybkie i proste. Ozeki SMS Gateway oferuje doskonałe możliwości logowania, dzięki czemu błędy można łatwo śledzić. Ty lub Twoja organizacja możecie szybko dotrzeć do klientów za pomocą tego rozwiązania, a jak widać, bycie ekspertem w F# nie jest konieczne.

Aby kontynuować naukę, odwiedź stronę z tutorialami Ozeki, gdzie można znaleźć więcej informacji na temat pracy z F#, takich jak planowanie SMS-ów.

Teraz jedyne, co musisz zrobić, to pobrać Ozeki SMS Gateway i rozpocząć pracę!

More information