|
[only available in the registered version]
LongDistancePrefix=0
MaxErrors=
MaxSplit=
MNP= (see also Mobile Number Portability (MNP))
Phone=
Phonebook=
PidFile=
Priority=-5
RcZeroIfOK=true
ReceiveDir=received
RedialCount=3
RedialDelay=60
RetryCount=3
RetryDelay=60
SentDir=unsent
SpoolDir=/var/spool/sendxms
SpoolFilePrefix=
StatisticDir=statistic
[only available in the registered version]
TmpDir=tmp
UnsentDir=unsent
TimeFormat=%Y.%m.%d %H:%M:%S
User=
UserExitVersion= ATTENTION: Support for that parameter will be cancelled starting with the next major release. In the chapter [XMSConv] you can specify the following keywords to configure the utility XMSConv. Every keyword has to be entered in an own line.
WapInitiatorUri=
WapPushFlag=
In the chapter [Device] you can specify the following keywords to configure your modem. Every keyword has to be entered in an own line. (Please check your modem description (if you have one) for the corresponding modem commands)
Address=
Baud=4800
BC=
BChannelInfo=
Beep=AT#VTS=[960,0,6]
ConnectTimeout=40
Controller=1
Databits=8
Device= If you are using CAPI 2.0 you have to specify the path to the CAPI-DLL/-Shared Object (Windows, Linux) or to the CAPI-device (Unix) here. Using Windows SendXMS tries first to open the device exclusive. If this doesn't work (maybe because of RAS) the device is opened using the TAPI-interface. With this you have the ability to share the modem with other applications, but you can't use all features of SendXMS.
DeviceType=Modem
DialPrefix=ATDT0w
DialSuffix=
Escape=+++
Hangup=ATH
HexDigits=lower
HLC=
IMSI=
Init=ATQ0E1V1L1
(not used with TAPI)
Init2=
KeepAlive=
LineType=ANALOG
LLC=
MessageStorages=ME;SR
MsgDelay=<n>
MSN=24
Name=
RegisterNetwork=
OriginatingAddress=01234..
PacketLen=128
Parity=NONE
Password=
PDUWithoutSCA=true
Phone=
PlayDTMF=AT#VTS=
PIN="1234"
PLMN=
Port=2662
PowerOn=
PowerOff=
PppInit=
PppMmsProfile=
Provider=
PUK="1234"
Reset=ATZ
RtsCts=true
SetMsn=
StartVoicemode=AT#CLS=8
Stopbits=1
StopVoicemode=AT#CLS=0
SuppressReinit=true
TEI=1
UseDChannel=true
VoiceCompression=ALAW
VoiceReceive=AT#VRX
VoiceTransmit=AT#VTX
WaitAfterWrite=0.5
WindowSize=2
X31Channels=0,0,1,1,0,0
If this parameter isn't specified the default (0,0,1,1,0,0) will be used, what will work in most cases.
XonXoff=true In the chapter [XMSGUI] you can specify the following keywords. Every keyword has to be entered in an own line.
cfgEditable=true
proEditable=true
showLogfile=false In the chapters [Allow] and [Deny] you can specify the following keywords. Every keyword has to be entered in an own line. Always only one of both lists will be used. If both are defined the ALLOW list will be used. User= This parameter can be defined multiple times. Each time this parameter appears it will specify a userid which may or may not use SendXMS. If the userid are specified in the chapter [ALLOW] only these users may use the program. If the users are specified in the chapter [DENY] all users except the specifies may use the program. In the chapters [Whitelist] and [Blacklist] you can specify the following keywords. Every keyword has to be entered in an own line. If both lists are defined the Whitelist has preference. Phone= This parameter can be defined multiple times. Each time this parameter appears it will specify a phone number to which no messages could (Whitelist) or could not (Blacklist) be sent. If the specified number is ending with a '*' this will be a prefix. That means that all numbers starting with the specified sequence will be used. The chapter [SSL] can be used for an optional integration of OpenSSL (mostly not required). The following parameters can be used:
AcceptSelfSignedCertificates=true
CALocation=
CertFile=
KeyFile=
LibCrypto=
LibSsl=
Password=
VerifyPeer=true
The chapter [PPP] can be used to configure PPP connections (in most cases this is only required for MM1 connections). The following parameters can be used:
Chat=
IpUp=
NoDefaultRoute=true
Pppd=
The chapter [ODBC] can optionally be used to configure access data for the integrated ODBC-Spool-API (mostly not required). The following parameters can be used:
DSN=
UID=
PASSWORD=
LibOdbc=
UseInternalSpoolApi=true
The chapter [SNMP] can be used to configure the optional usage of SNMP (v2c) Traps (Notifications). The following parameters can be used:
Address=
Community=
InitializeTrap=false
KeepaliveTrap=false
PingDelay=
Port=
ProcessTrap=false
SessionTrap=false
SourceAddress=
SourcePort=
In the chapters [Audio Mime Types], [Image Mime Types] and [Video Mime Types] you can define file extensions for a corresponding MIME Type, for example:
[Audio Mime Types] sendxms.pro
In this file you can define different providers.
Many providers are preconfigured and can be used without any changes. But
all not required provider definitions should be deleted. For some providers
there are multiple definitions (modem, ISDN, GSM)
preconfigured, from which you should delete all not required or move the one
you use to the top. For a provider definition you have
to enter a chapter by entering a line of the form
AdcInFilter=
AdcOutFilter=
Address=<ip-address>
AddrNpi=9
AddrTon=0
AddressRange=
APN=
AutoAlert=<phone number>
AutoConnect=<n>
B1Protocol=64K-HDLC
B2Protocol=X.75-SLP
B3Protocol=TRANS
Baud=4800
BC=
BDataLen=1024
ChargedParty=
ChargedPartyID=
CallUserData=
CIP=UNRESTRICTED-DIGITAL
Databits=8
Device=
Detach=
Receiving messages will only be possible if the server process will be started with the command line option -aRECEIVE.
DetachQueueDelay=
DetachUserexit=
DialSuffix=
DirName=
DoNotDisturbTime=
<DoNotDisturbTime> ::= <start> "-" <end> (only Professional-Edition or higher)
DtmfDelay=
DtmfGap=
ErrorFilter=
HLC=
KeepAlive=
LineType=ANALOG
LLC=
MapUserValue=
MaxAllowedConnections=
MaxMsg=
MaxThroughput=
MessagingMode=
MM7Schema=
MNP= (see also Mobile Number Portability (MNP))
ModemInit=
MsgDelay=<n>
MsgIdFilter=
MsgLen=
MsgType=
MTBillingInterface=
MTBillingMode=
Network=
NoHttpAuthentication=true
NoKeepAlive=
NotificationAddress=
NotificationPID= Following values are defined for <n>:
NotificationType= Following values will be accepted for UCP, OIS and CIMD for <n>:
For SMPP 3.4 all values conforming to the protocol specification can be used.
OadcInFilter=
OadcOutFilter=
OkFilter=
OriginatingAddress=
Password=
Parity=NONE
Phone=
Port=<n>
PPPPhone=
Prefix=
Priority=
Protocol= For the protocol UCP you can additionally select between different function codes for sending (UCP[01], UCP[30] or UCP[51]; using a large account you should use function 51). The functions 30 and 51 will additionally transmit the originator address (phone number) and a validity period (if defined). But these functions are not supported by all providers. For the protocol SMPP (at least version 3.4) you can specify SMPP[Transceiver] to force a connection to the SMSC with a BIND_TRANSCEIVER instead of a BIND_TRANSMITTER or BIND_RECEIVER (olnl required in special cases, when the SMSC does not accept anything else). For the protocol CIMD you can specify CIMD[USSD] to use a connection to a USSDC. For the protocol OIS you can additionally select between General Access (OIS) and Direct Access (OIS[Direct]). For the protocol MM1 you can additionally select between MM1 over HTTP (MM1[HTTP] or just MM1) (MMS-F and WAP 2.0) and MM1 over WSP (MM1[WSP]) (WAP 1.x).
ProtocolVersion=
ProtocolTimeout=60 For X.25, X.31 and TCP/IP connections always 10 seconds, in other cases:
ReconnectDelay=<n>
SourceAddress=<w.x.y.z>
SourcePort=<n>
SslCertFile=
SslKeyFile=
SslPassword=
Stopbits=1
SwapDlrAddresses=true
SystemDescription=
SystemId=
SystemType=
TariffClass=
ThrottledDelay=
TimeOffset=
TransTable=tap.ctt
UCP60Password=
URI=
UseAimCharacterTranslation=true
UseOtoA=true
UserId=
UseUCP60=true
VASID=
VASPID=
WaitAfterConnect=
WindowSize=
WspEncodingVersion=1.3
example[D1]Phone=01712092522 Protocol=TAP Prefix=+49171 MsgType=ALPHANUMERIC MsgLen=160 sendxms.pbk
In this file you can enter a chapter for every in sendxms.pro
defined provider with aliases. Every chapter starts with
a line of the form:
<alias>=<phone> The phone book is only available in the registered version!!!! example[D1]max=01711234567 ; Max Müller Character Translation Tables
Due to the fact that every by SendXMS supported protocol uses its own character set
and many providers modify these character sets SendXMS offers the possibility to
define specific character translation tables for every provider. If for one provider no explicit
table is specified a default table is used. To define a table for a provider you have to generate
a file in the following format an specify this file within the provider definition in the
parameter TransTable:
Phone number format filtersBecause of the fact that for some connections to a SMSC/MMSC you have to submit the phone numbers in a specific format (for example in international format, in international format but without any prefix or in national format) SendXMS offers the ability to define per provider different filters. By defining a filter multiple times within a provider definition you can build a list of filters which will be used in the given order until one filter definition matchs against the given number. You can define different filter(s) for destination numbers and/or the originating numbers (each for incoming and/or outgoing messages). With this it is for example possible to transform (if the SMSC requires that) an outgoing destination number automatically into international format without any leading prefix. for incoming messages you can for example define a filter which always puts a '+' in front of a destination number. A filter has to be specified as a regular expression (POSIX 1003.2). A filter consists of two parts which are separated by a delimiter ('/'). The first part consist of the regular expression (RE). In case that this RE matches the data (destination or originating number), the data will be replaced by the expression in the second part of the filter. Within the second part you can specify any sequence of digits and/or a back reference. A back reference has to be specified in the form \<n> with <n> in the range of 1 to 9. The back reference \1 refers to the first part of the RE (first opening bracket). Some examples:
AdcOutFilter=/^(\+|00)([0-9]*)/\2/
AdcOutFilter=/^(\+49|0049|0)(164|168|1691)([0-9]*)/\3/
AdcInFilter=/^(\+491|00491)([0-9]{5})(0*)/\2/ Voice messagesAdditionally to the ability to communicate with cellular phones and pagers SendXMS can also communicate with "normal" phones. To use this feature you have to use a voice modem or CAPI 2.0. There are preconfigured entries in the provider file (sendxms.pro) to use voice messages. To play a voice message that message has to be in the native coding format of the corresponding device (this formats differ between different modem manufactures). To play voice messages in different formats you have to use conversion programs. Many such conversion programs are freely available (for example sox or mgetty+sendfax). To play a voice message you have to call SendXMS in the same way as if you send a text message, except that you have to explicitly specify the predefined provider VOICE: sendxms -pVOICE 07246942484 -fvoice.dat or sendxms -pVOICE 07246942484 < voice.dat In both cases the specified number will be called and the voice message stored in the file voice.dat will be played. Using CAPI 2.0 you can directly send WAV files if these are coded in aLaw or uLaw fomrat using 8 KhZ, 1 channel and 8 bit. Using any other device the meaage has to be coded the native format of the used device. The easiest way to record such a message is to use SendXMS itself with such a command: sendxms -pVOICE 07246942484 -fvoice.dat -aRECEIVE Server modeIn the registered version (Server-Edition or higher) of SendXMS is a server mode available (-q<n>). With this you can force a SendXMS-instance to run in the background and check the spool directory in regular periods. If there are messages to send they will be send all at once. If a server is running all other instances of SendXMS spool their messages, instead of sending them directly over the phone line. So you have the ability to collect messages and send them within one single connection and to save money. With additional parameters you can force SendXMS, whether a server is running or not, to spool the messages or to send them directly. If you are using a GSM device or a large account you have the ability to receive and store (-aRECEIVE) SMSs and/or notifications (DLRs).
To spool messages you only have to call SendXMS or you can generate the
spool files by yourself (ASCII format; while generating a spool file this should be locked exclusively).
The spool files have to be placed in the directory <SPOOLDIR> (defined in sendxms.cfg). In that directory there
has to be a subdirectory for every provider for which messages are spooled.
the spool files have to be UTF-8 encoded and have to start with the following line
; encoding=UTF-8 The following key words will be interpreted (most of them are optional):
Action=
AddCodes=
AllowAdaptations=
ChargedParty=
ChargedPartyID=
Count=
Date=
DCS=
DeferredDelivery=
Device=
DistributionIndicator=
DoNotDisturb=true
LocalId=
MessagingMode=
MmsMessageClass=
MsgId=
MSN=
OriginatingAddress=
Phone=
PID=
ReplyPathRequest=true
Priority=
ReplaceIfPresent=1
ServiceCode=
ServiceDescription=
ServiceType=
Split=
StartTime=
StatusReportRequest=true
Subject=
TariffClass
UDH=
UsedDevice=
UsedProtocol=
UssdServiceCode=
ValidityPeriod=
XMS= ODBC interfacePer default spool file will be written/searched by SendXMS within the file system. Independently from the below described spool API there exists, starting with the Professional-Edition, the possibility to exchange the spool files directly with a database system using the ODBC interface. For that you have to configure the access data for the database system to use in the .cfg file. (see also Configuration). Of Course the ODBC data source has also to be configured (and tested) on operating system level. Within the used database system you have to create a database with the required tables and stored procedures. After a successfull installation of SendXMS you will find the file spoolapi.mysql within the subdirectory (of the installation directory) samples which contains a database definition for usage with MySQL (and MyODBC) and which could be easily adapted to other database systems. Spool-APIPer default spool file will be written/searched by SendXMS within the file system. Starting with the Professional-Edition there is also Spool API available with which this could be changed. So it is for example possible to communicate directly with any database. For this you have to provide a shared object (DLL) with some required functions. The name of this shared object (DLL) has to be specified within the used .cfg file using the parameter SpoolAPI (chapter [SendXMS]). If the specified file can not be loaded or if one (or more) functions could not be found) the default spool API (file system) will be used. An implementation of the spool API has to be thread safe! Each function has to return 0 in case of a successfull execution. The initialization function of the spool API may return a pointer to any internal structure which will be used by SendXMS as a parameter for each other function call. With this structure you can avoid global variables. The spool API uses a similar architecture as it is also used with the file system. So it will also be differentiated between SPOOLDIR, RECEIVEDIR, SENTDIR und UNSENTDIR. Whether this differentiation will really be done within the implementation does not matter. The data transfer will take place in the standard spool file format (UTF-8 coded) (see also server mode). Whether the data will be stored in this or any other format doesn't matter. Records have to be locked exclusively (per thread) to avoid multiple processing. An implentation of the spool API has to provide the following functions:
#define XMS_SPOOLDIR 0 /* messages to send */ SNMPStarting with the Professional-Edition you can configure SendXMS in that way that for special events SNMP traps (Notifications) will be sent to a SNMP daemon. A trap is an unconfirmed alarm to inform a management system automatically about a state change. For that SendXMS is using SNMPv2c. Traps are onnly supported using the Professional-Edition (or above) and will only be used if SendXMS is running in server mode (queue delay >= 0). Traps are supported for the fllowing events:
The configuration of the SNMP traps will be done in the file sendxms.cfg in the chapter [SNMP]. If in this file a destination address/port has been defined all of these listed traps will be generated by default. But each kind of trap can be manually disabled by use of a corresponding parameter (e.g.: KeepaliveTrap=false). You can also define a Community to use and the interval between two ping traps (default is 60 seconds). The traps generated by SendXMS may contain the following information:
The corresponding MIB file (bai.mib) can be found within the subdirectory (of the installation directory) samples. UserexitWith the parameter -u you can specify an userexit. This is a function within a shared object/DLL (recommended), an external program or batch/script file, which will always be called by SendXMS when a message has been sent or received, a message couldn't be sent (only if running in server mode), a connection has been opened or closed, .... With such an userexit you can for example integrate a database system, a network managemant system (for example using Net-SNMP), a billing system or something else. If the userexit is an external program (an executable or a batch/script file) the userexit will be called with one single parameter. This parameter speciffies the cause, why the userexit has been called and will have one of the following values:
Additionally the userexit can read the content of complete spool file via stdin (a pipe). The format of such a spool file is described in the chapter Server mode. The content of this format may be easily interpreted and contains all available information which can be used within the userexit in any kind. The userexit may not make any output to stdout (also a pipe). If output is required you have to use stderr for that. A userexit should always terminate as sson as possible to avoid timeout problems in the connection to a SMSC. The return code of the userexit should be 0 to terminate the transaction correctly. If any value not equal 0 is returned the transaction will be aborted (a received message will not be saved and will not be deleted from the SMSC/MMSC). A return code < 0 will be translated into a default (protocol dependend) error code. A return code > 0 and ;lt; 256 will be interpreted as a UCP error code and will be translated into a corresponding protocol dependend error code. A return code > 255 will be interpreted as a protocol specific return code and this code minus 255 will be submitted to the communication partner. The userexit can also be a (thread safe) function within a DLL or a so-library (shared object). For that you have to separate the name of the DLL/so-library from the name of the function by a masterspace (@) (-u<dll>@<function>). Such an userexit will not get the content of the spool file via a pipe but directly as a second calling parameter (as a string). The third parameter will specify the length of that string. The content of the spool file may not be changed. If changes are required these changes have to be returned (only key-value of the changed parameter) using the fourth parameter A prototype for an userexit function in a shared object is: int UserExit (int cause, char *xms, int xmsLen, char *changedXms); Using Windows the function should be defined like:
Borland compiler: int __stdcall __declspec(dllexport) UserExit (...) /* The MS compiler decorates the function. This results in using _UserExit@<n> to call this function (or using a def file which exports the function with a correct name). */ The Samples subdirectory contains some examples for a simple Userexit and also for a small programm to extract the attachments of a received MMS. VXMSC-EditionWith the VXMSC-Edition it is possible to emulate a virtual SMSC/MMSC. At the moment the protocols UCP, SMPP, CIMD, OIS or TAP over TCP/IP are supported for that. Using for example a CISCO router it is also possible to use X.25, FrameRelay, ... The supported functionality is identical to that supported by the Professional-Edition. Using the VXMSC-Edition it is of course also possible to connect to a real SMSC/MMSC as a client (SME). Incoming requests are spooled (RECEIVEDIR) by default as with all other editions, too. The required logic of the virtual XMSC (for example the functionality of a gateway) has to be implemented using an external program or (better) using an userexit. For the userexit (see Userexit) the following additionals cause codes are available:
For incoming SubmitRequests there is also the MsgId, which has been assigned by the VXMSC-Edition, specified in the variable localId. When the userexit is called because of a connection has been opend or closed or a session has been started or stopped the fields adC and oAdC contain the IP address and port number (local and remote). For a StartSessionRequest (UCP function 60, SMPP bind operation or CIMD function 1) the UserId of the SME will be assigned to the field localId and the password to addCodes. Using SMPP the field addInfo contains also the value TRANSMITTER, RECEIVER or TRANSCEIVER, depending on the BIND request the SME has sent. The SME has to use the SYSTEMTYPE=SendXMS. Using MM7/EAIF the URI the client requests has to use the format /SendXMS/<provider> (<provider> is the name of the used (by the VXMSC) provider definition). For incoming MM7/EAIF requests addInfo contains the VASPID and addCodes the VASID. If the StartSessionRequest should be rejected the userexit has to return -1. To accept incoming connections as a VXMSC you just have to specify the parameter Detach=AcceptVXMSC in the corresponding provider definition. This will cause SendXMS to listen on the given address(es)/port(s) for incoming connections and if applicable to start a VXMSC session. Alternatively incoming connectiosn can be accepted using tools like inetd or xinetd. This (inetd) will be configured in the file /etc/inetd.conf (and /etc/services) like: vxmscd stream tcp nowait root /usr/local/sendxms/sendxms /usr/local/sendxms/sendxms -pTEST -aRECEIVE -Q0 -XHANDLE=-1 ATTENTION: in most cases it would be better to call a script from within inetd and the script has to call the above given command. In case that you are using any additional parameter specifying a file (userexit, .cfg filename, ...) you should use an absolute path. Of course the specified provider TEST has to be defined in sendxms.pro with protocol UCP[51], SMPP, CIMD, OIS or TAP (do not specify DETACH). To enable the VXMSC to deliver messages to a client application the messages have to be either spooled (using the command line) with the option -aDELIVER or you have to put the line ACTION=DELIVER into the generated spool files. Deferred sending and validity periodSendXMS offers the possibility to send messages to a later time. You have to specify that time with a command line parameter (-S). Another possibility is to send the message now, but to specify with the parameter -D the time at which the service computer should deliver the message. With the parameter -V a validity period can be specified. If this parameter is specified, the message will be deleted if it couldn't be delivered within the specified period. Each parameter has either to be specified as an offset to the actual time (seconds prefixed with a plus sign, e.g. -S+3600) or as an absolute time/date value (YYYYMMDDhhmmss (hh = hour, mm = minute, ss = second, DD = day, MM = month, YYYY = year), e.g. -V20080507170000)). These parameters are not supported by all protocols/providers. Choosing a desired functionAdditionally to sending messages SendXMS is also able to query the status of messages, to delete messages and to receive messages. This functionality depends on the used protocol (UCP, TAP, GSM, ...) and on the used provider. In most cases these functions are only available for cellular networks (GSM, TDMA, CDMA). It is also required that the used phone line supports CLI (Calling Line Identification). You choose the desired function on the command line by adding the parameter -a<action>. If the parameter isn't specified the value for <action> will be set to SEND. Otherwise you can select between SEND, RECEICE, QUERY, DELETE and CHGPWD which have the following meanings:
In every case the phone number of the recipient has to be specified (at least for the german provider D1 with the format 49171... (to query the status or to delete a message)). To delete a message you have also to enter the identification number/timestamp of the message (will be shown after the message has been transmitted). You can find some examples in the chapter Calling syntax.
To receive messages via fixedline SMS (or to receive UUS messages) one instance of SendXMS has to wait
permanently for incoming calls from the SMS gateway. This instance should be started with the following command:
To receive MMS via MM7 or EAIF you have to give a port address to your MMSC provider on which SendXMS waits for incoming messages. This port has to be defined in an own provider definition sendxms.pro. Additionally you have to define the parameters Detach=AcceptXME, UserId=, Password= und URI=/SendXMS/<provider>. Calling syntaxSendXMS will be executed as follows (in 95% just with 'sendxms <phone> <sms>'): sendxms [options] {<phoneNo> | <alias> | -g<groupFile>} [{<message> | -f<msgFile>}] options are (case sensitive; do not specify any delimiters between an option selector and an option value (e.g.: -aSend but not -a Send)):
Ex.: sendxms 0123456789 "I am testing SendXMS" You have to specify at least one parameter - the phone number (without blanks; using SMPP or OIS the number (and the originating address (-O)) can be specified in the form <ton>:<npi>:<phone>) of the recipient or an alias (from the phone book). Alternatively the parameter -g can be used to specify the name of a file which contains multiple phone numbers. With such a file it is possible to send one messages to multiple recipients. The specified file must have the following format:
[<provider1>] Enclosed in brackets ([]) you have to specify providers (which are defined in sendxms.pro), followed by multiple lines with phone numbers of recipients. Every line contains a phone number (PHONE=...) of a recipient (number or alias), which belongs to the corresponding provider and to which the message should be send in one connection. In the above example the message will be send to 5 recipients of <provider1> using the same connection. The message will also be send to one recipient of <provider2>. Using SMPP as the transfer protocol it is also possible to send a message to a distribution list which is managed on the SMSC. In this case the name of this list has to be specified in the form 999:0:<distribution list name> (instead of a recipients phone number). The second parameter is the message, enclosed by ' (ATTENTION: depending on the shell you are using some characters are substituted by the shell (for example '!') or you have to enclose the message by " instead of '). If you specify the message on the command line the message may not start with a minus (in that case the message has to be specified with the command line parameter -M). Alternatively you can specify the message by redirecting it from a file (< msgFile) or with the Parameter -f<msgFile>, where <msgFile> is the name of the file that will be send (at least the first n characters). If you specify only one parameter on the command line (the recipient), the message will be read from the console. If you want to send a message to a provider, which can't be identified by the predial code of the recipients phone number you have to specify the corresponding provider (as defined in sendxms.pro) with the parameter -p<provider>. For Example: you want to send a message to a Cityruf-pager. SendXMS can't recognise the provider (Cityruf), because the number has no predial code. That's why you have to specify -pCityruf. Binary messages have to be entered hex coded. For every binary character you have to enter two characters (0-9 and A-F). The message "ABC" is hex coded "414243". For ringing tones or operator logos you have also to specify an hex coded UserDataHeader (without length) using the parameter -U. For a ringing tone you have for example to specify -U050415811581 (see GSM 03.40 and Narrowband Sockets Specification (Intel, Nokia)). Instead of the hex coded UserDataHeader you can also use one of these predefined values -URingTone, -UOperatorLogo, -UGroupLogo, -UPicture, -UvCard, -UvCalendar and -UWapOTA (if the receiver supports the Smart Messaging Specification). To send EMS messages, the EMS specific UDH part (the one which is not repeated in every segment of a long message) has to be specified in the message text at the corresponding position within the tags <UDH>...</UDH>. If this UDH part contains any position information this will be ignored and recalculated by SendXMS. The easiest way to generate such messages is to use XMSConv. If you start SendXMS with the parameter -q<n> SendXMS works as a server and checks every <n> seconds the spool directory (if no value for <n> is specified this means to check only one time and terminate). If there are spooled messages they will be sent with a minimum number of connections. If there are spooled messages they will be sent with a minimum number of connections. If there runs a server every new instance will be started in spool mode. This can be manipulated with the parameters -s (always spool) and -n (never spool). The -z parameter specifies which charset is used tp specify the message. By default SendXMS uses the system charset. If the message is not entered in the standard charset then you have to specify this parameter. Examples:
sendxms 0123456789 test
sendxms 0123456789 "<UDH>0A03001F40</UDH>This is a formatted EMS message"
sendxms -pD1 -F 0123456789 "This is a test message"
sendxms 0123456789 -fmsg.txt
sendxms -ggroup "Alert for all"
[D1]
sendxms -pVOICE 07246942484 < voice.dat
sendxms -pUUS 1234567 "This is a test message"
sendxms -pVOICE -aRECEIVE 07246942484 -fvoice.dat
sendxms -aQUERY 0123456789 -G1141863480
sendxms -aDELETE 0123456789 -G1141863480
sendxms -q5
sendxms -q5 -aRECEIVE
sendxms -aCHGPWD -pD1_X31 password Integration into email systemsFollowing .forward file should demonstrate how easy SendXMS can be integrated into an email system (Unix). You only have to generate a .forward file in your homedir with the following content: \wobo, "| /usr/local/sendxms/forward.sms" With this file all incoming emails will be forwarded to the userid wobo (here you have to enter your own userid, so that you have the same normal access to the emails as you will have without the .forward file) and the follwing script forward.sms will be called. This script sends a message (containing the originator and the subject of the email) to the specified phone number by SendXMS.
#! /bin/sh After a successfull SendXMS installation you can find an examaple Perl script in the samples sub directory which will forward (using a .forward file) all emails for a specific email account to the phone number specified in the Subject header. This variant of the script will always send the first 500 characters of mail with Content-Type text/plain and will automatically take care about the used character encoding. An direct integration in sendmail is very easy, too. For this you have only to define in sendmail.cf a MTA (for example Msendxms, ...) and in 'Rule Set 0' a rule which defines under which conditions SendXMS or a script file - one like forward.sms - should be called. Using Windows it is possible to be informed by SendXMS about incoming emails with the freeware product POSTIE or with the shareware mailer The Bat!. Using the tool mail2sms you can convert a complete MIME mail into tiny text before sending it as a SMS. Integration into WWW serversSendXMS can easily be integrated into WWW servers. SendXMS will automatically recognise whether it is invoked from a http server and will handle some special actions in accordance to the environment. As an example for an integration into a http server you can use the Perl script (Perl5) sendxms.cgi. To install that example you only have to copy the files sendxms.cgi and sendxms.ini to the cgi-bin directory of the http server and to adapt the file sendxms.ini (path, language and configuration files). Maybe you have also have to change the path to your Perl interpreter in the first line of sendxms.cgi. Please remember that the userid under which the http-server is running requires access rights to SendXMS.
The script will be invoked by entering the following into the Address field of your browser:
Graphical user interfaceOne optional part of SendXMS is a graphical user interface implemented in Java (requires Java Runtime Environment (JRE) (http://java.sun.com/). To call that user interface you can use the included script or batch files (xmsgui). After the starting the user interface for the first time the most required input fields are displayed. Selecting the menu option "Settings/Expert mode" you can get more options. After entering a phone number, a message text and selecting the button 'Send' SendXMS will be launched and the output is displayed in an automatically selected page. Every sent message will be stored in a journal which you can use (journals context menu) to query a status report for a message or to delete a message. X.25/X.31The SendXMS-Professional-Edition is also able to transmit messages via X.25 or X.31 (X.25 over ISDN). To use X.25 a TCP-X.25 bridge (a RFC1086 compliant or CISCO like) has to be used. To use X.31 you require a X.31 capable device and the special service X.31 from your telephone company (they will assign you a TEI). With this you only have to define a special provider in sendxms.pro and a device in sendxms.cfg (see below). All other handling is exactly as it is with a modem connection. Example (X.25):
Example (X.31):
TCP/IP, SSLThe SendXMS-Professional-Edition is also able to transmit messages via TCP/IP. To use TCP/IP connections you have to install and configure TCP/IP on your computer and to define a special provider in sendxms.pro with LINETYP=TCP (see below). You do not need to define any device to use TCP/IP connections. All other handling is exactly as it is with a modem connection. Incase of an installed OpenSSL package you can also use SSL connections. For that you just have to specify instead LineType=SSL of LineType=TCP. For more configuration settings for SSL connections see also Configuration Example:
PPPIn some cases (for example for Fixed network MMS) it is required to use a PPP connection. For this SendXMS is using functionallity of the used operating system (pppd and on Windows RasDial). Although this will happen transparently for the user we want to notice some special things. Opening a PPP connection a default route will be set to the created PPP interface. This means that all IP traffic (of all applications and all useres) will be routed by default over that PPP interface as long as the connection is open. Because this is not very reasonable this can be suppressed by defining the parameter NoDefaultRoute=true (in the chapter [PPP] in the .cfg file). if this parameter is used SendXMS will try to set a required (and not more) route itself. But for this it is required that SendXMS will be used with privileged rights (it has to be run by root or (on Windows) by an administrator). Using Unix/Linux you also have to notice that pppd can only be used if SendXMS is running in the root account or if ths s-Bit is set for pppd. Return codesSendXMS returns the count of successfully processed messages (return code 0 means that SendXMS terminated normally but was not abel to send or receive any messages). If the return code is negative then this is an error code, which is described in the file sendxms.err. This feature is only available in the registered version. Be aware that some Unix shells return the return code as an 'unsigned byte'. Therefore the return code is in the range between 0 and 255, where all values above 127 are error codes. If the parameter RCZEROIFOK=true is specified in sendxms.cfg SendXMS returns 0 if one ore more messages have been submitted. This is useful for usage within (for example) an email system. SMS over HTTPAlthough there is no standard available for SMS over HTTP (at least as far as we know) many service providers are offering such services. Because of the missing standard every provider is using an own syntax, which are often similar but nevertheless not compatible. Thatswhy we've also decided to introduce our own syntax but with the difference that ours is configurable and thatswhy usable with a lot of proprietary services. But if possible we recommend to use any of the standard SMS protocols and noz to use such a service. Using our SMS over HTTP implementation it is (at the moment) only possible to send (and not to receive) messages. Obwohl (nach unserem Wissen) für den Versand von SMS über HTTP kein Standardprotokoll exist If it is not possible to use any standard SMS protocol you just have to define a provider definition in your .pro file with Protocol=HTTP and LineType=TCP. Additionally you have to specify a URI for the used service with URI=... angeben. Using such a provider definition SendXMS will connect to the given address/port (Address=) and will use a GET request for sending a message. If your service provider requires a POST request this can be specified by using Protocol=HTTP[POST]. In this case a POST request with the Content-Type application/x-www-form-urlencoded will be sent. The character encodingwill always be UTF-8. The several data fields for the SMS (recipient number, sending number, message text, ...) will be named by default in the same way as in a SendXMS spool file (see also Server mode). Because the chance that the provider is using the same parameter names as SendXMS is not very high the used names can adapted by using MapUserValue=. Because the format of a response for SMS over HTTP is also not standardized the parameters OkFilter, ErrorFilter and MsgIdFilter can be used to define filters for identifying whether sending the message has been successfull or an error occured and for extracting the messageId (the service provider assigned to the message) out of the response (see also Phone number format filters). The following are two examples for a provider definition for SMS over HTTP:
[smstrade] MMS, Ringtones, Logos, WAP Push (OMA Provisioning, OMA DRM, OMA EMN, Bookmarks, MMS Notifications, ...)To send MMS messages (MIME file (the ContentType has to be specified within the first line) with BASE64 encoded parts) or (in case of SMS/EMS) formatted text messages, WAP Push messages (Bookmarks, Browser Settings, SyncML Settings, ...), MMS notifications, ringing tones, operator logos, group graphics or picture messages (concerning to the Nokia Smart Messaging Specification) the data have to be entered in hex format. Because such data is often available in any other format the data has to be converted what can be done with the tool XMSConv (only in registered version). With this you have the ability to convert .bmp, .png, .gif, .mng, .htm, .xml, .smil, .imy, .mid, .rtx, .rtttl files. Only with EMS 5.x a logo may be coloured. In all other cases a logo/bitmaps have to be coded in black/white. Nokia logos must have a size of:
EMS pictures must have a size of:
An EMS animation consists of 4 pictures with a size of 8 x 8 or 16 x 16. A Nokia animation consists of up to 16 logos with one of the above sizes. Using the Siemens OTA Download Service a bitmap or a midi file will be loaded onto the phone. The format depends on the downloaded phone model (e.g. a screen saver for a S45 should have a size of 101x64). For WAP Push messages additional specific data (have a look to the WAP specifications) can be specified. For example for the WSP header fields PushFlag or X-Wap-Initiator-Uri you can define default values in the cfg file (chapter [XMSConv]) which can be overridden using the command line options -XPushFlag or -XInitiatorUri. For WAP/OMA Client Provisioning documents you can also select one of 4 security mechanisms (e.g.: -XSEC=0 -XIMSI=123456789012345; this means that the messages will be only valid on the phone with thespecified IMSI): Here are some samples how to run it:
xmsconv -f<mms.smil> -FMMS -W<phone>
xmsconv -f<picture.gif> -FSMIL -M"Just a picture" -W<phone>
xmsconv -f<mms.smil> -FMMS -W<phone> -W-pt-com_mms
xmsconv -f<logo.bmp> -UGROUPLOGO -FNOKIA -W<phone>
xmsconv -f<logo.bmo> -m<mcc> -n<mnc> -UOPERATORLOGO -W<phone>
xmsconv -f<logo.png> -UOPERATORLOGO -m262 -n1 -UOPERATORLOGO -W<phone>
xmsconv -f<picture.bmp> -M"this is a picture message" -UPICTURE -W-V+3600 -W<phone>
xmsconv -f<ringtone.rtx> -URINGTONE -FMOTOROLA -W<phone>
xmsconv -f<bitmap.bmp> -FSIEMENS -W<phone>
xmsconv -f<melody.mid> -FSIEMENS -W<phone>
xmsconv -f<push.xml> -W<phone>
<?xml version="1.0"?> or
<?xml version="1.0"?> or
<?xml version="1.0"?> or
<?xml version="1.0"?> or
<?xml version="1.0"?> or
<?xml version="1.0"?> oder
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0"?>
xmsconv -f<mms.ind> -UWapPush -W<phone>
xmsconv -f<mms.ind> -UWapPush -W<phone>
X-Mms-Message-Type: m-notification-ind
<?xml version="1.0" encoding="UTF-8"?> UCS-2SendXMS is also able to send messages with UCS-2 encoding (multibyte). Because each character requires in this case two bytes the maximum message size is limited to 70 characters per GSM message. To send an UCS-2 message you have to specify the command line option -Zucs2 and you also should specify the character set of the given message (you have to specify the message in any single byte character set (like iso-8859-7) or in UTF-8; this character set is then automatically translated to UCS-2): sendxms -zutf8 -Zucs2 0123456789 "bla bla bla..." Mobile Number Portability (MNP)SendXMS already supports MNP since many years. You just have to specify the correct provider (network) each time you generate a message or a spool file. But because the user normaly does not know whether a recipients phone number has been ported or not SendXMS now also has the ability to retrieve this information automatically. How MNP works in different countries differs in each case. In the file sendxms.cfg you can define with MNP= a function within a dll or a shared object which will be called by SendXMS if required. The function will be called with two parameters for a porting identifier of the network to which the number belongs and the recipients phone number. If the number has been ported to a different network the function should set the identifier variable to the corresponding value and should return 0. If the number has not been ported (belongs still (or again) to the original network) the function should return a value not equal 0. If the identifier variable has been set and the function has returned 0 SendXMS will search in the pro file (by default sendxms.pro) for a provider definition with a corresponding MNP= definition. If the function has returned any value not equal to 0 or the identifier variable has been left blank SendXMS will continue in the normal way and will search for a provider using the PREFIX values. A prototype for an mnp function in a shared object is: int Mnp (char *id, char *adC); Using Windows the function should be defined like:
Borland-Compiler: int __stdcall __declspec(dllexport) Mnp (...)
/* The MS compiler decorates the function. This results in using _Mnp@<n> to call this function (or using a def file which exports the function with a correct name). */ Abbreviations
Where can I get the newest version?You can always get the newest version from www.sendxms.com. Problems/QuestionsPlease send an email including the following information to support@sendxms.com:
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||