Sistema di notifica SMS (St. Joseph College)

1. Background

Il St. Joseph College è una scuola secondaria per gli studenti di età compresa tra i 12 ei 19 anni. Il collegio ha 1500 studenti suddivisi in 3 differenti località.

Tutti gli studenti, così come tutti gli insegnanti e le loro postazioni di lavoro, sono tenuti in un singolo dominio Active Directory: 'STJOSEPH.DOM'. Questo Active Directory non è accessibile tramite internet. Tutti gli studenti e gli insegnanti hanno anche i loro indirizzi e-mail e numeri di cellulare definiti in Active Directory.

L'Active Directory viene utilizzato per scoprire quale degli studenti o insegnanti devono essere contattati nei seguenti casi:

2. Individuazione del problema

Attualmente il Collegio San Giuseppe informa gli studenti manualmente l'invio ad ogni studente e / o insegnanti di una e-mail. Hanno un foglio di MS Excel che contiene molte informazioni sugli studenti stessi che vengono mantenuti nella loro Active Directory. Fintanto che mantengono il loro foglio di Excel sincronizzato con le loro informazioni di Active Directory, è possibile, tramite una macro di Excel, generare un elenco di indirizzi e-mail per inviare la notifica.

Questo sistema manuale presenta alcuni inconvenienti:

3. Obiettivi del nuovo sistema

Il nuovo sistema dovrebbe alleviare tutti gli inconvenienti del vecchio sistema e migliorarlo nei modi seguenti:

4. Soluzione ActiveXperts SMS Messaging Server

Per il loro nuovo sistema il reparto IT del St. Joseph College ha deciso di utilizzare ActiveXperts SMS Messaging Server. Hanno scritto il codice per interfacciare il Server SMS Messaging con il loro database di Active Directory utilizzando Visual Basic 6. L'applicazione legge il database di Active Directory e crea i messaggi in uscita per il server di messaggistica SMS. Il server di messaggistica SMS invia gli SMS e E-mail.

La loro applicazione VB6 base utilizza i seguenti componenti e le tecniche:

Figura 1. mostra una schermata dell'applicazione


stjoseph
Figura 1: Applicazione di notifica agli studenti del St. Joseph College

ActiveXperts SMS Messaging Server

Il St. Joseph College esegue ActiveXperts SMS Messaging Server su un server Windows 2003. Questo server è membro del dominio STJOSEPH.DOM.

Uno dei requisiti è il capacità di supportare un alto volume di messaggi SMS ed e-mail, infatti non può richiedere più di 5 minuti inviare un messaggio SMS a centinaia di studenti. Questo flusso non può essere realizzato con un modem GSM (GSM può inviare al massimo solo 1 messaggio ogni 5 secondi). Pertanto, St. Joseph College ha optato per un provider SMPP(Clickatell). La sua velocità è di circa 10 messaggi al secondo.

ActiveXperts SMS Messaging Server è configurato per utilizzare il servizio di SMPP Clickatell. Ciò è stato fatto nel modo seguente:

VB6 codice sorgente

Il reparto software del Collegio ha scritto l'applicazione in Visual Basic 6. L'applicazione è costituita da una finestra di dialogo modale con i seguenti campi:

Il codice sorgente completo del programma di notifica agli studenti del St. Joseph College

Option Explicit

Dim g_Constants, g_MessageDB

Private Sub BTN_COUNTSTUDENTS_Click()
On Error Resume Next
    Dim objOU, numCount, objStudent
    MousePointer = vbHourglass
    Set objOU = GetObject(TXT_LDAPSTRING)
    If (objOU Is Nothing) Then
        MsgBox "Unable to access the OU on the specified Domain Controller.", vbCritical, _
        "St. Joseph"
    Else
        numCount = 0
        For Each objStudent In objOU
            numCount = numCount + 1
        Next
        MsgBox "Number of students in selected OU: " & numCount, vbOKOnly, "St. Joseph"
        Set objOU = Nothing
    End If
    MousePointer = vbDefault
End Sub


Private Sub BTN_SHOWSTUDENTS_Click()
On Error Resume Next
    Dim objOU, strStudents, objStudent
    MousePointer = vbHourglass
    Set objOU = GetObject(TXT_LDAPSTRING)
    If (objOU Is Nothing) Then
        MsgBox "Unable to access the OU on the specified Domain Controller.", vbCritical, _
        "St. Joseph"
    Else
        strStudents = ""
        For Each objStudent In objOU
            strStudents = strStudents & objStudent.Name & " (" & _
            "Mobile:" & objStudent.Mobile & "; " & _
            "E-mail:" & objStudent.Mail & ")" & vbCrLf
        Next
        MsgBox "Students in selected OU: " & vbCrLf & _
		       "============================" & vbCrLf & vbCrLf & _
		       strStudents, vbOKOnly, "St. Joseph"
        Set objOU = Nothing
    End If
    MousePointer = vbDefault
End Sub


Private Sub BTN_SUBMIT_Click()
On Error Resume Next
    Dim objOU, objStudent, objMessageOut, numSmsMessages, numEmailMessages
    
    numSmsMessages = 0
    numEmailMessages = 0
    
    MousePointer = vbHourglass
    
    Set objOU = GetObject(TXT_LDAPSTRING)
    MousePointer = vbDefault
    If (objOU Is Nothing) Then
        MsgBox "Unable to access the OU on the specified Domain Controller.", vbCritical, _
        "St. Joseph"
    Else
        For Each objStudent In objOU
            If (RB_SENDSMS.Value <> 0 And objStudent.Mobile <> "") Then
                Set objMessageOut = g_MessageDB.Create
                If (g_MessageDB.LastError = 0) Then
                  objMessageOut.Direction = g_Constants.MESSAGEDIRECTION_OUT
                  objMessageOut.Type = g_Constants.MESSAGETYPE_SMS
                  objMessageOut.Status = g_Constants.MESSAGESTATUS_OUT_SCHEDULED
                  objMessageOut.To = objStudent.Mobile
                  objMessageOut.ChannelID = 0 ' First available SMS channel
                  objMessageOut.Body = TXT_MESSAGEBODY
                  objMessageOut.ScheduleTime = TXT_SCHEDULE
                  objMessageOut.Save
                End If
                numSmsMessages = numSmsMessages + 1
            End If
            
            If (RB_SENDEMAIL.Value <> 0 And objStudent.Mail <> "") Then
                Set objMessageOut = g_MessageDB.Create
                If (g_MessageDB.LastError = 0) Then
                  objMessageOut.Direction = g_Constants.MESSAGEDIRECTION_OUT
                  objMessageOut.Type = g_Constants.MESSAGETYPE_EMAIL
                  objMessageOut.Status = g_Constants.MESSAGESTATUS_OUT_SCHEDULED
                  objMessageOut.To = objStudent.Mail
                  objMessageOut.ChannelID = 0 ' First available SMS channel
                  objMessageOut.Body = TXT_MESSAGEBODY
                  objMessageOut.ScheduleTime = TXT_SCHEDULE
                  objMessageOut.Save
                End If
                numEmailMessages = numEmailMessages + 1
            End If
        Next
        Set objOU = Nothing
    End If
    MousePointer = vbDefault
    MsgBox "#SMS Messages created: " & numSmsMessages & vbCrLf & _
    "#E-mail messages created: " & numEmailMessages, vbInformation, "St. Joseph"
End Sub


Private Sub Form_Load()
    TXT_LDAPSTRING = "LDAP://dell04/ou=students,dc=activexperts,dc=dom"
    
    Set g_Constants = CreateObject("Axsms-messaging-server.Constants")
    Set g_MessageDB = CreateObject("Axsms-messaging-server.Messages")
    
    RB_SENDSMS.Value = 1
    RB_SENDEMAIL.Value = 0
    
    TXT_MESSAGEBODY = "All lessons from teacher Mr. Jones are cancelled on " & Date
    TXT_MESSAGESUBJECT = "Notification from St. Joseph College"
    TXT_MESSAGESUBJECT.Enabled = False
    TXT_SCHEDULE = "+0d0h5m"  
End Sub


Private Sub RB_SENDEMAIL_Click()
    If (RB_SENDEMAIL.Value <> 0) Then
        TXT_MESSAGESUBJECT.Enabled = True
    Else
        TXT_MESSAGESUBJECT.Enabled = False
    End If
End Sub