Jak wysyłać SMS-y z C# przy użyciu SQL Server

Pobierz: Sending_SMS_through_MS_SQL_Server.zip

Zobacz, jak wysyłać SMS-y poprzez wstawianie wierszy do bazy danych Microsoft SQL za pomocą aplikacji C#.NET. Ta technologia jest przeznaczona dla programistów z podstawową wiedzą w zakresie C#.NET i SQL. Pobieralny kod źródłowy pomoże Ci rozpocząć.

W kolejnych rozdziałach znajdziesz wymagane wymagania wstępne oraz szczegółowe wyjaśnienie, jak używać kodu. Pomocny diagram przepływu pracy pokazuje podstawowe połączenie między użytkownikiem aplikacji C# a telefonem odbiorcy.

Kod jest przydatny, jeśli chcesz

  • dodać funkcjonalność SMS do swojej aplikacji C#.
  • zintegrować automatyczne powiadomienia SMS.
  • zabezpieczyć swoje produkty, dodając logowanie za pomocą SMS.

Wymagania wstępne

Wymagania systemowe są wymienione w poniższej tabeli. Proszę pobrać SMS Gateway i zainstalować oprogramowanie SMS Gateway z .NET framework 4.5 oraz Microsoft Visual Studio, aby uruchomić kod.

System operacyjny: Windows 11, Windows 10, Windows 8, Windows 7, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2008 R2, Windows Vista
Podstawowe wymagania programowe: .NET Framework 4.5
Ozeki SMS Gateway
Microsoft SQL Server 2016 Express Edition lub nowsze wersje Microsoft SQL Server
Platforma deweloperska: Microsoft Visual Studio

Jak to działa

Najpierw musisz zainstalować Ozeki SMS Gateway i utworzyć użytkownika bazy danych w SMS Gateway. Połącz użytkownika z bazą danych MSSQL. Wiadomości SMS do wysłania będą SELECT-owane z tabeli wiadomości wychodzących, która domyślnie nazywa się 'ozekimessageout'.

Następnie należy zainstalować środowisko C#.NET. Twoja aplikacja C# może połączyć się z bazą danych MSSQL i wstawiać wiadomości SMS do tabeli wiadomości wychodzących.

Upewnij się, że Twój Ozeki SMS Gateway jest podłączony do sieci GSM poprzez modem GSM lub dowolnego dostawcę usług SMS przez internet. Na przykład CIMD2 lub UCP/EMI są bardzo popularnymi połączeniami z dostawcami usług.

Zobacz przepływ pracy połączenia C# przez MSSQL na Rysunku 1.

przepływ wiadomości z telefonu komórkowego do aplikacji c sharp i odwrotnie
Rysunek 1 - Przepływ wiadomości z telefonu komórkowego do aplikacji C# i odwrotnie

Zasadniczo, Microsoft SQL Server może być dostępny zarówno z Twojej aplikacji C# jak i Ozeki SMS Gateway. Wszystkie przychodzące i wychodzące wiadomości są przechowywane na serwerze MSSQL do dalszego użycia.

Dodając odpowiedni kod do swojej aplikacji C#, możesz połączyć ją z bazą danych SQL, aby umożliwić wstawianie nowych wierszy do tabeli wiadomości wychodzących i odczytywanie wiadomości przychodzących.

Użytkownik bazy danych Ozeki SMS Gateway może odczytywać tabelę wiadomości wychodzących w celu wysyłania SMS-ów i wstawiać nowe wiersze do tabeli wiadomości przychodzących, aby inni użytkownicy mogli je odczytać. Na przykład użytkownik aplikacji C# może je odczytać.

Jak skonfigurować serwer MSSQL

Krok 1: Zainstaluj Microsoft SQL Server 2016 Express Edition
Krok 2: Uruchom Microsoft SQL Server 2016 Express Edition i zaloguj się.
Krok 3: Włącz uwierzytelnianie serwera, aby zawsze wymagało pary użytkownik bazy danych i hasło. (Krótki samouczek pomocy)
Krok 4: Utwórz bazę danych i przyznaj użytkownikowi uprawnienia select, insert, update, delete. (Krótki samouczek pomocy)

Dodaj użytkownika bazy danych do Ozeki SMS Gateway

Krok 1: Uruchom Ozeki 10 Pomoc obrazkowa)
Krok 2: Uruchom Ozeki SMS Gateway z pulpitu Ozeki 10.
Krok 3: Zainstaluj użytkownika bazy danych i ustaw ciąg połączenia. (Krótki samouczek pomocy)

Użyj pobranego kodu C#

Krok 1: Pobierz plik zip i rozpakuj go.
Krok 2: Ustaw dane połączenia z bazą danych SQL w pliku 'DatabaseHandling.cs'. (Krótki samouczek pomocy)
Krok 3: Uruchom usługę Ozeki 10, jeśli nie jest uruchomiona. (Krótki samouczek pomocy)
Krok 4: Skompiluj i uruchom projekt w Microsoft Visual Studio
Krok 5: Pojawi się okno. Kliknij przycisk Compose message.
Wypełnij pola odbiorcy i tekstu wiadomości i kliknij 'Send'. (Krótki samouczek pomocy)

Jak działa przykładowy kod

Pobieralny kod na górze strony może wstawiać wiadomości do tabeli 'ozekimessageout'. Baza danych Ozeki SMS Gateway okresowo sprawdza 'ozekimessageout', aby znaleźć nowe wiersze wiadomości i wysłać je na telefon odbiorcy. Każdy wiersz wiadomości ma atrybut statusu. Po wysłaniu wiadomości SMS status zmieni się z 'Send' na 'Sent'.

Nie zapomnij sprawdzić, czy Twój serwer Microsoft SQL jest uruchomiony, i zmodyfikuj dane połączenia serwera w pliku 'DatabaseHandling.cs', który znajdziesz w przykładowym projekcie.

Klasy C# przykładowego kodu

MainForm.cs (Rysunek 2):
Ta klasa zawiera pierwsze okno, które się otwiera. Jak widać na Rysunku 2, może wyświetlać zawartość dwóch tabel. Zawartość jest odczytywana za pomocą instrukcji SELECT z 'ozekimessageout' i 'ozekimessagein'. Zawiera również dwa przyciski 'Odśwież' oraz przycisk 'Napisz wiadomość'. Naciśnij go, aby użyć następnej klasy, 'ComposeMessageForm.cs'.

interfejs graficzny wygenerowany z mainform cs
Rysunek 2 - Interfejs graficzny wygenerowany z 'MainForm.cs'

ComposeMessageForm.cs (Rysunek 3):
To jest następna strona, gdzie możesz wypełnić niezbędne pola danych, aby utworzyć nową wiadomość.

interfejs graficzny wygenerowany z composemessageform cs
Rysunek 3 - Interfejs graficzny wygenerowany z 'ComposeMessageForm.cs'

DatabaseHandling.cs:
Tutaj możesz ustawić połączenie z bazą danych (Rysunek 4) i odświeżyć tabele w 'MainForm.cs'.

ustawienia połączenia z bazą danych w databasehandling cs
Rysunek 4 - Ustawienia połączenia z bazą danych w 'DatabaseHandling.cs'

Jak działa kod wysyłający wiadomość

W 'ComposeMessageForm.cs' możesz wypełnić dwa pola: adres odbiorcy i tekst wiadomości. Naciskając 'Wyślij', możesz uruchomić następujący kod:

ComposeMessageForm.cs
...
private void buttonSend_Click(object sender, EventArgs e)
{
    CheckAndSendMessage();
}

private void CheckAndSendMessage()
{
    if (textBoxRecipient.Text == "")
    {
        MessageBox.Show("Pole odbiorcy nie może być puste!",
                    "Nieprawidłowa wartość pola");
        return;
    }

    string errorMsg = "";
    DatabaseHandling.insertMessage(textBoxRecipient.Text,
                textBoxMessageText.Text, out errorMsg);

    MessageBox.Show(errorMsg, "Wynik wstawiania wiadomości");
}
...
Rysunek 5 - Sprawdza, czy pole odbiorcy jest puste

Metoda CheckAndSendMessage() jest wywoływana przez 'buttonSend_Click(...)'. Metoda zaczyna od sprawdzenia pola odbiorcy i uruchamia insertMessage(...) z 'DatabaseHandling.cs', jeśli pole odbiorcy NIE jest puste (Rysunek 5). insertMessage(...) może wstawić nowy wiersz do tabeli 'ozekimessageout' (Rysunek 6) (Domyślna wartość atrybutu msgtype to SMS:TEXT). Ozeki SMS Gateway odczyta wiersze z serwera SQL, jak widać na diagramie przepływu pracy powyżej.

DatabaseHandling.cs
...
public static void insertMessage(string receiver, string messageText,
            out string errorMsg)
{
    Connect(out errorMsg);
    if (errorMsg != "")
       return;

    try
    {
       SqlCommand sqlComm = sqlConn.CreateCommand();
       sqlComm.CommandText = "insert into ozekimessageout " +
                    "(msgtype,receiver,msg,status) " +
                    "values ('SMS:TEXT','" + receiver + "','" +
                    messageText + "','send');";
       if (sqlComm.ExecuteNonQuery() == 0)
       {
            errorMsg = "Wstawienie NIE powiodło się!";
       }
       else
       {
            errorMsg = "Wstawienie powiodło się!";
       }
    }
    catch (Exception e)
    {
        errorMsg = e.Message;
    }

    CloseConnection();
}
...
Rysunek 6 - Wstawia wiadomość do Twojej bazy danych SQL

Możesz użyć innych typów wiadomości niż 'SMS:TEXT' (np. 'SMS:WAPPUSH', 'SMS:VCARD'), jak widać na Rysunku 7.

...
sqlComm.CommandText = "insert into ozekimessageout " +
                    "(msgtype,receiver,msg,status) " +
                    "values ('SMS:WAPPUSH','" + receiver + "','" +
                    messageText + "','send');";
...
Rysunek 7 - Typ wiadomości zmieniony z 'SMS:TEXT' na 'SMS:WAPPUSH'

Często zadawane pytania

Pytanie: Czy ten przykład w C# może działać na innym komputerze niż maszyna Ozeki SMS Gateway lub serwer MSSQL?
Odpowiedź: Tak, może. Zmodyfikuj adres IP w 'DatabaseHandling.cs' na adres IP Twojego serwera MSSQL.

Pytanie: Czy mogę zmienić numer telefonu nadawcy?
Odpowiedź: Tak. Proszę również wstawić numer nadawcy do wiersza wiadomości (Rysunek 8).
Działa to tylko w przypadku posiadania połączenia IP SMS.

...
string SenderNumber = "+449876543";
sqlComm.CommandText = "insert into ozekimessageout " +
                    "(msgtype,sender,receiver,msg,status) " +
                    "values ('SMS:TEXT','" + SenderNumber + "','" + receiver + "','" +
                    messageText + "','send');";
...
Rysunek 8 - Zmodyfikowana instrukcja INSERT INTO z dodatkowym atrybutem 'sender'

Podsumowanie

W tym artykule wyjaśniono, jak wysyłać SMS-y z C# przy użyciu SQL Servera. Oznacza to, że możesz wysłać SMS-a, wstawiając wiersz do bazy danych Microsoft SQL. Ten system wykorzystuje aplikację C#.NET. Wysyłanie SMS-a z SQL Servera oznacza, że możesz użyć języka SQL do wyszukiwania wiadomości lub zarządzania SMS-ami. Znacznie poprawi to efektywność komunikacji w Twojej organizacji i przyspieszy przepływ informacji.

Jeśli chcesz dowiedzieć się więcej o technologii oferowanej przez Ozeki, odwiedź stronę internetową Ozeki. Radzimy zacząć od C# SMS API. Więcej informacji o C# SMS API Ozeki znajdziesz w tym artykule. Następnie, jeśli chcesz wysyłać SMS-y za pomocą HTTP SMS API, odwiedź ten artykuł: HTTP SMS API.

Aby rozpocząć wysyłanie SMS-ów za pomocą API, pobierz Ozeki SMS Gateway już teraz i zacznij pracę!

More information