Cum să trimiți SMS din C# folosind SQL Server

Descărcare: Sending_SMS_through_MS_SQL_Server.zip

Aflați cum să trimiteți SMS prin inserarea de rânduri într-o bază de date Microsoft SQL printr-o aplicație C#.NET. Această tehnologie este destinată dezvoltatorilor cu cunoștințe de bază în C#.NET și SQL. Codul sursă descărcabil vă ajută să începeți.

În capitolele următoare puteți găsi cerințele preliminare și o explicație detaliată despre cum să utilizați codul. O diagramă utilă a fluxului de lucru vă arată conexiunea de bază între utilizatorul aplicației C# și telefonul destinatarului.

Codul este util pentru cei care doresc să

  • adauge funcționalitate SMS în aplicația C#.
  • integreze notificări SMS automate.
  • securizeze produsele prin adăugarea autentificării prin SMS.

Cerințe preliminare

Cerințele software ale sistemului sunt enumerate în tabelul următor. Vă rugăm să descărcați SMS Gateway și să instalați software-ul SMS Gateway cu .NET framework 4.5 și Microsoft Visual Studio pentru a rula codul.

Sistem de operare: Windows 11, Windows 10, Windows 8, Windows 7, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2008 R2, Windows Vista
Cerințe software de bază: .NET Framework 4.5
Ozeki SMS Gateway
Microsoft SQL Server 2016 Express Edition sau versiuni mai noi de Microsoft SQL Server
Platformă de dezvoltare: Microsoft Visual Studio

Cum funcționează

Mai întâi trebuie să instalați Ozeki SMS Gateway și să creați un Utilizator de Bază de Date în SMS Gateway. Conectați utilizatorul la baza de date MSSQL. Mesajele SMS de trimis vor fi SELECT-ate din tabela SQL a mesajelor de ieșire, care implicit se numește 'ozekimessageout'.

Apoi ar trebui să instalați un mediu C#.NET. Aplicația dvs. C# se poate conecta la baza de date MSSQL și să insereze mesaje SMS în tabela de mesaje de ieșire.

Asigurați-vă că Ozeki SMS Gateway este conectat la rețeaua GSM printr-un modem GSM sau prin orice furnizor de servicii SMS prin IP pe internet. De exemplu, CIMD2 sau UCP/EMI sunt conexiuni populare la furnizori de servicii.

Vedeți fluxul de lucru al conexiunii C# prin MSSQL în Figura 1.

fluxul mesajelor de la un telefon mobil la aplicația dvs. C sharp și invers
Figura 1 - Fluxul mesajelor de la un telefon mobil la aplicația dvs. C# și invers

Deci, practic, Microsoft SQL Server poate fi accesat atât din aplicația dvs. C# cât și din Ozeki SMS Gateway. Toate mesajele primite și trimise sunt stocate pe serverul MSSQL pentru utilizare ulterioară.

Prin adăugarea codurilor adecvate în aplicația dvs. C#, o puteți conecta la baza de date SQL pentru a putea INSERA rânduri noi în tabela de mesaje de ieșire și a citi mesajele primite.

Utilizatorul de Bază de Date al Ozeki SMS Gateway poate citi tabela de mesaje de ieșire pentru a trimite mesaje SMS și poate INSERA rânduri noi în tabela de mesaje primite pentru ca alți utilizatori să le citească. De exemplu, utilizatorul aplicației C# le poate citi.

Cum să configurați serverul MSSQL Pasul 1: Instalați Microsoft SQL Server 2016 Express Edition
Pasul 2: Porniți Microsoft SQL Server 2016 Express Edition și conectați-vă.
Pasul 3: Activați autentificarea pe server, astfel încât să solicite întotdeauna o pereche de utilizator și parolă pentru bază de date. (Tutorial scurt de ajutor)
Pasul 4: Creați o bază de date și acordați permisiuni de selectare, inserare, actualizare, ștergere unui utilizator. (Tutorial scurt de ajutor) Adăugați un Utilizator de Bază de Date în Ozeki SMS Gateway Pasul 1: Porniți interfața grafică Ozeki 10 Ajutor cu imagini)
Pasul 2: Porniți Ozeki SMS Gateway din desktopul Ozeki 10.
Pasul 3: Instalați un Utilizator de Bază de Date și setați șirul de conexiune. (Tutorial scurt de ajutor) Utilizați codul C# descărcat Pasul 1: Descărcați fișierul zip și dezarhivați-l.
Pasul 2: Setați datele de conexiune la baza de date SQL în 'DatabaseHandling.cs'. (Tutorial scurt de ajutor)
Pasul 3: Porniți serviciul Ozeki 10 dacă nu rulează. (Tutorial scurt de ajutor)
Pasul 4: Construiți și rulați proiectul în Microsoft Visual Studio
Pasul 5: Va apărea o fereastră. Faceți clic pe butonul Compune mesaj.
Completați câmpurile destinatar și textul mesajului și faceți clic pe 'Trimite'. (Tutorial scurt de ajutor)

Cum funcționează codul exemplu

Codul descărcabil de la partea de sus a paginii poate insera mesaje în tabela 'ozekimessageout'. Utilizatorul de bază de date al Ozeki SMS Gateway verifică periodic 'ozekimessageout' pentru a găsi rânduri noi de mesaje și le trimite la telefonul destinatarului. Fiecare rând de mesaj are un atribut de stare. După trimiterea mesajului SMS, starea se va schimba din 'Send' în 'Sent'.

Nu uitați să verificați dacă serverul dvs. Microsoft SQL este pornit și funcționează și modificați detaliile de conectare la server în 'DatabaseHandling.cs', pe care le puteți găsi în proiectul exemplu.

Clasele C# ale codului exemplu

MainForm.cs (Figura 2):
Această clasă conține prima fereastră care se deschide. După cum puteți vedea în Figura 2, poate afișa conținutul a două tabele. Acest conținut este citit printr-o instrucțiune SELECT din 'ozekimessageout' și 'ozekimessagein'. De asemenea, conține două butoane 'Refresh' și un buton 'Compose message'. Apăsați-l pentru a utiliza următoarea clasă, 'ComposeMessageForm.cs'.

interfața generată din mainform cs
Figura 2 - Interfața generată din 'MainForm.cs'

ComposeMessageForm.cs (Figura 3):
Aceasta este următoarea pagină unde puteți completa câmpurile de date necesare pentru a crea un mesaj nou.

interfața generată din composemessageform cs
Figura 3 - Interfața generată din 'ComposeMessageForm.cs'

DatabaseHandling.cs:
Aici puteți seta conexiunea la baza de date (Figura 4) și actualiza tabelele din 'MainForm.cs'.

setările de conexiune la baza de date în databasehandling cs
Figura 4 - Setările de conexiune la baza de date din 'DatabaseHandling.cs'

Cum funcționează codul de trimitere a mesajelor

În 'ComposeMessageForm.cs' puteți completa cele două câmpuri cu adresa destinatarului și textul mesajului. Prin apăsarea butonului 'Send', puteți porni următorul cod:

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

private void CheckAndSendMessage()
{
    if (textBoxRecipient.Text == "")
    {
        MessageBox.Show("Câmpul destinatar nu poate fi gol!",
                    "Valoare incorectă a câmpului");
        return;
    }

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

    MessageBox.Show(errorMsg, "Rezultatul inserării mesajului");
}
...
Figura 5 - Verifică dacă câmpul destinatarului este gol

Metoda CheckAndSendMessage() este apelată de 'buttonSend_Click(...)'. Metoda începe prin verificarea câmpului destinatarului și rulează insertMessage(...) din 'DatabaseHandling.cs' dacă câmpul destinatarului NU este gol (Figura 5). insertMessage(...) poate insera un nou rând în tabela 'ozekimessageout' (Figura 6) (Valoarea implicită a atributului msgtype este SMS:TEXT). Ozeki SMS Gateway va citi rândurile din serverul SQL, așa cum puteți vedea în diagrama de flux mai sus.

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 = "Inserarea a eșuat!";
       }
       else
       {
            errorMsg = "Inserarea a reușit!";
       }
    }
    catch (Exception e)
    {
        errorMsg = e.Message;
    }

    CloseConnection();
}
...
Figura 6 - INSEREAZĂ mesajul în baza de date SQL

Puteți utiliza alte tipuri de mesaje decât 'SMS:TEXT' (de ex. 'SMS:WAPPUSH', 'SMS:VCARD'), așa cum puteți vedea în Figura 7.

...
sqlComm.CommandText = "insert into ozekimessageout " +
                    "(msgtype,receiver,msg,status) " +
                    "values ('SMS:WAPPUSH','" + receiver + "','" +
                    messageText + "','send');";
...
Figura 7 - Tipul mesajului schimbat din 'SMS:TEXT' în 'SMS:WAPPUSH'

Întrebări frecvente

Întrebare: Poate acest exemplu C# să ruleze pe un alt computer decât mașina Ozeki SMS Gateway sau serverul MSSQL?
Răspuns: Da, poate. Vă rugăm să modificați adresa IP din 'DatabaseHandling.cs' în adresa IP a serverului dvs. MSSQL.

Întrebare: Pot schimba numărul de telefon al expeditorului?
Răspuns: Da. Vă rugăm să INSERAȚI și numărul expeditorului în rândul mesajului (Figura 8).
Funcționează doar dacă aveți o conexiune IP SMS.

...
string SenderNumber = "+449876543";
sqlComm.CommandText = "insert into ozekimessageout " +
                    "(msgtype,sender,receiver,msg,status) " +
                    "values ('SMS:TEXT','" + SenderNumber + "','" + receiver + "','" +
                    messageText + "','send');";
...
Figura 8 - Instrucțiunea INSERT INTO modificată cu un atribut suplimentar 'sender'

Rezumat

Acest articol a explicat cum să trimiți SMS din C# folosind un SQL Server. Aceasta înseamnă că puteți trimite un SMS prin inserarea unui rând într-o bază de date Microsoft SQL. Acest sistem utilizează o aplicație C#.NET. Trimiterea unui SMS dintr-un SQL Server înseamnă că puteți utiliza limbajul SQL pentru a căuta un mesaj sau pentru a gestiona mesajele SMS. Acest lucru va îmbunătăți semnificativ eficiența comunicării în cadrul organizației dumneavoastră și va accelera fluxul de informații.

Dacă doriți să aflați mai multe despre tehnologia oferită de Ozeki, vizitați site-ul web Ozeki. Vă recomandăm să începeți cu API-ul SMS pentru C#. Veți afla mai multe despre API-ul SMS pentru C# Ozeki în acest articol. Apoi, dacă doriți să trimiteți SMS folosind API-ul HTTP SMS, vizitați acest articol: API-ul HTTP SMS.

Pentru a începe să trimiteți mesaje SMS folosind API-uri, descărcați Ozeki SMS Gateway acum și începeți lucrul!

More information