SendSMS Beschreibung

Inhalt

Lizenz

SendSMS darf kostenlos für eine Dauer von 20 Tagen getestetet werden. Danach muß SendSMS für eine dauerhafte Nutzung registriert (http://www.bai.de/sendsms/bestell.shtml) werden. Jeder Anwender erkennt die Allgemeinen Nutzungs- und Geschäftsbedingungen für SendSMS an.

Allgemeines

SendSMS ist ein Programm zum Versenden von ShortMessages (SMS) an GSM-Telefone oder Pager mittels der Protokolle TAP, UCP oder GSM. In Deutschland sind dies z.B. Telefone mit D1-, D2- oder EPlus-Karte oder verschiedene Pager (Quix, TeLMI, CityRuf, Scall, Skyper,...). SendSMS kann ebenfalls Sprachnachrichten aufnehmen/abspielen. SendSMS hat u.a. folgende Eigenschaften:

Mit (*) gekennzeichnete Punkte sind nur in der registrierten Version verfügbar.

Installation

Die ZIP-Datei (alternativ auch tar.Z) wird in einem temporären Unterverzeichnis entpackt und danach 'setup' oder './setup' aufgerufen. Das Installationsprogramm fragt nach den wichtigsten Parametern (um SendSMS zu testen) und kopiert die folgenden Dateien in ein anzugebendes Verzeichnis:

handbuch.htm Handbuch
faq.htm häufig gestellte Fragen
sendsms[.exe] das eigentliche Programm
sendsms.cf_ original Konfigurationsdatei
sendsms.cfg vom Installationsprogramm erstellte Konfigurationsdatei
sendsms.err Fehlercodes
sendsms.pro Telefonnetz-Definitionen
sendsms.pbk Beispiel für ein Telefonbuch
group.sms Beispiel für ein Gruppendefinition (zum Versenden an mehrere Empfänger)

Nachdem setup durchlaufen wurde sollten Sie die Datei sendsms.pro editieren und dort alle von Ihnen nicht benötigten Providerdefinitionen löschen. Für manche Provider sind verschiedene Definitionen (Modem, ISDN, GSM) vorhanden, von welchen Sie die nicht benötigten Definitionen löschen bzw. die für Ihre Device zutreffende Definition an den Anfang der Datei stellen sollten.

Testen Sie vor dem automatischen Aufruf von SendSMS unbedingt, ob der Auflegmechanismus (ESCAPE-Sequenz oder DTR zurücksetzen) funktioniert.

In der DOS-Version ist ein DPMI-Server (cwsdpmi.exe) enthalten. Das komplette Archiv kann unter csdpmi4b.zip geladen werden.

In den Unix-Versionen muß der Owner der Datei sendsms ausreichende Rechte besitzen um das Modemdevice zu benutzen und Dateien anzulegen (Spoolverzeichnis, Lockverzeichnis,...) und es muß das Set-User-ID Bit gesetzt sein.

Konfiguration

In der Datei sendsms.cfg wird die allgemeine Konfiguration des Programms festgelegt.

In der Datei sendsms.pro werden die verschiedenen Telefonnetze (welches Netz benutzt TAP bzw. UCP, über welche Telefonnummer wird die Nachricht versendet und welche Vorwahlen haben die Nummern des entsprechenden Netzes) konfiguriert.

In der Datei sendsms.pbk werden Kürzel zum Wählen mittels symbolischer Namen anstelle von Telefonnummern definiert.

Kommentare werden durch einen Strichpunkt (;) eingeleitet.

Sämtliche Konfigurationsdateien werden standardmäßig in dem Verzeichnis gesucht, aus dem SendSMS aufgerufen wurde. Dies gilt nicht, wenn per Kommandozeile explizit eine Konfigurationsdatei angegeben wurde, bzw. wenn die Umgebungsvariable SendSMS gesetzt wurde. In letzterem Fall wird der Wert dieser Umgebungsvariable als Verzeichnis für die Konfigurationsdateien benutzt.

sendsms.cfg

Hier wird im Kapitel [SendSMS] die allgemeine Konfiguration vorgenommen. Im Kapitel [Device] wird die Kommunikationsschnittstelle (Modem) konfiguriert. Das Kapitel [Device] kann in der registrierten Version beliebig oft wiederholt werden. Beim Verbindungsaufbau wird immer versucht das als erstes definierte Modem zu benutzen. Ist dieses Modem gesperrt oder reagiert nicht, so wird das nächste benutzt. Sollte der Verbindungsaufbau mit allen Modems nicht funktionieren, so wird eine Pause (REDIALDELAY) eingelegt und das Ganze wiederholt (REDIALCOUNT).

Im Kapitel [SendSMS] stehen die im Folgenden aufgeführten Schlüsselworte zur Verfügung. Jedes Schlüsselwort muß in einer neuen Zeile stehen.

BINLOCKS=0
Gibt an, ob die Lockdatei binär (1) oder ASCII angelegt wird (nur UNIX).

FOOTER=
Gibt einen optionalen Footer an (ein Text, der an jede zu versendende Nachricht angehängt wird) [nur in der registrierten Version]

GSMTIMEOUT=30
Gibt die Zeitdauer (in Sekunden) an, die das Programm auf eine Antwort vom Servicerechner bei Verwendung des GSM-Protokolls wartet.

HEADER=
Gibt einen optionalen Header an (ein Text, der vor jede zu versendende Nachricht gestellt wird) [nur in der registrierten Version]

LOGFILE=sendsms.log
Gibt das Logfile an, in dem SendSMS alle Aktionen protokolliert. Wird das File ohne Pfad angegeben, so wird es in dem Verzeichnis in dem das Programm liegt angelegt. Wird als LOGFILE 'syslog' (nur Unix) angegeben, so wird über den syslog-Dämon protokolliert. [nur in der registrierten Version]

LOCKDIR=/var/spool/uucp
Gibt das Verzeichnis an, in dem eine Lockdatei gesucht bzw. angelegt wird (nur UNIX).

MAXERRORS=
Gibt die max. Anzahl Fehler (Nachricht nicht gesendet) an, die bis zu einem Programmabbruch akzeptiert wird. Ist dieser Parameter nicht bzw. auf 0 gesetzt, so wird nach einer fehlerhaften oder nicht übertragenen Nachricht NICHT abgebrochen. Dieser Parameter hat nur Bedeutung, wenn an mehrere Empfänger gesendet wird. Im Servermodus wird der Parameter ignoriert.

PHONE=
Gibt die eigene Telephonnummer, von der die Nachricht ausgeht, an.

PRIORITY=-5
Hiermit kann die Priorität, mit der SendSMS ausgeführt wird, gesetzt werden (nicht DOS oder Windows 3.x). Der Bereich geht von -15 (hohe Priorität) bis 15 (niedrige Priorität).

RECEIVEDIR=received
Gibt ein Verzeichnis an, in welchem empfangene Kurznachrichten abgespeichert werden sollen (GSM). [nur registrierte Version]

REDIALCOUNT=3
Gibt die Anzahl von Wahlversuchen an (siehe auch RETRYCOUNT). [nur in der registrierten Version]

REDIALDELAY=60
Gibt die Anzahl Sekunden an, die bis zum nächsten Wahlversuch gewartet wird. In der Zeit bis zum nächsten Wahlversuch wird das Modem wieder freigegeben. [nur in der registrierten Version]

RETRYCOUNT=3
Gibt an, wieoft versucht wird eine Nachricht zu übertragen. Im Servermodus ist dies die Anzahl wie oft eine Nachricht max. im Spoolverzeichnis belassen wird (nach fehlerhafter Übertragung). Im Gegensatz zum REDIALCOUNT greift RETRYCOUNT immer, wenn die Übertragung nicht geklappt hat, während REDIALCOUNT nur greift, wenn keine Modem frei ist bzw. die Gegenstelle nicht abnimmt. [nur in der registrierten Version]

RETRYDELAY=60
Gibt die Anzahl Sekunden an, die bis zum nächsten Wahlversuch gewartet wird. In der Zeit bis zum nächsten Wahlversuch wird das Modem wieder freigegeben. [nur in der registrierten Version]

SHOWSENDSMS=0
Anhängen der 'SendSMS from ...' Meldung an die zu versendende Nachricht unterbinden. [nur in der registrierten Version]

SHOWURL=0
Anhängen der Url http://www.bai.de an die zu versendende Nachricht unterbinden. [nur in der registrierten Version]

SPOOLDIR=/var/spool/sendsms
Gibt das Verzeichnis an, in dem die Nachrichten gespoolt (zwischengespeichert) werden. [nur in der registrierten Version]

TAPTIMEOUT=30
Gibt die Zeitdauer (in Sekunden) an, die das Programm auf eine Antwort vom Servicerechner bei Verwendung des TAP-Protokolls wartet.

UCPTIMEOUT=60
Gibt die Zeitdauer (in Sekunden) an, die das Programm auf eine Antwort vom Servicerechner bei Verwendung des UCP-Protokolls wartet.

UNSENTDIR=unsent
Gibt ein Verzeichnis an, in welchem Nachrichten die nicht gesendet werden konnten (Servermode) archivierd werden.empfangene Kurznachrichten abgespeichert werden.

VALIDITYPERIOD=3
Gibt die Anzahl Tage bzw. - falls das letzte Zeichen ein M ist die Anzahl Minuten an die eine SMS gültig bleiben soll (d.h. die Zeitdauer wie lange die Nachricht auf dem Servicerechner gespeichert werden soll, falls sie zur Zeit nicht ausgeliefert werden kann). Der Parameter kann alternativ auch in Minuten angegeben werden, wenn

Im Kapitel [Device] stehen die im Folgenden aufgeführten Schlüsselworte zur Verfügung. Jedes Schlüsselwort muß in einer neuen Zeile stehen. (Für die entsprechenden Modembefehle wird auf das Modemhandbuch verwiesen (soweit vorhanden))

BAUD=4800
Gibt die zu verwendende Baudrate an (300, 600, 1200, 2400, 4800 oder 9600). Dieser Wert wird nur verwendet, falls bei einem anzurufenden Provider keine Definition vorhanden ist.

BEEP=AT#VTS=[960,0,6]
Gibt ein Kommando zum Generieren eines Signaltones (bei Aufnahme einer Sprachnachricht mit Voice-Modem) an.

CONNECTTIMEOUT=40
Gibt die Zeitdauer (in Sekunden) an, die das SendSMS nach dem Wählen auf das Zustandekommen einer Verbindung wartet.

CONTROLLER=1
Wenn Sie in Ihrem Rechner mehrere ISDN-Karten benutzen geben Sie hier an auf welche der Karten sich die Definition bezieht.

DATABITS=8
Gibt die Anzahl der Datenbits an (7 oder 8). Dieser Wert wird nur verwendet, falls bei einem anzurufenden Provider keine Definition vorhanden ist.

DEVICE=COM1
Gibt den Anschluß an, an dem das Modem hängt (unter Unix z.B. /dev/ttyS0). (Achtung: unter Unix muß darauf geachtet werden, daß der Besitzer der Datei sendsms berechtigt ist das Device zu benutzen). Unter DOS können zusätzlich, durch Kommata getrennt, die Portadresse und der IRQ (beides in Hex)angegeben werden, falls diese nicht dem Standard entsprechen (z.B. COM1,3f8,4).

Wird die Kommunikation mittels CAPI 2.0 abgewickelt, so wird hier der Pfad zur Capi-DLL (Windows, OS/2) bzw. zum CAPI-Device (Unix) angegeben. Unter DOS wird der IRQ zum ansprechen der CAPI angegeben (z.B. DEVICE=IRQ F1).

DEVICETYPE=Modem
Gibt die Art der verwendeten Hardware (Modem, Voice-Modem, GSM 07.05 oder CAPI 2.0) an.

DIALPREFIX=ATDT0w
Gibt das Kommando zum wählen einer Nummer an (hier Tonwahl und nach einer '0' auf das Freizeichen warten).
Bei Verwendung der CAPI-Schnittstelle an einer Nebenstellenanlage wird hier die Ziffernfolge angegeben, um eine Amtsleitung zu erhalten (normalerweise 0).

DIALSUFFIX=
Bei manchen Modems/ISDN-Terminaladaptern muß an die zu wählende Nummer noch ein oder mehrere AT-Kommandos angehängt werden, um z.B. ein bestimmtes Protokoll auszuwählen. Diese Kommandos können hier definiert werden. Dieser Wert wird nur verwendet, falls bei einem anzurufenden Provider keine Definition vorhanden ist.

ESCAPE=+++
Gibt die Fluchtsequenz an, welche zum Umschalten vom Datenmodus in den Befehlsmodus dient. ACHTUNG! Die Fluchtsequenz wird nur benutzt wenn sie explizit definiert ist. Ist sie nicht definiert so wird zum Auflegen des Modems das DTR-Signal für 1 Sekunde auf 0 gesetzt. Dies ist sicherer und schneller als die Fluchtsequentz und ein ATH. Definieren Sie also die Fluchtsequenz nur, wenn der DTR-Mechanismus bei Ihnen nicht funktioniert.

HANGUP=ATH
Gibt das Kommando zum Auflegen an.

INIT=ATQ0E1V1L1
Gibt das Initialisierungskommando für das Modem an. Das Modem muß auf

eingestellt werden.

INIT2=
Gibt ein zweites Initialisierungskommando für das Modem an. Dieses Kommando erfolgt nach der Standardinitialisierung des Modems (GSM-Modules). Bei Verwendung eines GSM-Modules ist es u.U. notwendig eine Speicheradresse anzugeben (z.B. AT+CPMS="ME"), wozu man diesen Parameter verwenden kann.

LINETYPE=ANALOG
Gibt an, ob es sich bei der Telefonleitung um eine analoge (ANALOG) oder um eine digitale (ISDN) Leitung handelt. Dieser Parameter kann ebenfalls bei den Providerdefinitionen angegeben werden, wobei SendSMS automatisch ein passendes Device für einen entsprechenden Provider auswählt. Wenn Sie z.B. beim Aufruf von SendSMS den Provider D1_ISDN (dort ist LINETYPE=ISDN angegeben) auswählen, so wird automatisch ein ISDN-fähiges Device gewählt.

MSN=24
Gibt die Telefonnummer des ISDN-Adapters (bei Verwendung von CAPI 2.0) an. Hier müssen Sie die Nummer eintragen, die dem entsprechenden ISDN-Anschluß zugeordnet ist. Bei Verwendung einer Nebenstellenanlage also die interne Rufnummer. Wenn Sie hier keine oder eine falsche Nummer angeben kann es sein, daß Sie keine Verbindungen bekommen. Dieser Parameter kann durch die Kommandozeilenoption -m überschrieben werden.

NAME=Modem1
Dient zur eindeutigen Identifizierung eines Devices. Wenn dieser Name mit dem Kommandozeilenparameter -d angegeben wird, kann schon beim Aufruf von SendSMS ein spezielles Devices vorgegeben werden. Dies ist nur notwendig, wenn mehrere Devices konfiguriert sind und die automatische Deviceauswahl umgangen werden soll.

PARITY=NONE
Gibt die Art der Parität an (NONE, EVEN oder ODD). Dieser Wert wird nur verwendet, falls bei einem anzurufenden Provider keine Definition vorhanden ist.

PIN=1234
Gibt die PIN für Ihre SIM an (GSM-Module). Falls Sie eine GSM-Karte verwenden, bei welcher man keine PIN eingeben braucht/kann (AT+CPIN? funktioniert nicht), darf dieser Parameter nicht belegt werden.

RESET=ATZ
Gibt das Kommando zum Zurücksetzen des Modems an (normalerweise ATZ).

RTSCTS=1
Gibt an daß die Hardwareflußkontrolle benutzt werden soll.

STARTVOICEMODE=AT#CLS=8
Gibt das Kommando an mit dem ein Voice-Modem in den Voice-Modus gesetzt wird. Dies ist zum Abspielen/Aufnehmen von Sprachnachrichten nötig.

STOPBITS=1
Gibt die Anzahl der Stopbits an (1 oder 2). Dieser Wert wird nur verwendet, falls bei einem anzurufenden Provider keine Definition vorhanden ist.

STOPVOICEMODE=AT#CLS=0
Gibt das Kommando an mit dem bei einem Voice-Modem der Voice-Modus beendet wird.

VOICERECEIVE=AT#VTX
Gibt das Kommando an mit dem bei einem Voice-Modem der Sprachempfangsmodus gestartet wird (Aufzeichnen von Sprachnachrichten).

VOICETRANSMIT=AT#VTX
Gibt das Kommando an mit dem bei einem Voice-Modem der Sprachsendemodus gestartet wird (Abspielen von Sprachnachrichten).

WAITAFTERWRITE=1
Gibt die Anzahl Sekunden an, die nach jedem Schreiben auf das Device gewartet wird (kann meistens auf 0 gesetzt werden).

XONXOFF=1
Gibt an daß die Softwareflußkontrolle benutzt werden soll.

sendsms.pro

Hier werden die verschiedenen Dienstanbieter konfiguriert. Für jeden Dienstanbieter muß ein 'Kapitel' angelegt werden. In der Datei sind viele Dienstanbieter bereits vorkonfiguriert und können direkt übernommen werden. Nicht benötigte Dienstanbieterdefinitionen sollten jedoch gelöschen werden. Für manche Dienstanbieter sind verschiedene Definitionen (Modem, ISDN, GSM) vorhanden. Hiervon sollten Sie die nicht benötigten Definitionen löschen bzw. die für Ihre Device zutreffende Definition an den Anfang der Datei stellen. Eine Definition erfolgt durch eine Zeile mit dem Namen des Dienstanbieters in eckigen Klammern ([]) eingeklammert und den folgenden Parametern: (es sollte bei allen Providern mit UCP-Protokoll der Parameter MODEMINIT so gesetzt werden, daß das Modem zu V.42/LAPM gezwungen wird)

B1PROTOCOL=64K-HDLC
Mit diesem Parameter geben Sie das zu verwendende B1-Protokoll (ISDN, physical layer) an. Dies ist nur notwendig, wenn der entsprechende Provider vom Standard abweichende Protokolle benutzt und die Verbindung per CAPI aufgebaut wird. Bei Verwendung eines ISDN-Terminaladapters muß das entsprechende Protokoll mit einem AT-Befehl in MODEMINIT ausgewählt werden. Es stehen folgende Auswahlmöglichkeiten zur Verfügung:

64K-HDLC 64 kbit/s with HDLC framing
64K-TRANS 64 kbit/s bit-transparent operation with byte framin from the network
V.110-ASYNC V.110 asynchronous operation with start/stop byte framing
V.110-SYNC V.110 synchronous operation with HDLC framing
T.30-FAX3 T.30 modem for fax group 3
64K-INVERT 64 kbit/s inverted with HDLC framing
56K-TRANS 56 kbit/s bit-transparent operation with byte framing from the network
MODEM-NEGOTIATION Modem with full negotiation
MODEM-ASYNC Modem asynchronous operation with start/stop byte framing
MODEM-SYNC Modem synchronous operation with HDLC framing

B2PROTOCOL=X.75-SLP
Mit diesem Parameter geben Sie das zu verwendende B2-Protokoll (ISDN, data link layer) an. Dies ist nur notwendig, wenn der entsprechende Provider vom Standard abweichende Protokolle benutzt und die Verbindung per CAPI aufgebaut wird. Bei Verwendung eines ISDN-Terminaladapters muß das entsprechende Protokoll mit einem AT-Befehl in MODEMINIT ausgewählt werden. Es stehen folgende Auswahlmöglichkeiten zur Verfügung:

X.75-SLP ISO 7776 (X.75 SLP)
TRANS Transparent
SDLC SDLC
LAPD-X.25 LAPD in accordance with Q.921 for D channel X.25
T.30-FAX3 T.30 for fax group 3
PPP Point-to-Point Protocol
IGNORE Transparent (ignoring framing errors of B1 protocol)
MODEM Modem with full negotiation
X.75-SLP-V.42 ISO 7776 (X.75 SLP) with V.42 bis compression
V.120-ASYNC V.120 asynchronous mode
V.120-ASYNC-V.42 V.120 asynchronous mode with V.42 bis compression
V.120-TRANS V.120 bit-transparent mode
LAPD LAPD in accordance with Q.921

B3PROTOCOL=TRANS
Mit diesem Parameter geben Sie das zu verwendende B3-Protokoll (ISDN, netwok layer) an. Dies ist nur notwendig, wenn der entsprechende Provider vom Standard abweichende Protokolle benutzt und die Verbindung per CAPI aufgebaut wird. Bei Verwendung eines ISDN-Terminaladapters muß das entsprechende Protokoll mit einem AT-Befehl in MODEMINIT ausgewählt werden. Es stehen folgende Auswahlmöglichkeiten zur Verfügung:

TRANS Transparent
T.90NL T.90NL with compatibility to T.70NL
X.25-DTE-DTE ISO 8202 (x.25 DTE-DTE)
X.25-DCE X.25 DCE
T.30-FAX3 T.30 for fax group 3
T.30-FAX3-EXT T.30 for fax group 3 extended
MODEM Modem

BDATALEN=1024
Gibt die maximale Länge von Datenblöcken (CAPI; hat nichts mit der Länge einer Nachricht zu tun) an. Der Wert muß im Bereich zwischen 128 und 2048 liegen.

BAUD=4800
Gibt die zu verwendende Baudrate an (300, 600, 1200, 2400, 4800 oder 9600). Dieser Wert, falls vorhanden, überschreibt den Wert in sendsms.cfg.

CIP=UNRESTRICTED-DIGITAL
Mit diesem Parameter kann (normalerweise nicht notwendig) der CIP-Wert (Compatibility Information Profile) zum Verbindungsaufbau per CAPI angegeben werden. Bei Verwendung eines ISDN-Terminaladapters muß der entsprechende Wert mit einem AT-Befehl in MODEMINIT ausgewählt werden. Es stehen folgende Auswahlmöglichkeiten zur Verfügung:

SPEECH Speech
UNRESTRICTED-DIGITAL unrestricted digital information
RESTRICTED-DIGITAL restricted digital information
3.1KHZ-AUDIO 3.1 kHz audio
7KHZ-AUDIO 7 kHz audio
VIDEO Video
PACKET-MODE packet mode
56KBIT-RATE-ADAPTION 56 kbit/s rate adaption
UNRESTRICTED-DIGITAL-WITH-TONES unrestricted digital information with tones/announcements
TELEPHONY Telephony

DATABITS=8
Gibt die Anzahl der Datenbits an (7 oder 8). Dieser Wert, falls vorhanden, überschreibt den Wert in sendsms.cfg.

DEVICE=
Hier kann der Name eines Devices (so wie er in sendsms.cfg unter NAME definiert ist) angegeben werden um die Nutzung des entsprechenden Devices für diesen Provider zu erzwingen.

DIALSUFFIX=
Bei manchen Modems/ISDN-Terminaladaptern muß an die zu wählende Nummer noch ein oder mehrere AT-Kommandos angehängt werden, um z.B. ein bestimmtes Protokoll auszuwählen. Diese Kommandos können hier definiert werden. Dieser Wert, falls vorhanden, überschreibt den Wert in sendsms.cfg.

LINETYPE=ANALOG
Gibt an, ob es sich bei der Telefonnummer das Providers um einen analogen (ANALOG) oder um einen digitalen (ISDN) Anschluß handelt. Dieser Parameter kann ebenfalls bei den Devicedefinitionen angegeben werden, wobei SendSMS automatisch ein passendes Device für einen entsprechenden Provider auswählt. Wenn Sie z.B. beim Aufruf von SendSMS den Provider D1_ISDN (dort ist LINETYPE=ISDN angegeben) auswählen, so wird automatisch ein ISDN-fähiges Device gewählt.

MAXMSG=
Gibt die maximale Anzahl von Nachrichten an, die innerhalb einer einzelnen Verbindung versendet werden können. Ist dieser Parameter definiert, so werden bis zu der entsprechenden Anzahl Nachrichten versendet und danach automatisch die Verbindung beendet und falls erforderlich eine neue Aufgebaut. Dies ist nötig, da einige Provider nur eine begrenzte Anzahl Nachrichten pro Verbindung zulassen.

MODEMINIT=
Gibt ein zusätzliches Initialisierungskommando an. Dieses Kommando wird nach dem entsprechenden Kommando aus derDatei sendsms.cfg aufgerufen und ersetzt dieses nicht. In den meisten Fällen kann dieser Parameter entfallen. Er wird nur benötigt, wenn z.B. für einen Provider das Modem auf ein bestimmtes Protokoll eingestellt werden soll. Z.B. sollte bei einem Provider mit UCP-Protokoll das Modem auf V.42/LAPM eingestellt werden (z.B. AT&Q5).

MSGLEN=
Hier wird die maximale Länge einer Nachricht (Anzahl Zeichen bzw. Anzahl Sekunden) angegeben. Bei den Protokollen SKYPER und SCALL wird dieser Parameter automatisch bestimmt. In der unregistrierten Version ist die maximale Länge auf 60 Zeichen bzw 5 Sekunden beschränkt.

MSGTYPE=
Gibt an, ob die Nachricht nur Ziffern (NUMERIC), beliebige Zeichen (ALPHANUMERIC) oder gar keine Zeichen (TONE) enthalten darf (ALPHANUMERIC ist der Standard). Bei den Protokollen SKYPER und SCALL wird dieser Parameter automatisch bestimmt.

PARITY=NONE
Gibt die Art der Parität an (NONE, EVEN oder ODD). Dieser Wert, falls vorhanden, überschreibt den Wert in sendsms.cfg.

PASSWORD=
Für manche Provider wird ein Passwort benötigt, welches hier angegeben werden kann.

PHONE=
Hier wird die Telefonnummer, über die Nachrichten an das entsprechende Netz gesendet werden können, angegeben. Ist das letzte Zeichen der Nummer ein '&', so bedeutet dies, daß beim Anwählen des Providers an diese Nummer die Nummer des Empfängers angehängt wird.
Bei Benutzung eines GSM-Zugangs geben Sie hier die SMSC-Adresse in der Form +<a><b><c> an, wobei <a> die Landesvorwahl (ohne Nullen), <b> die Ortsvorwahl (ohne Null) und <c> die Telefonnummer angibt.
Dieser Parameter kann pro Provider mehrfach definiert werden.

PREFIX=
Hier steht die Vorwahl des entsprechnden Netzes. Anhand dieser Vorwahl wird beim Aufruf von SendSMS mit einer Telefonnummer (kein Alias aus dem Telefonbuch) überprüft, zu welchem Netz die entsprechende Telefonnummer gehört. Dieser Parameter kann pro Provider mehrfach definiert werden.

PROTOCOL=
Hier muß TAP, UCP, GSM, Scall, Skyper oder CITYRUF stehen. Im Falle von Scall und Skyper muß das Modem so konfiguriert werden, daß XON/XOFF-Zeichen nicht gefiltert werden (zur Gegenstelle übertragen werden).

REMOVEPREFIX=
Die Nummer des Empfängers wird zusammen mit der zu übersendenden Nachricht verschickt. Da bei manchen Providern nur die Nummer (ohne Vorwahl) angegeben werden muß, kann man mit diesem Parameter (=1) angeben, daß der PREFIX (falls definiert) nicht gesendet wird.

STOPBITS=1
Gibt die Anzahl der Stopbits an (1 oder 2). Dieser Wert, falls vorhanden, überschreibt den Wert in sendsms.cfg.

TRANSTABLE=tap.ctt
Gibt eine Zeichenübersetzungstabellen an (siehe Zeichenübersetzungstabellen).

WAITAFTERCONNECT=
Bei manchen Providern (mit UCP-Protokoll) muß nach dem Connect, bevor die erste Nachricht versendet wird, noch eine Pause eingelegt werden. Dieser Parameter gibt die Länge der Pause (in Sekunden) an. Dies ist anscheinend nur nötig, wenn das Modem nicht auf V.42/LAPM gesetzt ist. Falls möglich ist es der bessere Weg, in MODEMINIT (s.u.) einen entsprechendes AT-Kommando anzugeben.

Beispiel

[D1]
PHONE=01712092522
PROTOCOL=TAP
PREFIX=0171
MSGTYPE=ALPHANUMERIC
MSGLEN=160

sendsms.pbk

Hier können zu den einzelnen in sendsms.pro definierten Telefonnetzen (jeweils ein eigens Kapitel) Kürzel (Alias) für Telefonnummern definiert werden. Jedes Kürzel steht in einer eigenen Zeile und danach durch '=' getrennt die zugehörige Nummer (mit Vorwahl). Das Telefonbuch steht nur in der registrierten Version zur Verfügung!!!!

Beispiel

[D1]
wobo=01714160598        ; Wolfgang Böcherer

Zeichenübersetzungstabellen

Da die verschiedenen von SendSMS unterstützten Protokolle per Definition verschiedene Zeichensätze verwenden und viele Provider diese Zeichensätze nochmals modifizieren, bietet SendSMS die Möglichkeit für jeden Provider eine eigen Übersetzungsabelle zu definieren. Ist zu einem Provider keine explizite Tabelle angegeben wird eine Standardtabelle benutzt. Um eine Tabelle einem Provider zuzuordnen wird eine Datei mit folgendem Format definiert und als Parameter TRANSTABLE bei der entsprechenden Providerdefinition angegeben:
Für jedes einzelnen Zeichen wird je eine Zeile mit drei durch Leerzeichen getrennte in Hexdarstellung angegebenen Codes eingegeben. Der erste Code gibt den Zeichencode des zu wandelnden Zeichens an, der zweite Wert den vom Provider benutzten Code und der dritte Wert den Code (ISO 8859-1) in den ein vom Provider empfangenes Zeichen zurückgewandelt wird.

Sprachnachrichten

SendSMS kann außer mit GSM-Telefonen und Pagern auch mit "gewöhnlichen" Telefonen kommunizieren und Sprachnachrichten abspielen bzw. aufnehmen. Hierzu ist es nötig ein Voicemodem oder CAPI 2.0 zur Kommunikation zu benutzen. In der Providerdatei (sendsms.pro) sind Einträge zur Sprachkommunikation vordefiniert. Um eine Sprachnachricht abzuspielen muß die entsprechende Nachricht im nativen Kodierungsformat des zu benutzenden Devices vorliegen (diese Formate unterscheiden sich leider zwischen den verschiedenen Modemherstellern). Um eine Nachricht in einem anderen Format abzuspielen müssen entsprechende Konvertierungsprogramme vorgeschaltet werden. Solche Konvertierungsprogramm sind in großer Zahl frei erhältlich (z.B. sox oder mgetty+sendfax). Zum Abspielen einer Sprachnachricht wird SendSMS genau wie zum Versenden einer Textnachricht aufgerufen, nur daß explizit der vordefinierte Provider VOICE (für Voicemodem) bzw. VOICE_ISDN (für CAPI 2.0) angegeben werden muß:
sendsms -PVOICE 07246942484 -Fvoice.dat
oder
sendsms -PVOICE 07246942484 < voice.dat
In beiden Fällen wird die angegeben Nummer angerufen und die Sprachnachricht, die unter der Datei voice.dat gespeichert ist, abgespielt.

Zum Aufzeichen einer Sprachnachricht muß der Dateiname, der mit dem Parameter -F angegeben wird, mit einem Masterspace (@) beginnen.

Server-Modus

In der registrierten Version von SendSMS gibt es einen zusätzlichen Server-Modus (-q). Mit diesem haben Sie die Möglichkeit eine SendSMS-Instanz im Hintergrund laufen zu lassen, welche in regelmäßigen Abständen das Spoolverzeichnis kontrolliert und eventuell vorhandene Nachrichten versendet. Hierdurch ist es möglich Nachrichten zu sammeln und zusammen, innerhalb einer einzelnen Verbindung, zu versenden, was wiederum Geld spart. Sobald eine SendSMS-Instanz im Server-Modus läuft werden von allen weiteren Instanzen deren Nachrichten automatisch gespoolt, anstatt sie direkt zu versenden. Durch zusätzliche Parameter kann SendSMS aber auch, unabhängig davon ob ein Server läuft oder nicht, dazu gebracht werden, die Nachrichten zu spoolen bzw. sie direkt zu versenden. die Spooldatei selbst generieren (ASCII-Format).

Bei Verwendung eines GSM-fähigen Devices ist es auch möglich Nachrichten zu empfangen (SIM auslesen) und zu speichern (-Q).

Um Nachrichten zu spoolen, können Sie einfach SendSMS aufrufen oder

Aufruf Syntax

SendSMS wird wie folgt aufgerufen:

sendsms [Optionen] {phoneNo | alias | @<inputFile>} [{message | < msgFile}]

Optionen sind:
-p<provider> gibt den Provider zur angegebenen Telefonnummer an
-f<msgFile> gibt den Namen eines Files an, dessen Inhalt als Nachricht verschickt werden soll
-c<cfgFile> gibt den Namen der Konfigurationsdatei an (sendsms.cfg)
-r<proFile> gibt den Namen der Providerdatei an (sendsms.pro)
-b<pbkFile> gibt den Namen der Telefonbuchdatei an (sendsms.pbk)
-d<device> hiermit kann die Benutzung eines bestimmten Devices vorgegeben werden
-m<MSN> gibt die zu verwendende MSN an (nur bei CAPI 2.0))
-q<n> startet SendSMS im Servermodus (Spoolverzeichnis wird alle <n> Minuten überprüft; kein Empfang von SMSs)
-Q<n> startet SendSMS im Servermodus (Spoolverzeichnis wird alle <n> Minuten überprüft; empfangene SMSs werden ausgelesen und gespeichert (GSM))
-U<userexit> gibt eine Programm-/Batchdatei an die gestartet wird, wenn eine Nachricht gesendet oder empfangen wurde (Servermodus)
-s SendSMS spoolt die Nachricht(en), auch wenn z.Zt. kein Server läuft
-n SendSMS sendet die Nachricht(en) direkt über das Modem, auch wenn z.Zt. ein Server läuft
-t<Zeichenübersetzungstabelle> gibt an, ob die Nachricht den ISO-Zeichensatz (iso8859) oder die Codepage 850 (cp850) verwendet
-o<Absender> überschreibt den Absender (UserID) der Nachricht an
-i Installiert SendSMS (Servermode) als einen Service (nur WindowsNT)
-x Deinstalliert den Service SendSMS (nur WindowsNT)
-v verbose; SendSMS zeigt die Kommunikation mit dem Modemdevice am Bildschirm an

Z.B.: sendsms 0171xxxxx "Ich teste SendSMS."

Es ist immer mindestens ein Parameter - die Telefonnummer des Empfängers bzw. ein Alias (Eintrag im Telefonbuch) - notwendig. Beginnt dieser erste Parameter mit einem Masterspace (@), so gibt dieser nicht eine Nummer bzw. ein Alias an, sondern den Namen einer Datei, welche die Nummern von mehreren Empfänger beinhaltet. Mit solch einer Datei kann eine Nachricht an beliebig viele Empfänger, welche auch über verschiedene Netze erreichbar sind, versendet werden. Eine entsprechende Datei muß folgendes Format haben:

[<provider1>]
PHONE=<nummer1>
PHONE=<nummer2>
PHONE=<nummer3>
PHONE=<alias1>
PHONE=<alias2>

[<provider2>]
PHONE=<nummer4>

Durch eckige Klammern eingerahmt werden Provider (müßen in der Datei sendsms.pro vorhanden sein) angegeben, zu welchen in den folgenden Zeilen Telefonnummern für Empfänger folgen. Pro Zeile wird eine Nummer (PHONE=...) bzw. ein Alias angegeben. In obigem Fall wird die Nachricht also an 5 Nummern des ersten Providers (während der selben Verbindung) gesendet. Außerdem wird die Nachricht auch noch an einen Empfänger von <provider2> gesendet.

Als zweiter Parameter wird die zu versendende Nachricht in Hochkommata angegeben (ACHTUNG: Je nach verwendeter Shell werden bestimmte Zeichen von dieser interpretiert und ersetzt (z.B. '!') und/oder müssen anstatt Hochkommata doppelte Hochkommata angegeben werden). Eine auf der Kommandozeile angegebene Nachricht darf nicht mit einem Bindestrich beginnen. Alternativ kann die zu versendende Nachricht auch über eine Umleitung aus einer Datei angegeben werden (<msgFile) oder mit dem Parameter -F<msgFile>, wobei <msgFile> den Namen einer Datei angibt, deren Inhalt als Nachricht (zumindest die ersten n Zeichen) versendet wird. Wird beim Aufruf von SendSMS nur ein Parameter (Empfänger) angegeben, so wird die zu versendende Nachricht von der Konsole eingelesen (nicht in der Version für Windows 3.x). Soll eine Nachricht an einen Provider gesendet werden, welcher anhand der Nummer des Empfängers nicht eindeutig zu identifizieren ist, so muß über den Parameter -P der entsprechende Provider angegeben werden (Name wie er in der Datei 'sendsms.pro' definiert ist). Z.B.: Es soll eine Nachricht an einen Quix-Empfänger gesendet werden. Da SendSMS anhand der Quix-Nummer (7-stellige Nummer ohne Vorwahl) nicht erkennen kann, was dies für eine Nummer ist, muß zusätzlich beim Aufruf -PQuix_News angegeben werden (bei D1-Nummern wird anhand der Vorwahl (0171) erkannt, daß es eine D1-Nummer ist).

Wird SendSMS mit dem Parameter -q<n> gestartet (alle weiteren Parameter werden in diesem Fall ignoriert), so läuft SendSMS als Server und überprüft alle Minuten das Spoolverzeichnis (SPOOLDIR). Ist <n> = 0, wird SendSMS nach einmaligem abarbeiten des Spoolverzeichnisses beendet. Falls Dateien vorhanden sind werden diese innerhalb einer minimalen Anzahl von Verbindungen versendet. Sobald ein SendSMS-Server läuft werden alle weiteren Instanzen automatisch im Spoolmodus gestartet. Mit den Parameter -n (direkt versenden) bzw. -s (auf jeden Fall spoolen) kann dieses Verhalten geändert werden. Mit diesen Mechanismen hat man die Möglichkeit Nachrichten über eine Zeitdauer zu sammeln und diese mit einer minimalen Anzahl von Verbindungen innerhalb der günstigsten Tarifzeiten zu versenden.

Mit dem Parameter -t wird angegeben in welchem Zeichensatz die zu versendende Nachricht angegeben wird. Standarmäßig benutz SendSMS unter OS/2, DOS, und WindowsNT die Codepage 850 (cp850) und unter Windows 3.x und allen Unix-Versionen ISO-8859 (iso8859). Wenn die zu versendende Nachricht nicht mit dem standard Zeichensatz angegeben wird, so muß dies mit diesem Parameter angezeigt werden.

Mit dem Parameter -U kann ein Userexit definiert werden. Dies ist ein externes Programm oder eine Batch-/Scriptdatei, die von SendSMS immer dann aufgerufen wird, wenn eine Nachricht erfolgreich versendet oder empfangen wurde bzw. wenn eine Nachricht nicht gesendet werden konnte. Als Eingabeparameter erhält das aufgerufene Programm folgende 4 Werte:

In der OS/2- und der WindowsNT-Version kann als Userexit auch eine Funktion aus einer DLL angegeben werden. Hierzu werden der Name der DLL und der Name der Funktion durch ein Masterspace (@) getrennt (-u<dll>@<function>).

Beispiele:
sendsms 01714160598 test
Die Nachricht "test" wird an die angegebene Nummer gesendet. Es wird automatisch der erste Provider aus sendsms.pro benutzt, bei welchem der PREFIX=0171 definiert ist.

sendsms -PD1 01714160598 "Dies ist eine Testnachricht"
Die Nachricht "Dies ist eine Testnachricht" wird an die angegebene Nummer gesendet. Der zu verwendende Provider wird explizit angegeben.

sendsms 01714160598 -Fmsg.txt
sendsms -dModem1 01714160598 < msg.txt
In beiden Fällen wird der Inhalt der Datei msg.txt an die angegeben Nummer gesendet. Im zweiten Fall wird die Benutzung des Devices Modem1 (Parameter NAME im Kapitel [Device] in sendsms.cfg) vorgegeben.

sendsms @group "Alarm an alle"
Es wird die Nachricht "Alarm an alle" an alle Nummern, die in der Datei group aufgelistet sind, versendet.

sendsms -PVOICE 07246942484 < voice.dat
sendsms -PVOICE 07246942484 -Fvoice.dat
Es wird eine Sprachnachricht (Voice-Modem oder CAPI 2.0) an die angegebene Nummer gesendet. Die Datei voice.dat muß eine Voice-Datei in dem nativen Format des benutzen Devices sein.

sendsms -PVOICE 07246942484 -F@voice.dat
Es wird die angegebene Nummer angerufen und eine Sprachaufzeichnung im nativen Deviceformat in der datei voice.dat abgespeichert.

Integration in Email-Systeme

Folgende .forward-Datei soll als Beispiel dienen, wie einfach es ist SendSMS in ein Email-System (Unix) zu integrieren. Sie legen einfach nur eine .forward Datei mit folgendem Inhalt in Ihrem Homeverzeichnis ab:
\wobo, "| egrep -ih '^From:|^Subject:' | /usr/local/sendsms/sendsms -s 01711234567 > /dev/null"
Diese Datei bewirkt, daß alle für Sie ankommenden Emails an die UserId wobo (hier geben Sie Ihre eigen UserId an) weitergeleitet werden (das heißt, die Email ist für Sie weiterhin ganz normal verfügbar, so wie auch ohne .forward Datei) und daß automatisch eine Nachricht (mit dem Absender und dem Subject der Email) durch SendSMS an die angegebene Nummer gesendet wird. In dem angegebenen Beispiel werden die Nachrichten gespoolt, was auch bedeutet, daß ein Serverprozess zum Arbeiten der Spooldateien gestartet werden muß. Sollen die Nachrichten direkt versendet werden (ohne Sooling) so muß in der .forward-Datei ein Script aufgerufen werden, welches SendSMS ohne -s aufruft und als Returncode immer 0 zurück gibt (der Mailer benötigt 0, während SendSMS die Anzahl der versendeten Nachrichten zurück gibt).

Z.B.:

#! /bin/sh
egrep -ih '^From:|^Subject:' | /usr/local/sendsms/sendsms 01711234567 > /dev/null
exit 0

Unter WindowsNT/Windows 9x ist eine entsprechende Benachrichtingung durch SendSMS bei eintreffenden Emails z.B. mit dem Freeware-Produkt POSTIE möglich.

Returncodes

SendSMS gibt als Returncode die Anzahl der erfolgreich versendeten Nachrichten zurück (Returncode 0 bedeutet, daß SendSMS zwar regulär beendet wurde, aber keine Nachricht versenden konnte). Ist der Returncode negativ, so handelt es sich um einen Errorcode, welcher in der Datei sendsms.err erläutert wird. Dieses Feature ist nur in der registrierten Version verfügbar.

Wo finde ich die neueste Version?

Die neuste Version finden Sie unter www.bai.de.

Probleme/Fragen

Schicken Sie eine Email mit folgenden Angaben

an info@bai.de.
Böcherer Angewandte Informatik
Dipl.-Inform. Wolfgang Böcherer
Im Grün 9
D-76316 Malsch
Tel: +49 (0)7246 942484
Fax: +49 (0)7246 942485
Email: info@bai.de
WWW: http://www.bai.de