ART11 (7)









sms






SMS

Krótkie wiadomości tekstowe
stały się chyba najbardziej popularną formą wirtualnego kontaktu między ludźmi.
Furorę także zrobiła możliwość wysyłania esemesów z Internetu. Przedstawię tutaj
sposób na stworzenie programu do wysyłania takich wiadomości.

Najpierw musimy omówić całą problematykę. A więc - skorzystamy z istniejących
bramek internetowych, jednakże będą to nie bramki ogólne, lecz operatorskie (czyli te
na stronie operatora) ponieważ te najszybciej dostarczają wiadomość.
Ktoś może rzec - "dobra, ale jak niby mamy korzystać z takich bramek, czyżby
znowu jakieś API?". Nic z tych rzeczy!

Dla osób obeznanych z webmasteringiem, termin formularz nie jest obcy, jednakże dla
nowicjuszy w tej dziedzinie przyda się któtkie wytłumaczenie. Formularz to pole na
którym znajdują się pola tekstowe (np. tam gdzie wpisujemy wiadomość), pola do
zaznaczania, combo-box'y i przyciski. Formularz posiada jeden przycisk, który go
zatwierdza (tzw. submit button), i po zatwierdzeniu, jego wartości (czyli wartości pól
tekstowych, combo-box'ów itp.) zostają przesłane do docelowej strony internetowej i są
one umieszczone w tzw. parametrach, czyli tak samo jak z plikami EXE - parametrem jest to
co znajdzie się za jego ścieżką, przykład, dla EXEków (w czerwonej obwódce znajduje
się część z parametrami):

 



 

Natomiast dla przykładu stron
internetowych, wygląda to w adresie tak:

 



 

 

No więc, formularz na stronie
gdzie znajduje się bramka wysyła wiadomości do specjalnego skryptu na serwerze, a to co
dzieje się dalej nie będzie nas interesowało. Dlatego powinniśmy stworzyć program
który prześle odpowiednie dane i uruchomi odpowiedni skrypt na serwerze.

Wydaje się to bardzo skomplikowane - ale w rzeczywistości jest stosunkowo proste.
Wystarczy skorzystać z komponentu Microsoft Internet Controls
(C:\WINDOWS\SYSTEM\SHDOCVW.DLL). Następnie do naszego programu dodajemy kontrolkę
WebBrowser i nazywamy ją wbWayOut. Nadajemy jej także atrybut ukrycia (visible=false).
Tworzymy także cztery pola tekstowe, w tym jedno, ostatnie, z atrybutem Multiline=true.
Nazywamy je kolejno txtNumer, txtFWNumer, txtSing i txtText.
Do txtNumer należy wkleić kod,. który zapobiegnie wpisywaniu błędnych numerów, oraz
uaktywni pozostałe pola tylko po wpisaniu dobrego numeru. Dlatego, wszystkie oprócz
txtNumer, pola tekstowe należy zaopatrzeć w atrybut Enabled=False.
Interfejs naszego programu może wyglądać o tak:

 




Wklejamy kod:

 

Private Sub txtNumer_Change()
    If IsNumeric(txtNumer) And Len(txtNumer)
= 9 Then
        txtFWNumer.Enabled = True
        txtSing.Enabled = True
        txtText.Enabled = True
        Me.Caption = "smsSender " &
DTPrefix(txtNumer)
    Else
        txtFWNumer.Enabled = False
        txtSing.Enabled = False
        txtText.Enabled = False
    Me.Caption = "smsSender"
    End If
End Sub

 

Pewnie się
zastanawiasz, czym jest funkcja DTPrefix. Otóż ona wykrywa, z jakiej sieci pochodzi
numer, np. zaczynający się od 501 - z IDEI, a 600 z ERY. Procedura ta, powinna być
umieszczona w oddzielnym module, a wygląda ona tak:

 

Public Function DTPrefix(ByVal strNumer As String) As String
    Dim Prefix As Integer
    strNumer = Left(strNumer, 3)
    Prefix = CInt(strNumer)
    Select Case Prefix
        Case Is = 501, 502, 503, 504: DTPrefix
= "IDEA"
        Case Is = 601, 603, 605, 607, 609,
691: DTPrefix = "PLUS"
        Case Is = 600, 602, 604, 606, 608,
692: DTPrefix = "ERA"
    End Select
End Function

 

 

Następnie powinniśmy ograniczyć
ilość możliwych do wpisania znaków w polu txtText. Dla kazdej sieci limit jest inny,
dlatego w txtText, wpiszemy kod, który uaktywni się, gdy klikniemy lub w dowolny sposób
uaktywnimy te pole tekstowe, nie zapomnijmy i o cyklicznym sprawdzaniu:

 

Private Sub txtText_Change()
    Select Case DTPrefix(txtNumer)
        Case Is = "IDEA": If Len(txtText) > 640 Then MsgBox
"Za wiele znaków dla tej sieci!"
        Case Is = "PLUS": If Len(txtText) > 617 Then MsgBox
"Za wiele znaków dla tej sieci!"
        Case Is = "ERA": If Len(txtText) > 127 Then MsgBox
"Za wiele znaków dla tej sieci!"
    End Select
End Sub
Private Sub txtText_GotFocus()
    Select Case DTPrefix(txtNumer)
        Case Is = "IDEA": If Len(txtText) > 640 Then MsgBox
"Za wiele znaków dla tej sieci!"
                         
txtText.MaxLength = 640
        Case Is = "PLUS": If Len(txtText) > 617 Then MsgBox
"Za wiele znaków dla tej sieci!"
                         
txtText.MaxLength = 617
        Case Is = "ERA": If Len(txtText) > 127 Then MsgBox
"Za wiele znaków dla tej sieci!"
                         
txtText.MaxLength = 127
    End Select
End Sub


 

Teraz należy opracować procedury
odpowiedzialne za przygotowanie formy, tzn. ciągu parametrów jakie będą przekazywane
danemu skryptowi. Niestety dla bramki ERY potrzebny jest specjalny, zmieniający się kod,
który trzeba pobrać ze strony która zawiera formularz, a następnie tam wyszukać. Jest
to skomplikowany i długi proces, dlatego procedury te zamieściłem w dołączonym pliku.
Proces wysłania SMS'a z bramki ERY GSM wygląda następująco: przygotowanie początkowej
części ciągu parametrów (do momentu pola z wymaganym kodem), załadowanie strony,
gdzie wysyłamy wiadomości, zapisanie jej tymczasowo na dysku, wczytanie jej, jako plik,
wyszukanie kodu, zapisanie kodu w zmiennej, zamknięcie i usunięcie tymczasowej wersji
pliku, dołączenie kodu do ciągu parametrów, wysłanie parametrów do skryptu. Prawda,
że proste :))
Oddzielnie zrobiłem procedury przygotowujące ciągi parametrów, dlatego, że w takim
przypadku było mi łatwiej przeprowadzać diagnostykę programu.
Niemiałem zbyt wiele czasu na testy, ale wiem, iż procedura dla ERY niedziała, i
niewiem czemu, bo wszystko zrobiłem zgodnie z instrukcjami, może WY coś poradzicie.

Tutaj jest plik z kodem źródłowym przykładowego programu
smsSender.

Opisywane powyżej technologie automatyzacji obsługi bramek SMS powinny służyć celom
prywatnym i niemogą być używane w sposób komercyjny oraz masowy!

Tekst został poczęści oparty na artykule "Monopol jest OK" Artura
Janowskiego, który dotyczy automatyzacji bramek SMS za pomocą programu napisanego w
Borland Delphi (5). Artykuł został opublikowany na łamach lutowego numeru CHIP'a, www.chip.pl. 


Marcin Porębski ( Doogie )
marcin.porebski@interia.pl







Wyszukiwarka

Podobne podstrony:
ART11 (4)
art11
art11 budowa domu na skarpie
art11
ART11 (3)
art11
art11
art11
ART11

więcej podobnych podstron