ilute
25.10.2003, 20:18
SMS aus der Kommandozeile, oder als CGI
moin,
vielleicht hat ja jemand Lust dabei mitzumachen. Das Programm an sich existiert schon (ohne CGI Unterstuetzung). Allerdings noch nicht mit allen Funktionen und Features, die es haben sollte. Eine ausgekluegeltere Fehlerkontrolle haette sich die Software auch verdient.
Wie das ganze Funktioniert ist simpel. Man nehme einen SMS Dienst (bei mir sms3000.de) und automatisiere die Formulare. Fertig! Schicke dann alles ueber eine geeignete HTTP Schnittstelle (libCURL) an den Herkunftsort zurueck und kontrolliere ob die SMS versendet wurde.
Wer jetzt glaubt das ganze sei umsonst ... schade! Ist es leider nicht. Die Nachrichten kosten je nach Leistung zwischen 3,9 und 10,4 Cent. Deshalb sollte man schon beim Programmieren darauf achten moeglichst keine Fehler zu machen. ;o)
An Funktionen hat das Programm ein paar wenige parat, neben den notwendigen zum Verschicken von SMS. Suchen eines Teilnamens aus dem Online Adressbuch beispielsweise. Ausgeben des Kontostandes, ... . Fehlen tuen noch Funktionen fuer Textkontraktionen (Kein Leerzeichen nach Komas, "..." durch ".." ersetzen, "en" durch "n" am Ende von Woertern wie "ersetzn" ersetzen, ... praktische Dinge halt, die man sonst laesstig von Hand taetigt).
Der Code ist in C fuer *x. Verwendet regex's, GNU extensions und die libCURL. Nur falls jetzt jemand daran denkt das Ganze fuer WIn32 zu portieren.
Vielleicht ist der Code nicht der uebersichtlichste, ABER ich sehe ihn mehr als Prototyp an, zum Testen von Routinen und um zu sehen, was alles in ein solches Programm implementiert werden muss. Was der Nutzer gebrauchen kann und was nicht. Was Funktioniert, was ausreicht um das Ziel zu erreichen und um zu sehen, was Schnick-Schnack ist.
Den Code gibt's unter http://www.webreeze.de/temp/sms_if.tar.gz (sms_if: SMS Interface)
Kompilieren des Codes ueber
make
Ich schreibe an dem Programm nebenbei. Habe letztes Wochenende damit begonnen. Ziel soll sein ein zuverlaessiges SMS Interface fuer den Einsatz in der Kommandozeilenumgebeung fuer Shell-Scripts und vorallem CGI's zu schaffen. Ein EInsatzgebiet koennte sein eine SMS beim Eingang einer wichtigen email zu sein, oder generell ueber das Eintreffen von emails hinzuweisen fuer Personen, die ihre Mailbox nur unregelmaessig abrufen.
stefan.bolus{at}gmx{dot}de
PS. Falls jemand einen guten, und zuverlaessigen, nebenbei moeglichst guenstigen SMS Service kennt, bitte auch schreiben, oder posten!
.___ggggggw___. .._._._._.__ _._._._._._,_ .__gggggg___.,
_auY!""^-^`||:}?+q2')m"""""""""!{C: .we""""""""!{ZN .gwI??""--^+|i:?9xZP
jP^ qu??!!!?!"^ )Xp: )k`jd!' :.uZ'.jZ!' _u7?!!!?!!~
4w, )mp ]z jk_d( _d!` ]$p, ]Xa,
"?qp,.. -?Sa, ]mc : uw,: +MM' .wu> :_xZ'. -?Sa, . -"Sa,:
-"?qa. "Sp -Xc )xWn, _QxQ%( _w!' -?5ap -4a,
., -"A/ jd( )hc ]o23p. .J!Qzf.gZ". _.. ?9c .ae'
)Znaa2!`._w2' ]$f.jZ>)o, qm(jZP.uY`. =X1aauY' _ad!
)SagggaaY!^ ]baae=)#aaY`jdoad( 3aaggga2?~
:. -:
SMS Interface for sms3000.de
Build: Sat Oct 25 17:23:40 CEST 2003
Usage:
./sms [actions] [options] username password number
./sms [actions] [options] -authfile=filename number
Sollten 'number' und gleichzeitig die -rcpt Option gegeben sein,
wird automatisch ein neuer Eintrag im Adressbuch getaetigt.
'number' muss nicht gegeben sein, wenn stattdessen ein Teil des
Empfaengernamens ueber die -rcpt Option angegeben wird.
SMS3000.de Optionen:
-anonymous Absendernummer wird durch 3000 ersetzt
-sender-id=text Statt der Nummer wird der angegebene Text gesendet
-scheduled=date Die SMS wird erst am angegebenen Termin gesendet
-class=class Der gewaehlte Dienst, ueber den SMS3000 die SMS
sendet. Genaueres dazu in der README.
allgemeine Optionen:
-authfile=file Statt den Benutzernamen und das Passwort in der
Kommandozeile anzugeben, werden die beiden Werte
aus der angegebenen Datei gelesen.
-rcpt=empfaenger Teilstring des Empfaengernames. Kann statt der
Nummer angegeben werden, wobei die Nummer dann
ueber den String aus dem Adressbuch ermittelt wird.
Sind Nummer und diese Option gegeben, wird ein
neuer Eintrag im Adressbuch erstellt. (off)
User-Interface Optionen:
-file=file Die SMS Nachricht wird statt von stdin aus der
angegebenen Datei gelesen.
-verbose Anzeigen, was das Programm gerade tut.
Nachrichten-Text Optionen:
-rtrim Leerzeichen vom Ende der Nachricht loeschen.
-no-padding Leerzeichen nach Interpunktionszeichen loeschen.
-no-repeats Wiederholungen von Leerzeichen durch nur ein
Leerzeichen ersetzen.
-ellipses Verkuerzt "..[.]+" auf "..".
-en-suffixes Ersetzt "[^n]en" Wortendungen durch "[^n]n".
-to-upper Wandelt den ersten Buchstaben eines Wortes nach
einem ".?!" und dazwischenliegenden Leerzeichen
in einen Grossbuchstaben um.
-force-overlen Die verkuerzenden Routinen werden auch benutzt,
wenn der Nachrichten-Text kleiner als 160 Zeichen,
oder ein Vielfaches davon ist.
Aktionen:
-amount Gibt den aktuellen Kontostand aus
-uid Gibt die SMS3000.de User ID aus
-no-sms Es wird keine SMS versendet, und somit auch keine
SMS Nachricht erwartet.
-abook Gibt den Inhalt des Adressbuchs aus. Zur Zeit
jedoch nur, sollte eine SMS versendet werden.
-help Gibt diese Formschoene Hilfe aus.
Dies ist Open Source Software!
Bei Problemen, Ideen oder allem anderen in Bezug auf die Software
bitte eine email an den Autor, Stefan Bolus, schreiben.
stefan.bolus<at>gmx<dot>de
mfg
moin,
vielleicht hat ja jemand Lust dabei mitzumachen. Das Programm an sich existiert schon (ohne CGI Unterstuetzung). Allerdings noch nicht mit allen Funktionen und Features, die es haben sollte. Eine ausgekluegeltere Fehlerkontrolle haette sich die Software auch verdient.
Wie das ganze Funktioniert ist simpel. Man nehme einen SMS Dienst (bei mir sms3000.de) und automatisiere die Formulare. Fertig! Schicke dann alles ueber eine geeignete HTTP Schnittstelle (libCURL) an den Herkunftsort zurueck und kontrolliere ob die SMS versendet wurde.
Wer jetzt glaubt das ganze sei umsonst ... schade! Ist es leider nicht. Die Nachrichten kosten je nach Leistung zwischen 3,9 und 10,4 Cent. Deshalb sollte man schon beim Programmieren darauf achten moeglichst keine Fehler zu machen. ;o)
An Funktionen hat das Programm ein paar wenige parat, neben den notwendigen zum Verschicken von SMS. Suchen eines Teilnamens aus dem Online Adressbuch beispielsweise. Ausgeben des Kontostandes, ... . Fehlen tuen noch Funktionen fuer Textkontraktionen (Kein Leerzeichen nach Komas, "..." durch ".." ersetzen, "en" durch "n" am Ende von Woertern wie "ersetzn" ersetzen, ... praktische Dinge halt, die man sonst laesstig von Hand taetigt).
Der Code ist in C fuer *x. Verwendet regex's, GNU extensions und die libCURL. Nur falls jetzt jemand daran denkt das Ganze fuer WIn32 zu portieren.
Vielleicht ist der Code nicht der uebersichtlichste, ABER ich sehe ihn mehr als Prototyp an, zum Testen von Routinen und um zu sehen, was alles in ein solches Programm implementiert werden muss. Was der Nutzer gebrauchen kann und was nicht. Was Funktioniert, was ausreicht um das Ziel zu erreichen und um zu sehen, was Schnick-Schnack ist.
Den Code gibt's unter http://www.webreeze.de/temp/sms_if.tar.gz (sms_if: SMS Interface)
Kompilieren des Codes ueber
make
Ich schreibe an dem Programm nebenbei. Habe letztes Wochenende damit begonnen. Ziel soll sein ein zuverlaessiges SMS Interface fuer den Einsatz in der Kommandozeilenumgebeung fuer Shell-Scripts und vorallem CGI's zu schaffen. Ein EInsatzgebiet koennte sein eine SMS beim Eingang einer wichtigen email zu sein, oder generell ueber das Eintreffen von emails hinzuweisen fuer Personen, die ihre Mailbox nur unregelmaessig abrufen.
stefan.bolus{at}gmx{dot}de
PS. Falls jemand einen guten, und zuverlaessigen, nebenbei moeglichst guenstigen SMS Service kennt, bitte auch schreiben, oder posten!
.___ggggggw___. .._._._._.__ _._._._._._,_ .__gggggg___.,
_auY!""^-^`||:}?+q2')m"""""""""!{C: .we""""""""!{ZN .gwI??""--^+|i:?9xZP
jP^ qu??!!!?!"^ )Xp: )k`jd!' :.uZ'.jZ!' _u7?!!!?!!~
4w, )mp ]z jk_d( _d!` ]$p, ]Xa,
"?qp,.. -?Sa, ]mc : uw,: +MM' .wu> :_xZ'. -?Sa, . -"Sa,:
-"?qa. "Sp -Xc )xWn, _QxQ%( _w!' -?5ap -4a,
., -"A/ jd( )hc ]o23p. .J!Qzf.gZ". _.. ?9c .ae'
)Znaa2!`._w2' ]$f.jZ>)o, qm(jZP.uY`. =X1aauY' _ad!
)SagggaaY!^ ]baae=)#aaY`jdoad( 3aaggga2?~
:. -:
SMS Interface for sms3000.de
Build: Sat Oct 25 17:23:40 CEST 2003
Usage:
./sms [actions] [options] username password number
./sms [actions] [options] -authfile=filename number
Sollten 'number' und gleichzeitig die -rcpt Option gegeben sein,
wird automatisch ein neuer Eintrag im Adressbuch getaetigt.
'number' muss nicht gegeben sein, wenn stattdessen ein Teil des
Empfaengernamens ueber die -rcpt Option angegeben wird.
SMS3000.de Optionen:
-anonymous Absendernummer wird durch 3000 ersetzt
-sender-id=text Statt der Nummer wird der angegebene Text gesendet
-scheduled=date Die SMS wird erst am angegebenen Termin gesendet
-class=class Der gewaehlte Dienst, ueber den SMS3000 die SMS
sendet. Genaueres dazu in der README.
allgemeine Optionen:
-authfile=file Statt den Benutzernamen und das Passwort in der
Kommandozeile anzugeben, werden die beiden Werte
aus der angegebenen Datei gelesen.
-rcpt=empfaenger Teilstring des Empfaengernames. Kann statt der
Nummer angegeben werden, wobei die Nummer dann
ueber den String aus dem Adressbuch ermittelt wird.
Sind Nummer und diese Option gegeben, wird ein
neuer Eintrag im Adressbuch erstellt. (off)
User-Interface Optionen:
-file=file Die SMS Nachricht wird statt von stdin aus der
angegebenen Datei gelesen.
-verbose Anzeigen, was das Programm gerade tut.
Nachrichten-Text Optionen:
-rtrim Leerzeichen vom Ende der Nachricht loeschen.
-no-padding Leerzeichen nach Interpunktionszeichen loeschen.
-no-repeats Wiederholungen von Leerzeichen durch nur ein
Leerzeichen ersetzen.
-ellipses Verkuerzt "..[.]+" auf "..".
-en-suffixes Ersetzt "[^n]en" Wortendungen durch "[^n]n".
-to-upper Wandelt den ersten Buchstaben eines Wortes nach
einem ".?!" und dazwischenliegenden Leerzeichen
in einen Grossbuchstaben um.
-force-overlen Die verkuerzenden Routinen werden auch benutzt,
wenn der Nachrichten-Text kleiner als 160 Zeichen,
oder ein Vielfaches davon ist.
Aktionen:
-amount Gibt den aktuellen Kontostand aus
-uid Gibt die SMS3000.de User ID aus
-no-sms Es wird keine SMS versendet, und somit auch keine
SMS Nachricht erwartet.
-abook Gibt den Inhalt des Adressbuchs aus. Zur Zeit
jedoch nur, sollte eine SMS versendet werden.
-help Gibt diese Formschoene Hilfe aus.
Dies ist Open Source Software!
Bei Problemen, Ideen oder allem anderen in Bezug auf die Software
bitte eine email an den Autor, Stefan Bolus, schreiben.
stefan.bolus<at>gmx<dot>de
mfg