Jak odbierać SMS-y w C#

Ten artykuł zawiera informacje na temat odbierania SMS-ów w C# przy użyciu Ozeki C# SMS API. Zawiera przykładowy kod, który możesz wykorzystać, oraz opisuje kroki, które należy wykonać. Wykonanie tych kroków zajmuje około 5 minut. W skrócie, aby odebrać SMS za pomocą C# SMS API, należy zarejestrować się w zdarzeniu OnMessages received i napisać metodę obsługi zdarzenia, która będzie przetwarzać przychodzące SMS-y wysłane przez bramkę SMS Ozeki. Czytaj dalej, aby dowiedzieć się więcej o tej procedurze!

Dlaczego chcesz odbierać SMS-y w C#?

Istnieje wiele powodów, dla których warto odbierać SMS-y w C#. Możesz chcieć zbierać dane z czujników lub od użytkowników mobilnych, tworzyć usługi SMS, które wysyłają odpowiedzi z informacjami, lub po prostu prosić użytkowników o potwierdzenie otrzymania SMS-a.

Wymagania wstępne

Jak odbierać SMS-y w C# (Szybkie kroki)

Jak odbierać SMS-y w C#
  1. Pobierz przykład odbierania SMS w C#
  2. Otwórz rozwiązanie w Visual Studio
  3. Połącz się z bramką SMS Ozeki
  4. Odbierz symulowany SMS w C#
  5. Połącz się z siecią komórkową
  6. Odbierz SMS w C#, który został wysłany z telefonu
  7. Sprawdź logi w bramce SMS
  8. Sprawdź raport dostarczenia na swoim telefonie

odbieranie sms w c#
Rysunek 1 - Odbieranie SMS w C#

Przykładowy kod C# do odbierania wiadomości tekstowych

Poniższy przykład kodu C# do obsługi SMS-ów przedstawia najważniejsze kroki, które należy podjąć, aby utworzyć usługę odbierania SMS-ów. Ozeki C# SMS API jest dostępne bezpłatnie. Możesz modyfikować bibliotekę API, przykłady, które są z nią dostarczone, oraz używać jej w swoim projekcie i swobodnie rozpowszechniać ją lub jej pochodne. Poniższy przykład pokazuje, jak zasubskrybować zdarzenie OnMessageReceived w C# oraz jak je obsłużyć. Przykład wypisuje przychodzącą wiadomość SMS na konsolę.


class Program
{
    static OzxClient Client;

    static void Main(string[] args)
    {
        Client = new OzxClient();
        Client.AutoReconnect = true;
        Client.OnMessageReceived += Client_OnMessageReceived;
        
        Client.Connect("127.0.0.1",9580,"testuser","testpass");
    }

    static void Client_OnMessageReceived(object sender, OzxArgs<IOzxMessage> e)
    {
        Console.WriteLine("Odebrano wiadomość: " + e.Item.ToString());
    }
}

Parametr e.Item to pełna wiadomość OzxMessage. Oznacza to, że masz wszystkie szczegóły wiadomości SMS w swoim zdarzeniu C# SMS API. Te szczegóły obejmują identyfikator nadawcy SMS-a, numer telefonu, na który został wysłany SMS, tekst SMS-a oraz odpowiednie znaczniki czasu.

Jedną z największych zalet korzystania z Ozeki C# SMS API jest to, że otrzymujesz przychodzące wiadomości SMS natychmiast. Gdy tylko trafią do bramki SMS, są przekazywane do Twojego klienta SMS w C# poprzez ustalone połączenie TCP/IP. Oznacza to, że nie doświadczysz żadnych opóźnień.

Jeśli Twój klient C# SMS API nie jest połączony z bramką SMS w momencie odbioru SMS-a, wiadomość jest przechowywana w folderze skrzynki odbiorczej bramki SMS. Oznacza to, że Twoje przychodzące wiadomości nie zostaną utracone, nawet jeśli napisane przez Ciebie oprogramowanie SMS przy użyciu C# SMS API jest offline. Wynika to z faktu, że Bramka SMS Ozeki jest w rzeczywistości serwerem SMS.

Krok 1 - Pobierz bibliotekę Ozeki C# SMS

Przejdź do https://ozeki-sms-gateway.com/attachments/5755/OzekiConsole.zip i pobierz plik zip za pomocą przeglądarki. Plik zip trafi do Twojego katalogu Pobrane (Rysunek 2). Możesz otworzyć pobrany plik bezpośrednio w Eksploratorze Windows. Pobrany pakiet zip będzie zawierał przykładowy kod, którego możesz użyć do odbierania SMS-ów w C#.

pobrana biblioteka SMS Ozeki
Rysunek 2 - Pobrana biblioteka SMS Ozeki

Krok 2 - Wypakuj bibliotekę C# SMS

Wypakuj bibliotekę C# SMS, klikając prawym przyciskiem myszy na plik OzekiConsole.zip (Rysunek 2). Spowoduje to wyświetlenie menu kontekstowego. W menu kontekstowym wybierz "Wypakuj wszystko...". Spowoduje to wyświetlenie okna dialogowego "Wypakuj", w którym należy kliknąć Wypakuj.

Kliknij przycisk "Wypakuj" w oknie dialogowym "Wypakuj wszystko" (Rysunek 3).

Wypakuj przykład odbierania SMS w C#
Rysunek 3 - Wypakuj przykład odbierania SMS w C#

Krok 3 - Otwórz projekt w Visual Studio

Otwórz folder OzekiConsole. Ten folder pojawi się po wypakowaniu pakietu OzekiConsol.zip. W folderze OzekiConsole kliknij dwukrotnie na plik OzekiConsole.sln. Spowoduje to wyświetlenie okna dialogowego "Jak chcesz otworzyć ten plik?". W tym oknie wybierz "Visual Studio". Po wybraniu Visual Studio kliknij OK, aby otworzyć przykładowy projekt w C#. (Rysunek 4)

Otwórz przykład odbierania SMS w C# w Visual Studio
Rysunek 4 - Otwórz przykład odbierania SMS w C# w Visual Studio

Krok 4 - Kliknij Program.cs

Otwórz Program.cs, klikając na plik w eksploratorze rozwiązań po lewej stronie ekranu. Jest to główny kod przykładowego projektu w C#. Ten kod zawiera przykłady, jak wysyłać SMS-y z C# oraz jak odbierać SMS-y w C#. Kod nie jest zbyt długi, ma około 300 linii. Demonstruje pełną funkcjonalność API SMS w C#. (Rysunek 5)

Załaduj Program.cs do edytora
Rysunek 5 - Załaduj Program.cs do edytora

Krok 5 - Ustaw punkt przerwania w kodzie odbiorcy SMS

Znajdź procedurę obsługi zdarzenia OnMessageReceived i ustaw punkt przerwania na początku linii procedury. Ten punkt przerwania da Ci możliwość przechwycenia zdarzenia OnMessageReceived. Zdarzenie OnMessageReceived jest wyzwalane, gdy Twój klient SMS w C# odbiera wiadomość SMS z bramki SMS. (Rysunek 6)

ustaw punkt przerwania w zdarzeniu on sms received
Rysunek 6 - ustaw punkt przerwania w zdarzeniu on message received

Krok 6 - Utwórz konto użytkownika OZX dla API SMS

Aby umożliwić przykładowemu projektowi API SMS w C# połączenie z bramką SMS, musisz utworzyć konto użytkownika OZX w bramce SMS. Aby to zrobić, przejdź do konsoli zarządzania bramką SMS, otwierając adres URL https://127.0.0.1:9515 i kliknij link „Dodaj nowego użytkownika/aplikację” po prawej stronie ekranu. (Rysunek 7)

Utwórz konto użytkownika SMS do odbierania wiadomości tekstowych
Rysunek 7 - Utwórz konto użytkownika SMS do odbierania wiadomości tekstowych w C#

Link „Dodaj nowego użytkownika/aplikację” wyświetli listę typów użytkowników, które można zainstalować. Musisz znaleźć na liście konto użytkownika OZX. Konto użytkownika OZX wykorzystuje wysoko zoptymalizowany protokół SMS, który pozwala Twojej aplikacji SMS w C# komunikować się z bramką SMS przez sieć. Ponieważ bramka SMS i klient SMS w C# komunikują się przez sieć, możesz odbierać wiadomości tekstowe w swoim projekcie C#, nawet jeśli projekt jest uruchomiony na innym komputerze. (Rysunek 8)

zainstaluj konto użytkownika API SMS w C#
Rysunek 8 - Kliknij zainstaluj, aby zainstalować konto użytkownika API SMS w C# (użytkownik OZX)

Podaj nazwę użytkownika i hasło. W naszym przykładzie używamy testuser jako nazwy użytkownika i testpass jako hasła. Klient SMS w C# będzie używał tych poświadczeń do połączenia z bramką SMS. Jeśli chcesz mieć więcej niż jedno połączenie API SMS w C#, możesz utworzyć wiele kont użytkowników OZX. Każde konto użytkownika będzie hostować własnego klienta API SMS w C#. Aby zdecydować, który klient SMS w C# odbierze przychodzącą wiadomość SMS, musisz utworzyć trasy przychodzące w tabeli routingu SMS Ozeki. (Rysunek 9)

Ustaw testuser jako nazwę użytkownika API SMS w C#
Rysunek 9 - Ustaw testuser jako nazwę użytkownika API SMS w C#

Włącz opcje logowania dla konta API SMS w C#, aby otrzymywać dzienniki komunikacji. Zalecam najpierw zaznaczenie wszystkich pól wyboru logowania, aby uzyskać szczegółowe informacje o tym, co dzieje się z wiadomością. Jeśli otrzymasz wiadomość tekstową, zobaczysz ją w dzienniku, zanim zostanie przekazana do Twojego klienta SMS w C#. (Rysunek 10)

Włącz logowanie, aby zobaczyć odebrane SMS-y, zanim trafią do klienta SMS w C#
Rysunek 10 - Włącz logowanie, aby zobaczyć odebrane SMS-y, zanim trafią do klienta SMS w C#

Krok 6 - Dodaj nową trasę do symulacji przychodzących SMS

Utwórz nową trasę SMS, aby umożliwić użytkownikowi admin wysyłanie testowych wiadomości SMS do klienta API SMS w C#. Jedną z najlepszych rzeczy w korzystaniu z bramki SMS Ozeki jest to, że pozwala ona zarządzać wiadomościami SMS za pomocą tabeli routingu. Możesz skonfigurować różne połączenia z siecią komórkową i zdecydować, które SMS-y trafią gdzie. W naszym przykładzie chcemy kierować wiadomości SMS pochodzące z konta admin do klienta API SMS w C#. W rzeczywistym systemie nie będziesz kierować SMS-ów z konta admin, zamiast tego będziesz kierować wiadomości SMS otrzymane na połączeniach z siecią komórkową do swojego klienta API SMS w C#.

Aby utworzyć nową trasę SMS, kliknij „Dodaj nową trasę” w panelu sterowania bramki SMS Ozeki (Rysunek 11).

Dodaj nową trasę SMS dla klienta SMS w C#
Rysunek 11 - Dodaj nową trasę SMS

Aby otrzymać wiadomość tekstową podczas pisania kodu SMS w C#, użyjesz formularza kompozycji bramki SMS i wyślesz wiadomość SMS jako użytkownik admin. Trasa SMS, którą utworzymy, będzie kierować wiadomości SMS pochodzące od admin do konta testuser. Konto testuser przekieruje wiadomość SMS do klienta SMS w C# (Rysunek 12).

sms z gui do c#
Rysunek 12 - SMS od admin do klienta C#

Wybierz testuser jako miejsce docelowe dla przychodzących wiadomości SMS w formularzu szczegółów routingu. Ta trasa będzie wysyłać wiadomości SMS od użytkownika admin do testuser. Testuser przekieruje odebrane wiadomości SMS do klienta API w C# (Rysunek 13).

Utwórz trasę SMS do symulacji przychodzących wiadomości tekstowych
Rysunek 13 - Utwórz trasę SMS do symulacji przychodzących wiadomości tekstowych

Krok 7 - Uruchomienie przykładowego projektu C# sms

Aby uruchomić projekt C# sms, należy kliknąć przycisk Start na pasku narzędzi Visual Studio. Po kliknięciu tego przycisku, Visual Studio skompiluje kod i uruchomi go w środowisku deweloperskim. Wykonywanie programu zostanie zatrzymane, gdy algorytm napotka punkt przerwania. Ponieważ nasz przykład to aplikacja konsolowa, po rozpoczęciu wykonywania zobaczysz czarne okno konsoli. (Rysunek 14)

Rysunek 14 - Uruchomienie projektu C# sms api

Wpisz help w oknie konsoli. Tekst pomocy wyświetli dostępne komendy w tym przykładowym projekcie. Pierwszą komendą, której użyjesz, jest connect. Wpisz "connect 127.0.0.1:9580 testuser testpass" w oknie konsoli, aby połączyć swój kod C# sms z Bramką SMS. Zauważ, że 127.0.0.1 oznacza, że bramka SMS działa na tym samym komputerze, co Twój kod C# sms. 9580 to port TCP/IP używany przez bramkę SMS do akceptowania klientów C# sms (użytkowników OZX), a dane testuser i testpass to te, które zdefiniowaliśmy podczas tworzenia konta użytkownika OZX w kroku 6 tego samouczka SMS. (Rysunek 15)

Rysunek 15 - Uruchomienie aplikacji konsolowej C# sms

Po połączeniu z bramką SMS jesteś gotowy do wysłania pierwszej wiadomości SMS do swojego klienta API C#.

Krok 8 - Wyślij testową wiadomość SMS

Wyślij testową wiadomość SMS, klikając przycisk "Nowy" na pasku narzędzi Ozeki w konsoli zarządzania Bramką SMS. Podczas wysyłania testowej wiadomości SMS musisz zdefiniować adres odbiorcy i tekst wiadomości. Na karcie Zaawansowane możesz również zdefiniować identyfikator nadawcy, taki jak alfanumeryczny identyfikator nadawcy dla Twojej wiadomości SMS. (Rysunek 16)

testowa wiadomość SMS, która ma zostać odebrana
Rysunek 16 - Utwórz testową wiadomość SMS, która ma zostać odebrana

Kliknij OK, aby wysłać testową wiadomość SMS. Twoja bramka SMS przedstawi Ci zdarzenia związane z wysłaniem wiadomości SMS i otrzymasz identyfikator wiadomości. Możesz zauważyć ciąg GUID w ostatniej linii Rysunku 17.

Identyfikator wiadomości SMS do użycia w API C# sms
Rysunek 17 - Identyfikator wiadomości SMS do użycia w API C# sms

Po wysłaniu wiadomości SMS przez użytkownika admin jest ona odbierana przez konto użytkownika OZX o nazwie testuser. To konto przekazuje wiadomość SMS do klienta C# sms przez sieć. Klient C# sms odbiera tekst przez połączenie TCP/IP nawiązane przez metodę connect. Jeśli ustawiłeś punkt przerwania w zdarzeniu OnMessageReceived, to w tym momencie wykonywanie programu zostanie wstrzymane.

Krok 9 - Odbierz SMS w konsoli C#

Przeczytaj linię odebranej wiadomości w konsoli C#. Zobaczysz, że wiadomość SMS została wysłana przez admin@localhost na numer telefonu +361111111. Klient API C# sms otrzymał tekst 'Hello c sharp client' (Rysunek 18). Wiadomość tekstowa została przedstawiona klientowi C# w formie zdarzenia C#. Procedura obsługi zdarzenia OnMessageReceived jest wywoływana, gdy to zdarzenie zostanie wywołane, a wiadomość została umieszczona w parametrze wejściowym metody obsługi zdarzenia OzMessageReceived.

odbierz sms w konsoli C#
Rysunek 18 - odbierz sms w konsoli C#

Następną rzeczą, którą chcesz zrobić, jest spojrzenie na log w Bramce SMS.

Krok 10 - Wyświetl logi w Bramce SMS

Otwórz stronę szczegółów użytkownika testuser, klikając na link testuser w panelu sterowania Ozeki SMS Gateway. Przeniesie nas to do dziennika zdarzeń konta testuser. W tym dzienniku zdarzeń spodziewamy się zobaczyć komunikację między klientem C# sms a Bramką SMS. Spodziewamy się również zobaczyć odebraną wiadomość SMS w dzienniku komunikacji. (Rysunek 19)

Rysunek 19 - Otwórz stronę szczegółów użytkownika testuser

Znajdź linię "Received." w zakładce zdarzeń użytkownika testuser. Zobaczysz wiadomość SMS odebraną przez klienta C# sms w tej linii. Możesz zobaczyć datę i czas zdarzenia oraz szczegóły wiadomości. Pod czytelnym wpisem dziennika zobaczysz dziennik komunikacji protokołu OZX. Ten dziennik pozwala na debugowanie komunikacji w przypadku wystąpienia problemów. (Rysunek 20)

Rysunek 20 - sprawdź przychodzącą wiadomość SMS na koncie użytkownika powiązanym z API C# sms

Odbieranie wiadomości tekstowej z sieci komórkowej

W powyższych krokach zasymulowaliśmy przychodzącą wiadomość. Administrator wysłał wiadomość, która została przekazana do przykładu SMS w C#. Kolejnym krokiem jest podłączenie systemu do sieci komórkowej. Masz kilka opcji. Możesz połączyć się z dostawcą usług SMS przez Internet używając bramkę SMS Ozeki 10 na swoim telefonie z Androidem i wykorzystać wbudowane połączenie SMS bramki SMS dla Androida. (Rysunek 21)

Rysunek 21 - Odbieranie SMS za pomocą telefonu z Androidem

Aby powyższe rozwiązanie działało z telefonem z Androidem, wystarczy utworzyć trasę przychodzącą w tabeli routingu SMS Ozeki. Należy utworzyć tę trasę między połączeniem z siecią komórkową a użytkownikiem API SMS w C# (testuser). Aby znaleźć najlepszą metodę połączenia z siecią komórkową dla swojego projektu, zapoznaj się z naszym przewodnikiem jak podłączyć bramkę SMS do sieci komórkowej. (Rysunek 22)

Rysunek 22 - Tabela routingu odbierania SMS

Podsumowanie

To była długa i bardzo szczegółowa lista instrukcji, która pomoże Ci rozpocząć rozwój projektu SMS w C#, który może odbierać wiadomości SMS. Jeśli zaczniesz korzystać z tego rozwiązania, szybko odkryjesz, że jest ono bardzo dobre, jeśli chcesz odbierać wiadomości SMS szybko przez różne połączenia z siecią komórkową. To rozwiązanie działa niezależnie od tego, czy chcesz odbierać SMS przez telefon z Androidem, czy przez łącze SMS IP, takie jak połączenie klienta SMPP.

More information