Jak wysłać wiele SMS-ów z F#

Najprostszym sposobem wysyłania SMS-ów z F# jest użycie wbudowanego interfejsu API HTTP/Rest SMS 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ść SMS na telefon odbiorcy i zwróci odpowiedź HTTP 200 OK na Twoje żądanie.

wysyłanie wielu sms z f
Rysunek 1 - Wysyłanie wielu SMS-ów z F#

Kod F# do wysyłania wielu SMS-ów na telefony komórkowe

Poniższy przykład kodu SMS w F# demonstruje, jak można wysyłać SMS-y za pomocą interfejsu API HTTP rest bramki SMS Ozeki, używając biblioteki Ozeki.Libs.Rest dla F#. Ta biblioteka jest dostarczana bezpłatnie i możesz jej używać oraz modyfikować w dowolnych swoich projektach.

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 msg1 = new Message(
        ToAddress = "+36201111111", 
        Text = "Hello, World 1")

    let msg2 = new Message(
        ToAddress = "+36202222222", 
        Text = "Hello, World 2")

    let msg3 = new Message(
        ToAddress = "+36203333333", 
        Text = "Hello, World 3")

    let messages = [msg1; msg2; msg3]

    let api = new MessageApi(configuration)

    let result = api.Send(messages)

    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 w F#. To pozwoli Ci używać klas dostarczonych przez bibliotekę Ozeki.Libs.Rest. Możesz użyć klasy Message do tworzenia SMS-ów. Możesz użyć klasy MessageApi do wysyłania SMS-ów do bramki SMS. Bramka SMS przekieruje Twoją wiadomość do sieci komórkowej poprzez połączenie bezprzewodowe lub przez Internet.

Pobierz SendMultipleSms.fs

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

Co znajduje się w pliku SendMultipleSms.fs?

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

Rysunek 2 - Co znajduje się w SendMultipleSms.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 testowy SMS z interfejsu Ozeki
  4. Utwórz użytkownika API HTTP SMS
  5. Uruchom Visual Studio
  6. Utwórz rozwiązanie o nazwie SendMultipleSms.sln
  7. Dodaj projekt konsolowy F#: SendMultipleSms.fsproj
  8. Wprowadź kod do Program.cs lub SendMultipleSms.fs
  9. Odczytaj odpowiedź HTTP
  10. Sprawdź logi w bramce SMS

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

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

  1. Skonfiguruj Visual Studio
  2. Pobierz plik SendMultipleSms.fs.zip
  3. Wypakuj plik .zip z folderu Pobrane
  4. Otwórz plik SendMultipleSms.sln w Visual Studio
  5. Uruchom aplikację bramki SMS Ozeki
  6. Kliknij na użytkownika HTTP w zakładce Użytkownicy i aplikacje
  7. Uruchom Program.fs w Visual Studio
  8. Sprawdź skrzynkę Wysłane w bramce SMS Ozeki

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

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ć testowy SMS z interfejsu Ozeki, aby sprawdzić, czy Twoje połączenie z siecią komórkową działa. Ostatnim krokiem przygotowania środowiska jest utworzenie użytkownika API HTTP SMS. 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 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 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#, należy wysłać nazwę użytkownika i hasło w formie zakodowanej w base64 do serwera w żądaniu HTTP. Używany format to: base64(nazwa_użytkownika+":"+hasło). W C# można 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, należy dołączyć następujące linie jako nagłówki w żądaniu HTTP. Zwróć uwagę, że zawieramy typ zawartości i nagłówek Authorization.

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

Żądanie HTTP do wysyłania SMS-ów z F#

Aby przesłać SMS, Twoja aplikacja 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 JSON. Zawiera numer odbiorcy i tekst wiadomości.

HTTP request received from 127.0.0.1:56003
POST /api?action=sendmsg HTTP/1.1
Connection: Keep-Alive
Content-Length: 983
Content-Type: application/json
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 127.0.0.1:9509

{
  "messages": [
    {
      "message_id": "dcea98a0-7338-406a-96c8-86ddf9ccc1b6",
      "to_address": "+36201111111",
      "text": "Hello, World 1",
      "create_date": "2021-06-11 14:04:52",
      "valid_until": "2021-06-18 14:04:52",
      "time_to_send": "2021-06-11 14:04:52",
      "submit_report_requested": true,
      "delivery_report_requested": true,
      "view_report_requested": true,
      "tags": []
    },
    {
      "message_id": "7af033fe-fc31-464a-b59a-992ec268f156",
      "to_address": "+36202222222",
      "text": "Hello, World 2",
      "create_date": "2021-06-11 14:04:52",
      "valid_until": "2021-06-18 14:04:52",
      "time_to_send": "2021-06-11 14:04:52",
      "submit_report_requested": true,
      "delivery_report_requested": true,
      "view_report_requested": true,
      "tags": []
    },
    {
      "message_id": "29be6c7d-2474-4ab2-ad3c-d8d58e1cdd76",
      "to_address": "+36203333333",
      "text": "Hello, World 3",
      "create_date": "2021-06-11 14:04:52",
      "valid_until": "2021-06-18 14:04:52",
      "time_to_send": "2021-06-11 14:04:52",
      "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 otrzyma 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": "Messages queued for delivery.",
  "data": {
    "total_count": 3,
    "success_count": 3,
    "failed_count": 0,
    "messages": [
      {
        "message_id": "00da7d71-93f1-44c3-9975-4f9ce2ef6b28",
        "from_station": "%",
        "to_address": "+36201111111",
        "to_station": "%",
        "text": "Hello, World 1",
        "create_date": "2021-06-11 14:04:52",
        "valid_until": "2021-06-18 14:04:52",
        "time_to_send": "2021-06-11 14:04:52",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      },
      {
        "message_id": "dde86f6d-7db6-4f77-aea2-2bafc8d09cf8",
        "from_station": "%",
        "to_address": "+36202222222",
        "to_station": "%",
        "text": "Hello, World 2",
        "create_date": "2021-06-11 14:04:52",
        "valid_until": "2021-06-18 14:04:52",
        "time_to_send": "2021-06-11 14:04:52",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      },
      {
        "message_id": "c2a3275c-7015-4462-bde3-db0c9d45701b",
        "from_station": "%",
        "to_address": "+36203333333",
        "to_station": "%",
        "text": "Hello, World 3",
        "create_date": "2021-06-11 14:04:52",
        "valid_until": "2021-06-18 14:04:52",
        "time_to_send": "2021-06-11 14:04:52",
        "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#: SendMultipleSms.sln


Jak pobrać i otworzyć projekt (Samouczek wideo)

W tym filmie dowiesz się, jak pobrać przykładowy projekt w języku F#. Film rozpoczyna się od strony pobierania i kończy na otwartym projekcie. Nauczysz się, jak pobrać projekt i co zrobić potem. Film trwa tylko 1 minutę i jest bardzo szczegółowy. Nie będziesz miał problemu z wykonaniem kroków. Link do pobrania znajdziesz na stronie samouczka.

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

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

Rysunek 3 - SendMultipleSms.sln

Jak używać projektu (Samouczek wideo)

W tym filmie dowiesz się, jak używać projektu do wysyłania wielu SMS-ów jednocześnie z pomocą języka F#. Film rozpocznie się od otwarcia Ozeki SMS Gateway i przeprowadzi Cię przez cały proces aż do folderu wysłanych wiadomości z wieloma wiadomościami. Nauczysz się, jak uruchomić kod i jak sprawdzić folder wysłanych. Warto obejrzeć ten film, ponieważ jest łatwy do śledzenia i szczegółowy, ale trwa tylko 1 minutę.

Wideo 2 - Jak używać rozwiązania SendMultipleSms.fs (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 uzyskujesz 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 na Windows jest zoptymalizowana pod kątem wydajności, podczas gdy mono, implementacja .NET na Linuxie, ma jeszcze trochę do nadrobienia w tej dziedzinie.

Podsumowanie

Jak widać w powyższym artykule, wysyłanie wielu SMS-ów w F# przy użyciu Ozeki SMS Gateway jest bardzo proste. To rozwiązanie pozwala dotrzeć do wielu klientów za pomocą jednego kodu, oszczędzając koszty i czas. Warto zaznaczyć, że Ozeki SMS Gateway działa w środowisku, które kontrolujesz, więc Twoje dane i lista kontaktów są w bezpiecznych rękach. Jeśli kroki zostały wykonane starannie, komunikacja z klientami może odbywać się bez żadnych komplikacji.

Kontynuuj naukę na stronie samouczków Ozeki, gdzie znajdziesz więcej na tematy takie jak planowanie SMS-ów i odbieranie w F#.

Twoim następnym krokiem powinno być pobranie Ozeki SMS Gateway i rozpoczęcie pracy!

More information