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
- Zainstalowana bramka SMS Ozeki
- Microsoft Visual Studio
- Przykład odbierania SMS w C# (OzekiConsole.zip)
Jak odbierać SMS-y w C# (Szybkie kroki)
Jak odbierać SMS-y w C#- Pobierz przykład odbierania SMS w C#
- Otwórz rozwiązanie w Visual Studio
- Połącz się z bramką SMS Ozeki
- Odbierz symulowany SMS w C#
- Połącz się z siecią komórkową
- Odbierz SMS w C#, który został wysłany z telefonu
- Sprawdź logi w bramce SMS
- Sprawdź raport dostarczenia na swoim telefonie
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#.
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).
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)
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)
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)
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)
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)
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)
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)
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).
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).
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).
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)
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)
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)
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.
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.
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)
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)
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)
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)
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
- Jak wysyłać SMS-y z C#
- Odbieranie SMS w C#
- C# SMS API - połączenie do wysyłania SMS
- C# SMS API - rozłączenie z bramką SMS
- C# SMS API - utrzymanie połączenia SMS
- C# SMS API - wysyłanie wiadomości tekstowej
- C# SMS API - SMS zaakceptowany do dostarczenia
- C# SMS API - SMS niezaakceptowany do dostarczenia
- C# SMS API - wysłane
- C# SMS API - błąd wysyłania
- C# SMS API - raport dostarczenia pomyślny
- C# SMS API - raport błędu dostarczenia
- C# SMS API - alfanumeryczny identyfikator nadawcy
- C# SMS API - jak użyć krótkiego kodu jako identyfikatora nadawcy
- C# SMS API - klasa wiadomości tekstowej