# SendSMS Handbuch

## Inhalt

- Lizenz
- Allgemeines
- Installation
- Konfiguration
- Zeichenübersetzungstabellen
- Sprachnachrichten
- Server-Modus
- Userexit
- Zeitversetztes Senden und Gültigkeitsdauer
- Funktionsauswahl
- Aufruf Syntax
- Integration in Email-Systeme
- Integration in WWW-Server
- Graphische Benutzeroberfläche
- X.25/X.31
- TCP/IP
- Returncodes
- Abkürzungen
- Wo finde ich die neueste Version
- Probleme/Fragen

## Lizenz

SendSMS darf kostenlos für eine Dauer von 20 Tagen getestet werden. Danach muß SendSMS für eine dauerhafte Nutzung registriert werden. Jeder Anwender erkennt die Allgemeinen Nutzungs- und Geschäftsbedingungen an.

## Allgemeines

SendSMS ist ein Programm zum Versenden und Empfangen von ShortMessages (SMS) an GSM-Telefone oder Pager mittels der Protokolle TAP, UCP, SMPP, CIMD2 oder GSM. In Deutschland sind dies z.B. Telefone mit D1-, D2- oder EPlus-Karte oder verschiedene Pager (Quix, TeLMI, CityRuf, Scall, Skyper,...). SendSMS ist ebenfalls in der Lage Sprachnachrichten aufzunehmen/abzuspielen.

SendSMS (Standard-Edition) hat u.a. folgende Eigenschaften:

- zusätzliche graphische Oberfläche durch Java-Frontend (JRE 1.2)
- verfügbar auf vielen verschiedenen Betriebssystemen
- TAP-Protokoll (z.B.: D1, EPlus)
- AIM-Erweiterungen für TAP (z.B.: D1, EPlus)
- UCP-Protokoll (z.B.: D2, Quix)
- SMPP-Protokoll (z.B.: EPlus Großkundenzugang)
- CIMD2-Protokoll
- Senden von DTMF-Sequenzen
- GSM 07.05 (MO und MT; PDU-Mode)
- Empfangen von SMS's (GSM; in Professional-Edition auch mit UCP, SMPP und CIMD2)
- UUS (User-User-Signalling) mit CAPI 2.0 (kostenloser Versand im D-Kanal; nur falls dies von verwendeter CAPI und Provider unterstützt wird)
- bestätigte Übertragung von SMSs
- Statusabfrage von zuvor übertragenen SMSs (*)
- Löschen von zuvor übertragenen aber noch nicht ausgelieferten SMSs (*)
- direkte Anzeige auf dem Display des empfangenden Telefons möglich
- Unterstützung der Option Reply-Path-Request
- Unterstützung für lange Kurznachrichten (Aufteilen/Zusammensetzen einer Nachricht in bis zu 255 SMSs) (*)
- Emulation der CityRuf-Terminalschnittstelle
- zeitversetztes Senden (*)
- CAPI 2.0 Unterstützung
- RemoteCAPI-Unterstützung (BINTEC-Erweiterung) (auch für Unix)
- TAPI 2.0 Unterstützung
- Aufzeichnen und Abspielen von Sprachnachrichten
- Definition von beliebig vielen Zeichenübersetzungstabellen möglich
- Unterstützung für binäre Nachrichten (*)
- Unterstützung für Smart Messaging (wie z.B. Klingeltöne, Operator-Logos, Visittenkarten) (*)
- beliebig konfigurierbar für weitere Dienstanbieter mit TAP, UCP, SMPP, CIMD2 oder GSM 07.05. Fordern Sie hierfür einfach einen Mitarbeiter des zu konfigurierenden Providers auf unser Dienstanbieterformular auszufüllen, so daß wir eine entsprechende Vorkonfiguration erstellen können.
- vorkonfiguriert für viele Provider in der ganzen Welt
- Nachricht kann über Kommandozeile oder aus einer Datei angegeben werden (Batchmodus möglich)
- einfache Einbindung in Email-Systeme und/oder WWW-Server
- einfache Installation und Konfiguration
- Gerät (Modem, ISDN-Karte) wird zwischen den Wahlversuchen nicht blockiert
- Konfiguration für die meisten Modems, ISDN-Karten und ISDN-Terminaladapter möglich
- Gebührenanzeige (CAPI)
- Definition für mehrere Geräte möglich (falls eines nicht verfügbar ist, wird das nächste benutzt) (*)
- Definition von Kopf- und/oder Fußzeile (*)
- Führen einer Protokolldatei (Logdatei) bzw. Protokollierung über syslogd (*)
- auswertbare Returncodes (Errorcode oder Anzahl erfolgreich bearbeiteter Nachrichten) (*)
- Definition der Anzahl der Wahlwiederholungen möglich (*)
- frei definierbare Pause zwischen den Wahlversuchen (*)
- Telefonbuch: anstelle der Telefonnummer können definierte Kürzel benutzt werden (*)
- Versenden von Nachrichten an mehrere Empfänger auch über verschiedene Provider (*)
- Versenden von mehreren Nachrichten an einen oder mehrere Empfänger während einer einzelnen Verbindung (*)

Die Server-Edition hat alle Eigenschaften der Standard-Edition und zusätzlich noch folgende:

- kann unter WindowsNT als Service installiert werden (*)
- über einen Userexit kann automatisch ein externes Programm gestartet werden, wenn eine Nachricht empfangen oder gesendet wurde (*)
- Nachrichten können gespoolt und im Servermodus mit einer minimalen Verbindungsanzahl, z.B. während günstiger Tarifzeiten, versendet werden (*)
- Blackliste (Nummern an die keine Nachrichten gesendet werden dürfen) (*)
- Allow- und Denyliste (Benutzer die SendSMS benutzen bzw. nicht benutzen dürfen) (*)

Die Professional-Edition hat alle Eigenschaften der Server-Edition und zusätzlich noch folgende:

- Unterstützung von Großkundenzugänge (*)
- Datendurchsatz (pro Prozeß) mit GSM bis zu 720 SMS/Stunde und mit X.31 (D-Kanal) bis zu 18000 SMS/Stunde. Bei TCP/IP und X.25 ist der Durchsatz um ein Vielfaches höher (vom Netz und der Konfiguration abhängig).
- Empfangen von SMS's (GSM, UCP, SMPP, CIMD2) (*)
- X.25-Unterstützung (z.Zt. nur für Windows mit Eicon-Karte)(*)
- X.31-Unterstützung (*)
- TCP/IP-Unterstützung (*)

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 benötigten Dateien in ein anzugebendes Verzeichnis.

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 Auflegemechanismus (ESCAPE-Sequenz oder DTR zurücksetzen) funktioniert.

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 Regel müssen nach der Installation mit dem Setup-Programm keine weiteren Konfigurationen zur Nutzung von SendSMS durchgeführt werden. SendSMS bietet jedoch die Möglichkeit durch seine Konfigurationsdateien und duch Kommandozeilenparameter das Programm auf die unterschiedlichsten Anwendungsfälle anzupassen.

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, 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 indem auch das Programm selbst liegt. 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] werden die Kommunikationsschnittstellen konfiguriert und im Kapitel [SMSGUI] wird die Nutzung des graphischen Frontends konfiguriert. Des Weiteren können in den Kapiteln [ALLOW] und [DENY] Benutzerbeschränkungen, bzw. in [BLACKLIST] Telefonnummern an die keine Nachrichten versendet werden dürfen, definiert werden. Das Kapitel [Device] kann in der registrierten Version beliebig oft wiederholt werden. Beim Verbindungsaufbau wird immer versucht das als erstes definierte Device zu benutzen. Ist dieses Device gesperrt oder reagiert nicht, so wird das nächste benutzt. Sollte der Verbindungsaufbau mit allen Devices 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).

COUNTRYCODE=+49
Gibt die internationale Länderkennung (z.B. '+49' für Deutschland oder '+1' für Nord-Amerika) an. Dieser Parameter muß unbedingt korrekt angegeben werden, damit SendSMS eine zu wählende Nummer richtig bilden kann (ist dieser Wert falsch angegeben, wird bei der Anwahl einer nationalen Nummer die Länderkennung mitgewählt, was nicht funktioniert).

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

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

INTERNATIONALPREFIX=00
Gibt ein Ziffernfolge an, mit welcher ein '+'-Zeichen am Anfang einer Telefonnummer ersetzt wird und anhand derer eine internationale Nummer identifiziert werden kann (default: "00").

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

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 (Facility=LOG_DAEMON, Priority=LOG_INFO). [nur in der registrierten Version]

LOGLEVEL=255
Mit diesem Parameter kann angegeben werden welche Informationen in der Logdatei protokolliert werden. Der angegebene Wert wird als Bitfeld interpretiert, wobei z.Zt. folgende Bits interpretiert werden:

Bit0 | informative Meldungen (z.B. daß eine Nachricht empfangen wurde)
Bit1 | Warnungen (z.B. daß die SMSC das Gültigkeitsdatum überschrieben hat)
Bit2 | Fehler (z.B. daß ein Provider nicht verfügbar ist)

[nur in der registrierten Version]

LONGDISTANCEPREFIX=0
Gibt eine Ziffer(-nfolge) an, die für ein nationales Ferngespräch angegeben werden muß (wenn z.b. die internationale Nummer +49 721 9109550 innerhalb von Deutschland gewählt werden soll muß die Länderkennung '+49' durch den LONGDISTANCEPREFIX 0 ersetzt werden).

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. Der Bereich geht von -15 (hohe Priorität) bis 15 (niedrige Priorität).

RCZEROIFOK=1
Gibt an, daß der Returncode im Falle eines erfolgreichen Versendens gleich 0 sein soll. Dies ist unter Unix so üblich und sollte bei einer Einbindung in z.B. ein Emaisystem verwendet werden. Ist dieser Parameter nicht gesetzt, wird die Anzahl der übertragenen Nachrichten bzw. ein fehlercode zurück gegeben.

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, wie oft 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]

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

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))

ADDRESS=
Gibt die IP-Adresse eines ISDN-Routers bei Verwendung einer RemoteCAPI (BINTEC-Erweiterungen) an.

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. (wird nicht in Verbindung mit TAPI benutzt)

BCHANNELINFO=3,0,0,0,0,ff
Bei Nutzung einer Standleitung mit CAPI2.0 werden hier die Leitungsparameter angegeben (jeweils einzelne Bytes in Hex-Format durch Kommata getrennt). Die Kodierung kann der CAPI-Dokumentation entnommen werden. Im Folgenden sind die Standardkodierungen angegeben:

3,0,0,0,0,ff | 1. Kanal, 64 kbit/s, DTE-Modus
3,1,0,0,0,ff | 1. Kanal, 64 kbit/s, DCE-Modus
3,0,0,0,0,0,ff | 2. Kanal, 64 kbit/s, DTE-Modus
3,1,0,0,0,0,ff | 2. Kanal, 64 kbit/s, DCE-Modus

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

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. (wird nicht in Verbindung mit TAPI benutzt)

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).

Wird die Kommunikation mittels CAPI 2.0 abgewickelt, so wird hier der Pfad zur Capi-DLL/-Shared-Object (Windows, OS/2, Linux) bzw. zum CAPI-Device (Unix) angegeben.

Unter Windows wird zunächst versucht das angegebene Device exlusiv zu öffnen. Sollte dies nicht gelingen (z.B. weil der Port von RAS benutzt wird) wird versucht das Device über die TAPI-Schnittstelle zu öffnen. Durch diese Vorgehensweise hat man die Möglichkeit ein Modem mit anderen Applikationen zu teilen, es stehen jedoch nicht alle Funktionen zur Verfügung, wenn das Device jedoch über die TAPI-Schnittstelle geöffnet wird.

DEVICETYPE=Modem
Gibt die Art der verwendeten Hardware (Modem, Voice-Modem, GSM 07.05, CAPI 2.0, CAPI 2.0 (BINTEC), X.25 (EICON) oder SERIAL) 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). (wird nicht in Verbindung mit TAPI benutzt)

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. (wird nicht in Verbindung mit TAPI benutzt)

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

- Echo an
- Antwort an
- Antwort als Text

eingestellt werden. (wird nicht in Verbindung mit TAPI benutzt)

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. (wird nicht in Verbindung mit TAPI benutzt)

LINETYPE=ANALOG
Gibt an, ob es sich bei der Telefonleitung um eine analoge (ANALOG), um eine digitale (ISDN), eine X.25 (X.25) oder eine X.31-Leitung (X.31) 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.

MSGDELAY=<n>
Gibt eine Anzahl von Sekunden an, welche zwischen dem Versenden von zwei Nachrichten innerhalb von einer Verbindung gewartet wird (wird normalerweise nicht benötigt).

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.

ORIGINATINGADDR=01234..
Gibt die Absendeadresse (lokale Nummer) bei Verwendung von X.25 an (nur in Professional-Edition).

PACKETLEN=128
Gibt die X.25-Packetlänge bzw. die X.31-Packetlänge (Standard: 128) an.

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. (wird nicht in Verbindung mit TAPI benutzt)

PDUWITHOUTSCA=1
Einige GSM-Modems benötigen eine PDU ohne vorgestellte SCA (in Kontrast zu GSM 07.05). Dieser Parameter ist z.B. für Siemens M1, Falcom A1 oder Xircom CreditCard notwendig, während er bei z.B. Siemens E10, S10, M20, Nokia DataCard, CardPhone oder Data Suite nicht gesetzt werden darf.

PIN="1234"
Gibt die PIN für Ihre SIM an (GSM-Device). Falls Sie eine GSM-Karte verwenden, bei welcher man keine PIN eingeben braucht/kann (AT+CPIN? funktioniert nicht), darf dieser Parameter nicht belegt werden. Bei manchen Devices muß die PIN in Hochkommata angegeben werden, wohingegen dies bei anderen Devices zu Fehlern führt.

PLAYDTMF=AT#VTS=
Gibt ein Kommando zum Abspielen einer DTMF-Sequenz (numerische Zeichen) (nur Voice-Modem) an. (wird nicht in Verbindung mit TAPI benutzt)

PORT=6000
Bei Verwendung einer RemoteCAPI (BINTEC-Erweiterungen) gibt dieser Parameter den PORT an, auf welchen der ISDN-Router konfiguriert ist. Bei Verwendung einer X.25-Karte gibt dieser Parameter den Port der zum Rufaufbau verwendet werden soll an.

PUK="1234"
Gibt den PUK für Ihre SIM an (GSM-Device). Falls Sie eine GSM-Karte verwenden, bei welcher man keine PIN eingeben braucht/kann (AT+CPIN? funktioniert nicht), darf dieser Parameter nicht belegt werden. Bei manchen Devices muß der PUK in Hochkommata angegeben werden, wohingegen dies bei anderen Devices zu Fehlern führt.

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

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

SIMPHONE= Gibt die Telefonnummer der in dem entsprechenden GSM-Modul verwendeten SIM an. Dies Angabe ist nur notwendig, wenn das Modul das Kommando +CNUM nicht unterstützt.

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. (wird nicht in Verbindung mit TAPI benutzt)

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. (wird nicht in Verbindung mit TAPI benutzt)

STOPVOICEMODE=AT#CLS=0
Gibt das Kommando an mit dem bei einem Voice-Modem der Voice-Modus beendet wird. (wird nicht in Verbindung mit TAPI benutzt)

SUPPRESSREINIT=1
Verhindert, daß ein Devices im Servermodus bei jedem Öffnen erneut initialisiert wird. Ist dieser Parameter gesetzt, so wird daß Device nur beim ersten Öffnen initialisiert (nur im Servermodus). Hierdurch kann man einen wesentlich höheren Durchsatz erreichen. Der Parameter sollte nur benutzt werden, wenn sichergestellt ist, daß keine andere Applikation zwischenzeitlich auf das Device zugreift und u.U. die Einstellungen verändert.

TEI=1
Gibt den TEI (Terminal Endpoint Identifier; wird vom Netzbetreiber zugewiesen) an, der zum Verbindungsaufbau über X.31 verwendet werden soll.

USEDCHANNEL=1
Gibt an, daß die Verbindung (X.31) über den D-Kanal erfolgen soll. Ist dieser Wert nicht oder =0 gesetzt wird einen B-Kanal benutzt.

VOICECOMPRESSION=ALAW
Wenn dieser Parameter definiert ist werden aufgenommene Sprachnachrichten als WAV-Datei gespeichert und es können WAV-Dateien abgespielt werden, falls diese in einem unterstützten Format vorliegen. Z.Zt. werden die Formate ALAW (ISDN in Europa) und ULAW (ISDN in USA) unterstützt (8kHz, 1 Kanal, 8 Bit).

VOICERECEIVE=AT#VRX
Gibt das Kommando an mit dem bei einem Voice-Modem der Sprachempfangsmodus gestartet wird (Aufzeichnen von Sprachnachrichten). (wird nicht in Verbindung mit TAPI benutzt)

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

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

WINDOWSIZE=2
Gibt die Fenstergröße für X.25 (Standard: 7) bzw. die B3-Fenstergröße für X.31 (Standard: 2) an.

X31CHANNELS=0,0,1,1,0,0
Gibt die zu verwendenden X.31-Kanäle an. Es werden durch Kommata getrennt die Werte für den

- kleinsten eingehenden Kanal
- größten eingehenden Kanal
- kleinsten bidirektionalen Kanal
- größten bidirektionalen Kanal
- kleinsten ausgehenden Kanal
- größten ausgehenden Kanal

angegeben. Wird dieser Parameter nicht spezifiziert wird der Standard (0,0,1,1,0,0) verwendet, welcher in den meisten Fällen funktioniert.

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

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

cfgEditable=1
Gibt an, ob die Datei sendsms.cfg von einem Endbenutzer des graphischen Frontends modifiziert werden darf (=1) oder nicht (=0). Selbst wenn dieser Parameter auf 1 gesetzt ist kann der Endbenutzer die Konfiguration nur modifizieren, wenn er auch Schreibrecht auf die Datei sendsms.cfg hat.

proEditable=1
Gibt an, ob die Datei sendsms.pro von einem Endbenutzer des graphischen Frontends modifiziert werden darf (=1) oder nicht (=0). Selbst wenn dieser Parameter auf 1 gesetzt ist kann der Endbenutzer die Providerdefinitionen nur modifizieren, wenn er auch Schreibrecht auf die Datei sendsms.pro hat.

showLogfile=0
Gibt an, ob ein Endbenutzer des graphischen Frontends die Logdatei von SendSMS anzeigen lassen kann (=1) oder nicht (=0). Selbst wenn dieser Parameter auf 1 gesetzt ist kann der Endbenutzer die Logdatei nur anzeigen lassen, wenn er auch Leserecht auf die Logdatei hat.

In den Kapiteln [ALLOW] und [DENY] stehen die im Folgenden aufgeführten Schlüsselworte zur Verfügung. Jedes Schlüsselwort muß in einer neuen Zeile stehen. Es wird immer nur eine von beiden Listen benutzt, sind beide definiert so wird die ALLOW-Liste benutzt.

USER= Dieser Parameter kann mehrfach angegeben werden. Es wird jeweils eine UserID angegeben, welche SendSMS benutzen bzw. nicht benutzen darf. Werden im Kapitel [ALLOW] eine oder mehrere UserIDs angegeben, darf SendSMS nur von diesen Benutzern benutzt werden. Werden die UserIDs im Kapitel [DENY] angegeben, dürfen alle Benutzer, außer den aufgelisteten, das Programm benutzen.

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

PHONE= Dieser Parameter kann mehrfach angegeben werden. Es wird jeweils eine Telefonnummer angegeben, an welche keine Nachrichten versendet werden sollen. Wenn die angegebene Nummer mit dem Zeichen '&' endet, so handelt es sich um einen Präfix, d.h. es werden alle Nummern gesperrt, die mit dem angegeben Wert beginnen. Die Nummern müssen in dem Format angegeben werden, wie sie auch zum Provider übertragen worden wären, d.h. es müssen mögliche Transformationen (siehe PREFIX) berücksichtigt werden.

### 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öscht 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)

ADDRESS=<ip-address>
Dieser Parameter ist äquivalent zu dem Parameter PHONE, nur daß hier eine IP-Adresse für eine TCP/IP-Verbindung anstelle einer Telefonnummer angegeben wird.

ADDRNPI=9
Gibt die NumberingPlanIdentity an. Dieser Parameter wird in der Regel bei den Protokollen SMPP und UCP zur Nutzung mit Großkundenzugängen benötigt. Fragen Sie bei Ihrem Provider nach dem entsprechenden Wert.

ADDRTON=0
Gibt den TypeOfNumber an. Dieser Parameter wird in der Regel bei den Protokollen SMPP und UCP zur Nutzung mit Großkundenzugängen benötigt. Fragen Sie bei Ihrem Provider nach dem entsprechenden Wert.

ADDRESSRANGE=
Gibt den Address Range an (nur SMPP). Fragen Sie bei Ihrem Provider nach dem entsprechenden Wert.

AUTOALERT=<telefonnummer>
Dieser Parameter wird nur benutzt, wenn SendSMS im Servermodus läuft und mit dem Parameter -aRECEIVE (zum Lesen von ankommenden SMSs) aufgerufen wurde. In diesem Fall gibt der Parameter eine Telefonnummer an, für welche bei jedem Abarbeiten der SMS-Warteschlange des entsprechenden Providers der Servicerechner angerufen wird und nach ankommenden Nachrichten aktiv gefragt wird (dies kann bei kurzen Abfrageintervallen teuer werden). Bei CIMD2 muß zwar eine Telefonnummer angegeben werden, diese hat jedoch keine Bedeutung.

AUTOCONNECT=<n>
Dieser Parameter wird nur benutzt, wenn SendSMS im Servermodus läuft und mit dem Parameter -aRECEIVE (zum Lesen von ankommenden SMSs) aufgerufen wurde. In diesem Fall gibt der Parameter eine Anzahl Sekunden an, die nach einem automatischen Verbindungsaufbau zum Servicerechner des entsprechenden Providers auf ankommende Nachrichten gewartet wird. Der Unterschied zu AUTOALERT ist der, daß kein überflüssiger Datenverkehr stattfindet und somit bei z.B. X.25/X.31-Verbindungen keine Kosten entstehen.

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 framing 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, network 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/Adresse das Providers um einen analogen (ANALOG), einen digitalen (ISDN), eine TCP/IP Verbindung (TCP), einen X.25- (X.25) oder einen X.31-Anschluß (X.31) 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. Im Servermodus bewirkt dieser Parameter, daß max. entsprechend viele Nachrichten bearbeitet werden und der Server dann zum nächsten Provider wechselt.

MODEMINIT=
Gibt ein zusätzliches Initialisierungskommando an. Dieses Kommando wird nach dem entsprechenden Kommando aus der Datei 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.

MSGDELAY=<n>
Gibt eine Anzahl von Sekunden an, welche zwischen dem Versenden von zwei Nachrichten innerhalb von einer Verbindung gewartet wird (wird normalerweise nicht benötigt).

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.

NOTIFICATIONADDRESS=
Gibt eine Adresse an an die die SMSC eine Bestätigung senden soll (siehe UCP-Dokumentation). [nur UCP Funktion 51; nicht in Standard-Edition]

NOTIFICATIONPID=
Gibt den Typ der NOTIFICATIONADDRESS an (z.B. 0100 für Mobile Station; siehe UCP-Dokumentation). [nur UCP Funktion 51; nicht in Standard-Edition]

NOTIFICATIONTYPE=
Gibt an, welche Bestätigungen gesendet werden sollen (z.B. 1 für Auslieferungsbestätigung; siehe UCP-Dokumentation) [nur UCP Funktion 51; nicht in Standard-Edition]

ORIGINATINGADDR=01234..
Gibt die Absendeadresse (Telefonnummer) an, die für diesen Provider benutzt werden soll (nur in Professional-Edition).

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 (bei UCP ist dies der Wert für Authentication Code), 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.

PROTOCOLTIMEOUT=60
Gibt die Zeitdauer (in Sekunden) an, die das Programm auf eine Antwort vom Servicerechner wartet. Wenn dieser Wert nicht definiert wurde werden folgende Standardwerte benutzt, welche über den vom Protokoll vorgeschriebenen Grenzen liegen:

TAP | 30 Sekunden
UCP | 120 Sekunden
GSM | 160 Sekunden
SMPP | 30 Sekunden
CIMD2 | 30 Sekunden

PORT=<n>
Gibt den zu verwendenden Port (auf dem Zielrechner) für eine TCP/IP-Verbindung an. Der Port wird Ihnen vom Provider mitgeteilt.

PREFIX=
Hier steht die Vorwahl des entsprechenden 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. Ist in dem Parameter ein | enthalten, dient dies zur Abtrennung zwischen einem Teil der zur Erkennung dient und einem Teil durch den die erkannte Vorwahl ersetzt wird. So kann man z.B. eine Vorwahlen löschen (PREFIX=+491656|) oder durch eine andere ersetzen (PREFIX=+49179|49179). Dieser Parameter kann pro Provider mehrfach definiert werden.

PROTOCOL=
Hier muß TAP (Telocator Alphanumeric Protocol), TAPAIM (TAP-Protokoll mit AIM-Erweiterungen), SMPP (Short Message Peer to Peer), CIMD2 (Computer Interface to Message Distribution), UCP (Universal Computer Protocol), GSM (Global System for Mobile communication), UUS (User-User-Signalling), DTMF, Scall, Skyper oder CITYRUF stehen. UUS ist ein Euro-ISDN Dienstmerkmal, welches nicht in allen Ländern unterstützt wird und mit SendSMS nur über CAPI 2.0 genutzt werden kann. DTMF ist für Pagerdienste gedacht, bei welchen man über Tastentelefone Nachrichten für den Empfänger eingeben kann (CAPI 2.0 oder Voicemodem). Im Falle von Scall und Skyper muß das Modem so konfiguriert werden, daß XON/XOFF-Zeichen nicht gefiltert werden (zur Gegenstelle übertragen werden).

Bei UCP kann zusätzlich zwischen verschiedenen Sendefunktionen gewählt werden, indem in eckigen Klammern eingerahmt der zu verwendende Funktionscode (UCP[01], UCP[30] oder UCP[51]; im Falle eines Großkundenzugangs ist i.d.R. die Funktion 51 zu benutzen) angegeben wird. Bei den Funktionen 30 und 51 wird die Telefonnummer des Absenders und - falls definiert - eine Validity Period übertragen. Diese Funktionen werden aber nicht von allen Providern (z.B. Quix) unterstützt.

SOURCEPORT=<n>
Gibt den zu verwendenden Port (auf dem Ausgangsrechner) für eine TCP/IP-Verbindung an. Der Port wird Ihnen vom Provider mitgeteilt.

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

SYSTEMID=
Gibt die System ID an (nur SMPP). Fragen Sie bei Ihrem Provider nach dem entsprechenden Wert.

SYSTEMTYPE=
Gibt den System Type an (nur SMPP). Fragen Sie bei Ihrem Provider nach dem entsprechenden Wert.

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

UCP60PASSWORD=
Falls von einem UCP-Provider die Passwort-Option benutzt wird, wird hier das Passwort angegeben, welches zum Beginn einer Sitzung mit der UCP-Funktion 60 übertragen wird. Dies ist i.d.R. nur - wenn überhaupt - bei Großkundenzugängen notwendig. In diesem Fall muß auch noch der Parameter USEUCP60=1 gesetzt werden.

USERID=
Für manche Provider (CIMD2 oder UCP (Funktion 60)) wird eine UserID benötigt, welche hier angegeben werden kann.

USEUCP60=1
Gibt an, daß vor dem Versenden von SMSs eine Sitzung (mit UCP-Funktion 60) eröffnet werden muß. Weiterhin sollte der Parameter UCP60PASSWORD gesetzt werden.

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=+49171
    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.

## 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 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.

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

Um Nachrichten zu spoolen, können Sie einfach SendSMS aufrufen oder die Spooldateien selbst generieren. Die Spooldateien müssen in dem Verzeichnis <SPOOLDIR> (aus sendsms.cfg) abgelegt werden, wobei es in diesem Verzeichnis für jeden Provider ein Unterverzeichnis gibt. Pro Spooldatei wird jeweils eine eigen Datei (darf nicht mit '.dat' enden) angelegt. Im Folgenden ist eine Beispielspooldatei angegeben:

    [D1_ISDN]
    COUNT=0
    PHONE=491714160598
    DCS=240
    SPLIT=10
    FROM=wobo
    SMS=Dies ist eine Beispielspooldatei.

Der Parameter COUNT gibt die Anzahl der bisherigen Sendeversuche an, SPLIT gibt die max. Anzahl von SMS an, in die die angegebene Nachricht zerlegt werden soll, und DCS steht für DataCodingScheme (siehe GSM 03.38). Eine Zeile in der Spooldatei darf max. 3000 Zeichen enthalten. Sollte die zu spoolende Nachricht länger sein, so muß diese in mehreren Zeilen mit jeweils max. 3000 Zeichen angegeben werden (mehrmals SMS=...). Zeilenumbrüche werden mit der Escapesequenz '\n' angegeben und ein 'Backslash' mit '\\'.

## Userexit

Mit dem Parameter -u kann ein Userexit angegeben 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 Werte:

- Statuscode (-1 = Nachricht konnte nicht gesendet werden, 1 = Nachricht erfolgreich gesendet, 2 = Nachricht erfolgreich empfangen, 3 = Nachrichtenstatus empfangen, 4 = Nachricht wurde gelöscht)
- Absender der Nachricht
- Empfänger der Nachricht
- die Nachricht selbst
- benutze Provider (aus sendsms.pro)
- benutztes Device aus (sendsms.cfg)
- Message-ID (wird vom SMSC zugewiesen)
- DataCodingScheme (siehe GSM 03.38)
- UserDataHeader (siehe GSM 03.40)
- Dauer der Aktion in Sekunden (Verbindungsauf-/abbau oder Initialisierung sind nicht enthalten)

Als Userexit kann auch eine Funktion aus einer DLL bzw. aus einer so-Library (shared object) angegeben werden. Hierzu werden der Name der DLL bzw. der so-Library und der Name der Funktion durch ein Masterspace (@) getrennt (-u<dll>@<function>).

Der Userexit muß als Returncode eine 0 zurückgeben, damit die Transaktion korrekt beendet werden kann. Wenn der Userexit eine Wert ungleich 0 zurück gibt wird die entsprechende Transaktion abgebrochen (also eine empfangene Nachricht nicht gespeichert und auf der SMSC nicht gelöscht).

## Zeitversetztes Senden und Gültigkeitsdauer

SendSMS bietet die Möglichkeit Nachrichten zu einem späteren Zeitpunkt, welcher über einen Kommandozeilenparameter (-S) angegeben wird, zu versenden. Wenn die Nachricht direkt gesendet (nicht gespoolt) werden soll, wartet SendSMS bis der angegebene Zeitpunkt erreicht ist und sendet die Nachricht dann. Falls die Nachricht gespoolt wird wird sie vom Server erst zu dem angegeben Zeitpunkt bearbeitet.

Alternativ kann man zu einer Nachricht, welche sofort übertragen wird, mit dem Parameter -D einen Zeitpunkt angegeben, zu dem die Nachricht von dem Servicerechner ausgeliefert werden soll.

Mit dem Parameter -V kann man eine Gültigkeitsdauer für eine Nachricht definieren. Ist diese angegeben wird eine Nachricht automatisch gelöscht, falls sie bis zu dem angegebenen Zeitpunkt nicht an den Empfänger ausgeliefert werden konnte.

Die entsprechenden Zeitpunkte werden jeweils entweder relativ (Anzahl Minuten mit einem vorgestellten Plus-Zeichen (+), z.B. -S+10) oder absolut (Uhrzeit und Datum in dem Format hhmmDDMMYYYY (hh = Stunde, mm = Minute, DD = Tag, MM = Monat, YYYY = Jahr), z.B. -V203021101999) angegeben. Diese Parameter werden nicht von allen Protokollen/Providern unterstützt.

## Funktionsauswahl

Mit SendSMS können nicht nur Kurznachrichten versendet, sondern auch der Status einer zuvor versendeten Nachricht abgefragt, eine noch nicht ausgelieferte Nachricht wieder gelöscht bzw. Nachrichten empfangen werden. Diese zusätzliche Funktionalität ist jedoch vom verwendeten Protokoll (UCP, TAP, GSM) und vom verwendeten Provider abhängig. So sind diese Möglichkeiten in der Regel nur bei GSM-Netzen und nicht bei Pager-Diensten verfügbar und auch nur dann wenn der Provider das UCP-Protokoll oder die AIM-Erweiterungen des TAP-Protokolls unterstützt. Für diese erweiterte Funktionalität ist es weiterhin in der Regel notwendig daß der verwendete Telefonanschluß über das Dienstmerkmal CLI (Calling Line Identifikation) verfügt (z.B. ISDN).

Die Auswahl der auszuführenden Funktion erfolgt auf der Kommandozeile mit dem Parameter -a<action>. Wird dieser Parameter nicht angegeben wird der Wert für <action> automatisch auf SEND gesetzt. Wird er angegeben kann zwischen SEND, CONFIRM, RECEIVE, STATUS, DELETE und CHGPWD gewählt werden. Hierbei bedeutet:

SEND | es soll eine Nachricht versendet werden
CONFIRM | es soll eine Nachricht versendet und anschließend gleich der Status (ob die Nachricht an den Empfänger ausgeliefert oder auf dem Servicerechner gespeichert wurde) angezeigt werden
STATUS | es soll der Status einer zuvor übertragenen Nachricht abgefragt werden
DELETE | es soll eine zuvor übertragene aber noch nicht ausgelieferte Nachricht gelöscht werden (nicht ausgeliefert werden)
RECEIVE | es sollen Nachrichten empfangen werden
CHGPWD | es soll das Passwort für einen Provider, welcher UCP und zum Start einer Sitzung die UCP-Funktion 60 benutz, geändert werden

In allen Fällen muß die Telefonnummer des Empfängers (zumindest bei dem Provider D1 bei einer Statusabfrage bzw. beim Löschen einer Nachricht in der Form 49171...) angegeben werden. Zum Löschen einer Nachricht muß zusätzlich die Identifikationsnummer/Timestamp der Nachricht (wurde nach dem Übertragen angezeigt) angegeben werden. Im Kapitel Aufruf Syntax sind einige Aufrufbeispiele angegeben.

## Aufruf Syntax

SendSMS wird wie folgt aufgerufen:

sendsms [Optionen] {<phoneNo> | <alias> -g<groupFile>} [{<message> | < <msgFile> | -f<msgFile>}]

Optionen sind (bitte beachten Sie die Groß-/Kleinschreibung):

-a<action> | gibt die auszuführende Aktion an (SEND, CONFIRM, RECEIVE, STATUS, DELETE oder CHGPWD)
-b<pbkFile> | gibt den Namen der Telefonbuchdatei an (sendsms.pbk)
-c<cfgFile> | gibt den Namen der Konfigurationsdatei an (sendsms.cfg)
-C<msgClass> | Nachrichten Klasse (1-3); siehe Data Coding Scheme in GSM 03.38 (Standard ist 1; 0 für direkte Anzeige der Nachricht auf dem Empfängerdisplay)
-d<device> | hiermit kann die Benutzung eines bestimmten Devices vorgegeben werden
-D<Sendezeit> | gibt den Zeitpunkt (hhmmDDMMYYYY) an, wann die Nachricht (vom Servicerechner) ausgeliefert werden soll
-f<msgFile> | gibt den Namen eines Files an, dessen Inhalt als Nachricht verschickt werden soll
-g<groupFile> | gibt den Namen einer Datei an, welche die Empfängernummern beinhaltet
-h | zeigt die Hilfe an
-H | zeigt die Versionsnummer von SendSMS an
-i | installiert SendSMS (Servermode) als einen Service (nur WindowsNT)
-m<MSN> | gibt die zu verwendende MSN an (nur bei CAPI 2.0)
-M<SMS> | gibt die zu versendende Nachricht an (wird benötigt, wenn die Nachricht mit einem '-' beginnt)
-n | SendSMS sendet die Nachricht(en) direkt über das Modem, auch wenn z.Zt. ein Server läuft
-N<n> | zerlegt die angegeben Nachricht in bis zu <n> SMSs (Standard ist 1)
-o<Absender> | überschreibt den Absender (UserID) der Nachricht an
-O<Absendenummer> | Angabe einer Absendenummer, welche beim Empfänger angezeigt wird (nur in Professional-Edition)
-p<provider> | gibt den Provider zur angegebenen Telefonnummer an
-P<pid-Datei> | gibt den Namen der zu verwendenden PID-Datei an (Standard ist sendsms.pid
-q<n>[s] | startet SendSMS im Servermodus (Spoolverzeichnis wird alle <n> Minuten bzw. [Sekunden] überprüft
-r<proFile> | gibt den Namen der Providerdatei an (sendsms.pro)
-R | der Parameter ReplyPathRequest (siehe GSM 03.40) wird gesetzt
-s | SendSMS spoolt die Nachricht(en), auch wenn z.Zt. kein Server läuft
-S<Startzeit> | gibt den Zeitpunkt (hhmmDDMMYYYY) an, wann die Nachricht versendet werden soll (vom lokalen Rechner)
-t<Zeichensatz> | gibt an, ob die Nachricht im ISO-Zeichensatz (iso8859), in der Codepage 850 (cp850) oder binär (binary kodiert ist
-u<userexit> | gibt eine Programm-/Batchdatei an die gestartet wird, wenn eine Nachricht gesendet oder empfangen wurde (Servermodus)
-U<userdataheader> | hexkodierter UserDataHeader (siehe GSM 03.40) ohne Längenangabe (z.B. für Klingeltöne)
-v | verbose; SendSMS zeigt die Kommunikation mit dem Kommunikationsdevice am Bildschirm an
-V<>validity period> | gibt den Zeitpunkt (hhmmDDMMYYYY) an, bis wann die Nachricht gültig bleiben soll
-x | deinstalliert den Service SendSMS (nur WindowsNT)

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. Alternativ kann auch mit dem Parameter -p der Name einer Datei angegeben werden, 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üssen 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 (in diesem Fall muß die Nachricht mit dem Parameter -M angegeben werden). 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. 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<provider> der entsprechende Provider angegeben werden (Name wie er in der Datei 'sendsms.pro' definiert ist). Beispiel: 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).

Binäre Nachrichten müssen in hexadezimaler Kodierung (ohne Längenangabe) angegeben werden. Für jedes binäre Zeichen müssen also zwei Zeichen (0-9 und A-F) angegeben werden. Die Nachricht "ABC" entspricht z.B. in hexadezimaler Kodierung "414243". Für z.B. Klingeltöne oder Operator-Logos muß zusätzlich noch mit dem Parameter -U ein hexkodierter UserDataHeader (ohne Längenangabe) angegeben werden. Für einen Klingelton ist dies z.B. -U050415811581 (siehe GSM 03.40 und Narrowband Sockets Specification (Intel, Nokia)). Für Klingeltöne bzw. Operator-Logos kann auch - anstelle des hexkodierten UserDataHeaders - die vordefinierten Konstanten -Uringtone, -Uoperatorlogo, -UCompactBusinessCardCard, -UGenericBusinessCardCard (vCard), -UvCalendar bzw. -UPicture verwendet werden (nur falls der Empfänger die Smart Messaging Spezifikation erfüllt).

Wird SendSMS mit dem Parameter -q<n> gestartet, so läuft SendSMS als Server und überprüft alle <n> Minuten (bzw. alle <n> Sekunden, falls <n> mit einem 's' endet) 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. Standardmäßig benutz SendSMS unter OS/2 die Codepage 850 (cp850) und ansonsten ISO-8859 (iso8859). Wenn die zu versendende Nachricht nicht mit dem standard Zeichensatz angegeben wird, so muß dies mit diesem Parameter angezeigt werden.

Beispiele:
sendsms 01714160598 test
Die Nachricht "test" wird an die angegebene Nummer gesendet.

sendsms -aCONFIRM -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. Nach dem Versenden der Nachricht wird auf eine Bestätigung gewartet, welche angibt, ob die Nachricht ausgeliefert oder auf dem Servicerechner gespeichert wurde.

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 -ggroup "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 -pUUS 4160598 "Dies ist eine Testnachricht"
Es wird die Nachricht "Dies ist eine Testnachricht" per UUS (nur mit CAPI 2.0) an die Nummer 4160598 gesendet. Dies funktioniert nur wenn der Dienst UUS vom Netzbetreiber und von beiden Kommunikationsseiten unterstützt wird. Die Übertragung erfolgt im D-Kanal und ist kostenlos.

sendsms -pVOICE 07246942484 -aRECEIVE -fvoice.dat
Es wird die angegebene Nummer angerufen und eine Sprachnachricht im nativen Deviceformat in der Datei voice.dat abgespeichert.

sendsms -aSTATUS 01714160598 1141863480
Es wird der Status der Nachricht 1141863480 (diese Nummer wurde nach dem Absenden der Nachricht angezeigt) für die Nummer 01714160598 abgefragt.

sendsms -aDELETE 01714160598 1141863480
Es wird die Nachricht 1141863480 für die Nummer 01714160598 gelöscht (falls die Nachricht noch nicht ausgeliefert wurde).

sendsms -q5s
Started SendSMS im Servermode mit Überprüfung des Spoolverzeichnisses alle 5 Sekunden.

sendsms -q5s -aRECEIVE
Started SendSMS im Servermode mit Überprüfung des Spoolverzeichnisses alle 5 Sekunden. Falls GSM-Modems definiert sind oder bei einem Provider der Parameter AUTOALERT oder AUTOCONNECT gesetzt ist werden diese zusätzlich auf ankommende Nachrichten überprüft.

sendsms -q5s -aRECEIVE -pD1_X31
Started SendSMS im Servermode. Da ein Provider explizit angegeben ist wird nur dieser Provider abgearbeitet und die Verbindung zu diesem Provider erst wieder bei Programmabbruch beendet.

sendsms -aCHGPWD -pD1_X31 password
Es wird eine Verbindung zum Provider (mit UCP-Protokoll) hergestellt und das Passwort geändert. Danach wird dir Verbindung gleich wieder beendet.

sendsms 01724160598 -tbinary -Uringtone -fringtone
Es wird ein Klingelton, der in der Datei ringtone in binärer Form (hexcodiert) vorliegt, übertragen. Die funktioniert nur, wenn der Empfänger die Smart Messaging Spezifikation unterstützt und NICHT TAP als Protokoll verwendet wird.

## 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, "| /usr/local/sendsms/forward.sms"

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 das folgende Script forward.sms aufgerufen wird. Dieses Script sendet eine Nachricht (mit dem Absender und dem Subject der Email) durch SendSMS an die angegebene Nummer.

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

Eine direkte Integration in sendmail ist ebenfalls sehr einfach möglich. Hierzu definiert man einfach einen MTA in sendmail.cf (z.B. Msendsms, ...) und im 'Rule Set 0' eine Regel, welche angibt wann SendSMS bzw. ein Script - ähnlich dem o.a. forward.sms - aufgerufen werden soll.

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

## Integration in WWW-Server

SendSMS kann auf einfache Art und Weise in einen WWW-Server integriert werden. SendSMS erkennt automatisch ob es von einem http-Server aufgerufen wurde und passt sich an die Umgebung an. Als Beispiel für eine Integration dient das Perl-Script (Perl5) sendsms.cgi. Zur Installation dieses Beispiels müssen die Dateien sendsms.cgi und sendsms.ini in das cgi-bin Verzeichnis des http-Servers kopiert und die Datei sendsms.ini angepasst (Pfade, Sprache und Konfigurationsdateien angeben) werden. Unter Umständen muß auch noch in der ersten Zeile der Datei sendsms.cgi der Pfad zu Ihrem Perl-Interpreter angepasst werden. Bitte beachten Sie, daß die UserId unter der der http-Server läuft zum Zugriff auf SendSMS berechtigt sein muß.

Aufgerufen wird das Beispielscript einfach indem Sie in der Adressen-Zeile Ihres Browsers Folgendes eingeben:
http://<server>/cgi-bin/sendsms.cgi
bzw. einen entsprechenden Link in Ihre Seiten einbauen.

## Graphische Benutzeroberfläche

Zu SendSMS wird auch eine graphische Benutzeroberfläche ausgeliefert. Diese Oberfläche ist in Java implemtiert und benötigt die Java Runtime Environment (JRE) 1.2 oder höher (http://www.javasoft.com/j2se/). Zum Aufruf der graphischen Oberfläche liegen Scriptdateien bzw. Batchdateien (smsgui) bei. Die Oberfläche ist so gestaltet, daß beim ersten Aufruf die notwendigsten Eingabefelder angezeigt werden. Nach Eingabe einer Telefonnummer und einer Nachricht und drücken auf den 'Senden' Knopf in der Menüleiste wir SendSMS aufgerufen und die Ausgabe von SendSMS auf einer automatisch selektierten Seite angezeigt. Die versendeten Nachrichten werden pro Benutzer in einem Journal gespeichert, über welches man mittels eines Kontextmenüs den Status einer Nachricht abfragen kann bzw. eine Nachricht wieder löschen kann. Über den Menüpubkt "Einstellungen/Expertenmodus" kann man sich weitere Optionen anzeigen lassen.

## X.25/X.31

Die SendSMS-Professional-Edition ist auch in der Lage Nachrichten per X.25 oder X.31 (X.25 über ISDN) zu übertragen. Dies bietet sich vor allem bei hohen Stückzahlen an, da die Übertragung mittels X.25/X.31 schnell und kostengünstig erfolgt. Um X.25 nutzen zu können muß eine Eicon-X.25-Karte mit den entsprechenden Treibern installiert sein. Um X.31 nutzen zu können benötigt man ein X.31 fähiges Device (nicht jede ISDN-Karte unterstützt X.31). Weiterhin muß der Dienst X.25 bzw. X.31 beim Netzbetreiber und ein Zugang zu einem SMSC beantragt werden. Sind diese Voraussetzungen erfüllt muß in der Datei sendsms.pro ein entsprechender Provider und in sendsms.cfg ein entsprechendes Device definiert werden (siehe Beispiel). Die weitere Handhabung erfolgt wie mit einem Wählzugang auch.

Beispiel (X.25):

sendsms.cfg | sendsms.pro
[Device] DEVICETYPE=X.25 (EICON) LINETYPE=X.25 DEVICE=ex25.dll CONNECTTIMEOUT=5 PACKETLEN=2048 WINDOWSIZE=7 ORIGINATINGADDR=<lokale Adresse> | [D1_X25] PHONE=012345.... LINETYPE=X.25 PROTOCOL=UCP[51] PREFIX=+49170|+49170 PREFIX=+49171|+49171 PREFIX=+49175|+49175 MSGTYPE=ALPHANUMERIC MSGLEN=160 USEUCP60=1 ; falls die Funktion 60 vom Provider benutzt wird UCP60PASSWORD=<Passwort> ; falls die Passwortoption eingeschaltet ist USERID=<large account>

Beispiel (X.31):

sendsms.cfg | sendsms.pro
[Device] DEVICETYPE=CAPI 2.0 LINETYPE=X.31 DEVICE=capi2032.dll CONNECTTIMEOUT=5 USEDCHANNEL=1 TEI=1 X31CHANNELS=0,0,1,2,0,0 MSN=25 | [D1_X31] PHONE=012345.... LINETYPE=X.31 PROTOCOL=UCP[51] PREFIX=+49170|+49170 PREFIX=+49171|+49171 PREFIX=+49175|+49175 MSGTYPE=ALPHANUMERIC MSGLEN=160 USEUCP60=1 ; falls die Funktion 60 vom Provider benutzt wird UCP60PASSWORD=<Passwort> ; falls die Passwortoption eingeschaltet ist USERID=<large account>

## TCP/IP

Die SendSMS-Professional-Edition ist auch in der Lage Nachrichten per TCP/IP zu übertragen. Um TCP/IP-Verbindungen nutzen zu können muß TCP/IP auf dem Computer installiert und konfiguriert sein und in der Datei sendsms.pro ein entsprechender Provider (siehe Beispiel) definiert werden. Ein spezielles Device muß für TCP/IP-Verbindungen nicht definiert werden. Die weitere Handhabung erfolgt wie mit einem Wählzugang auch.

Beispiel:

sendsms.pro
[D1_TCP] ADDRESS=127.1.1.1 PORT=12345 LINETYPE=TCP PROTOCOL=UCP[51] PREFIX=+49170|+49170 PREFIX=+49171|+49171 PREFIX=+49175|+49175 MSGTYPE=ALPHANUMERIC MSGLEN=160 USEUCP60=1 ; falls die Funktion 60 vom Provider benutzt wird UCP60PASSWORD=<Passwort> ; falls die Passwortoption eingeschaltet ist USERID=<large account>

## Returncodes

SendSMS gibt als Returncode die Anzahl der erfolgreich bearbeiteten Nachrichten zurück (Returncode 0 bedeutet, daß SendSMS zwar regulär beendet wurde, aber keine Nachricht versenden oder empfangen 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. Bei manchen Unix-Shells kann es sein, daß die Shell den Returncode als 'unsigned Byte' übergibt. Dies bedeutet, daß der Wert zwischen 0 und 255 liegt, wobei alle Werte ab 128 Fehlercodes (Zweierkomplement) sind.

Falls in der Datei sendsms.cfg der Parameter RCZEROIFOK=1 gesetzt ist wird im erfolgsfall eine 0 als Returncode zurück gegeben. Dies ist hilfreich, wenn SendSMS in Zusammenhang mit z.B. einem Emailsystem benutzt wird.

## Abkürzungen

AIM | Application Interface Module
API | Application Programming Interface
BAI | Böcherer Angewandte Informatik
CAPI | COMMON-ISDN-API
CIMD2 | Computer Interface to Message Distribution
DLL | Dynamic Link Library
DTMF | Dual Tone Multiplexed Frequency
ETSI | European Telecommunications Standard Institute
GSM | Global System for Mobile computing
IP | Internet Protocol
MO | Mobile Originated
MT | Mobile Terminated
SMPP | Short Message Peer to Peer
SIM | Subscriber Identity Module
SMS | Short Message Service
SMSC | Short Message Service Center
SO | Shared Object
TAP | Telecator Alphanumeric Protocol
TAPI | Telephony API
TCP | Transmission Control Protocol
UCP | Universal Computer Protocol
UUS | User User Signalling

## Wo finde ich die neueste Version?

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

## Probleme/Fragen

Schicken Sie eine Email mit folgenden Angaben

- Fehler-/Problembeschreibung
- Kopie/Hardcopy des Aufrufs
- Kopie der Datei sendsms.cfg
- Kopie der Datei sendsms.pro
- verwendetes Betriebssystem
- verwendete Version von SendSMS
- verwendetes Modem und Telefonanlage

an info@bai.de.

| Tel: +49 (0)721 9109 550 Fax: +49 (0)721 9109 555 Email: info@bai.de WWW: http://www.bai.de