Jak wysłać SMS z C#

Najprostszym sposobem na wysłanie SMS-a z C# jest użycie wbudowanego interfejsu HTTP/Rest SMS API Ozeki SMS Gateway. Korzystając z tego API, będziesz wysyłać 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. (Rysunek 1)

jak wysłać sms z c#
Rysunek 1 - Jak wysłać SMS z C#

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

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

SendSMS.cs
using Ozeki.Libs.Rest;
using System;

namespace SendSms
{
    class Program
    {
        static void Main(string[] args)
        {
            var configuration = new Configuration()
            {
                Username = "http_user",
                Password = "qwe123",
                ApiUrl = "http://127.0.0.1:9509/api"
            };

            var msg = new Message()
            {
                ToAddress = "+36201111111",
                Text = "Hello, World!"
            };

            var api = new MessageApi(configuration);

            var result = api.Send(msg);

            Console.WriteLine(result);
            Console.ReadKey();
        }
    }
}

Jak używać przykładu C# do wysyłania SMS-ów:

Ten przykład C# do wysyłania 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łówka swojego kodu źródłowego C#. To pozwoli Ci korzystać z klas dostarczonych przez bibliotekę Ozeki.Libs.Rest. Możesz użyć klasy Message do tworzenia SMS-ów. 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 SendSMS.cs

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

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

Plik SendSms.cs.zip zawiera bibliotekę Ozeki.Libs.Rest, która dostarcza wszystkie narzędzia niezbędne 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)

katalog send sms cs
Rysunek 2 - Co znajduje się w SendSms.cs.zip

Jak wysłać SMS z C# (Proste wskazówki)

Aby wysłać SMS z C#:

  1. Zainstaluj użytkownika HTTP API
  2. Włącz Logowanie zdarzeń komunikacyjnych w zakładce Zaawansowane
  3. Skonfiguruj Visual Studio
  4. Pobierz, a następnie rozpakuj plik SendSms.cs.zip
  5. Otwórz plik SendSms.sln w Visual Studio
  6. Uruchom aplikację Ozeki SMS Gateway
  7. Uruchom kod C# Program.cs w Visual Studio
  8. Sprawdź logi, aby zobaczyć, czy SMS został wysłany

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

Aby móc wysyłać SMS-y z C#, najpierw musisz zainstalować Ozeki SMS Gateway. Bramka SMS może być zainstalowana na tym samym komputerze, na którym tworzysz swój kod C# 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 C#.

URL API HTTP do wysyłania SMS-ów z C#

Aby wysłać SMS z C#, Twój kod C# 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 C# do wysyłania 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 wysyłania SMS-ów z C#

Aby uwierzytelnić klienta SMS w C#, 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 C#

Aby wysłać wiadomości SMS, należy dołączyć następujące linie jako nagłówki w żądaniu HTTP. Należy zauważyć, że zawieramy typ zawartości i nagłówek Autoryzacji.

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

Żądanie HTTP do wysyłania SMS z C#

Aby przesłać SMS, Twoja aplikacja C# wyśle żądanie HTTP podobne do poniższego. Należy zauważyć, ż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": "b570dbae-3a05-456d-9dad-a02161b16f1c",
      "to_address": "+36201111111",
      "text": "Hello, World!",
      "create_date": "2021-06-11 11:20:02",
      "valid_until": "2021-06-18 11:20:02",
      "time_to_send": "2021-06-11 11:20:02",
      "submit_report_requested": true,
      "delivery_report_requested": true,
      "view_report_requested": true,
      "tags": []
    }
  ]
}

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

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 formacie 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 11:17:49 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": "b570dbae-3a05-456d-9dad-a02161b16f1c",
        "from_station": "%",
        "to_address": "+36201111111",
        "to_station": "%",
        "text": "Hello, World!",
        "create_date": "2021-06-11 11:20:02",
        "valid_until": "2021-06-18 11:20:02",
        "time_to_send": "2021-06-11 11:20:02",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      }
    ]
  }
}

Podłącz swoją bramkę SMS do sieci komórkowej i utwórz konto użytkownika HTTP API

Zakładamy, że masz już zainstalowaną bramkę SMS Ozeki i podłączoną do sieci komórkowej. Aby móc wysyłać SMS na telefon komórkowy z C#, musisz skonfigurować konto użytkownika HTTP API w bramce SMS Ozeki.

Utwórz nowego użytkownika (Samouczek wideo)

Ten film pokazuje, jak skonfigurować nowe konto użytkownika HTTP API. Zaczyna się od strony głównej bramki SMS Ozeki i kończy na zakładce Zdarzenia nowego użytkownika. Film pokaże Ci, jak utworzyć i skonfigurować nowego użytkownika. Wspaniałą rzeczą w tym filmie jest to, że trwa tylko 30 sekund, ale zawiera wszystkie informacje potrzebne do utworzenia nowego użytkownika HTTP API.

Wideo 1 - Jak skonfigurować konto użytkownika HTTP API (Samouczek wideo)

Jak wysłać SMS z C# przy użyciu API SMS w C# (Samouczek wideo)

Ten film pokazuje, jak pobrać plik SendSms.cs.zip z tej strony i jak pobrać jego zawartość w Visual Studio. Jeśli obejrzysz film, zauważysz, że zawartość pliku zip SendSms.cs jest umieszczana na pulpicie systemu Windows. Zobaczysz również, że klikamy dwukrotnie na plik rozwiązania SendSms.sln, aby otworzyć rozwiązanie. Visual Studio wyświetli niektóre ostrzeżenia, ponieważ plik pochodzi z internetu. Po prostu kliknij OK, aby pominąć te ostrzeżenia.

Wideo 2 - Jak pobrać i uruchomić przykładowy projekt (Samouczek wideo)

Przykład SMS w C#: 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 jest tylko jeden projekt: SendSms.csproj i jeden plik: Program.cs.

Rysunek 2 - SendSms.sln

Jak sprawdzić, czy SMS został zaakceptowany przez użytkownika HTTP (Samouczek wideo)

Po wysłaniu SMS-a warto sprawdzić bramkę SMS, aby zobaczyć, 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ę. Film rozpoczyna się od otwartego kodu i kończy na szczegółach wysłanej wiadomości. Dowiesz się, jak uruchomić projekt, jak wygląda projekt podczas działania i jak wygląda plik dziennika po jego zakończeniu. Film trwa tylko 42 sekundy i jest łatwy do zrozumienia. Nie będziesz miał problemu z jego śledzeniem.

Wideo 3 - Jak wysłać SMS za pomocą powyższego kodu C# (Samouczek wideo)

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

Ostatnim krokiem weryfikacji procedury jest sprawdzenie logów 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 treść wysłanej wiadomości.

Sprawdź, czy żądanie zostało zaakceptowane (Samouczek wideo)

W poniższym filmie zobaczysz, jak sprawdzić, czy klient SMPP pomyślnie wysłał wiadomość. Dowiesz się, jak otworzyć zakładkę zdarzeń użytkownika SMPP i na co zwrócić uwagę. Film trwa tylko 18 sekund, ale będzie bardzo pomocny.

Wideo 4 - Jak sprawdzić, czy żądanie zostało zaakceptowane przez klienta SMPP (Samouczek wideo)

SMS odebrany na telefonie (Samouczek wideo)

W poniższym filmie zobaczysz, jak wygląda przychodząca wiadomość wysłana z Ozeki SMS Gateway. Zacznie się od ekranu głównego telefonu z systemem Android i zakończy otwartą wiadomością. Film trwa tylko 18 sekund i możesz zobaczyć cały proces odbierania wiadomości.

Wideo 5 - Jak wygląda przychodząca wiadomość z Ozeki SMS Gateway (Samouczek wideo)

Uruchamianie przykładu SMS w C# na Windows

Kiedy używasz systemu Windows do uruchomienia tego przykładu SMS napisanego w C#, zauważysz, że uzyskujesz nieco lepszą wydajność niż w przypadku uruchomienia go na Linuxie. Aby zrozumieć, dlaczego tak się dzieje, należy pamiętać, że C# wykorzystuje framework .NET do wykonania kodu. Dzieje się tak dlatego, że 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 przewodnik wyjaśnił kroki wysyłania SMS-ów z C#. Jak widać, Ozeki zapewnia wszystkie narzędzia potrzebne do dostarczania wiadomości, więc jeśli kroki zostały wykonane starannie, wysyłanie wiadomości z C# nie jest już problemem. Ozeki SMS Gateway odgrywa ogromną rolę w dostarczaniu wiadomości – bez tego programu nie można by dotrzeć do użytkowników mobilnych. Warto zauważyć, że Ozeki SMS Gateway działa w każdym kraju, więc wiadomości można wysyłać międzynarodowo za pomocą tego rozwiązania.

Nie kończ czytania tutaj, przejrzyj stronę samouczków Ozeki i dowiedz się więcej o odbieraniu SMS-ów w C#.

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

More information