Sendet oder empfängt SMS-Nachrichten.
SMS(Schlange
[,Optionen
])
Regelt den Austausch von SMS-Nachrichten mit einem SMS-fähigen Telefon oder über ein SMS-Service-Center nach dem Protokoll ETSI ES 201 912 auf analogen oder ISDN-Leitungen. Das Shell-Programm smsq verwendet dazu FSK[65] - die Funktion über komprimierte Codecs wie GSM ist daher unwahrscheinlich.
Optionen:
Alle Sende-/Empfangsschlangen werden in
/var/spool/asterisk/sms/
gespeichert: die Nachrichten
vom Service-Center zum Telefon in
sc-me.
, die
Nachrichten vom Telefon zum SMSC in
Schlange
/me-sc.
. In
Schlange
//var/log/asterisk/sms
wird ein Log
geschrieben.
Beim Verbinden als Client (a
) werden alle im
Verzeichnis
me-sc.
wartenden
Nachrichten gesendet und dann gelöscht; die empfangenen werden in
Schlange
/sc-me.
mit einem
Timestamp im Dateinamen gespeichert. Wenn wir uns als Service-Center
verbinden (Schlange
/s
) ist das genau umgekehrt.
Die Nachrichten-Dateien haben folgendes Format, wobei ausgelassene Parameter Default-Werte haben:
oa=Originating Address (Absendernummer)
Nationale
Telefonnummer oder internationale mit vorangehendem +
(z.B.
+49
).
da=Destination Address (Empfängernummer)
Nationale
Telefonnummer oder internationale mit vorangehendem
+
.
scts=Service Centre Time Stamp (Zeitstempel vom SC)
Im
Format YYYY-MM-DD HH:MM:SS
pid=Protocol Identifier (decimal octet value)
dcs=Data coding scheme (decimal octet value)
mr=Message reference (decimal octet value)
ud=Der Nachrichtentext
Wenn
andere Zeichen als 10, 13, 32-126, 128-255 (dezimal) in der Nachricht
vorkommen, wird ud=
durch ud#
ersetzt und die
Zeichen folgen hexadezimal kodiert.
srr=Status Report Request (0|1)
rp=Return Path (0|1)
vp=Validity Period (Gültigkeitsdauer in Minuten)
Beim
Senden an ein SMSC müssen nur da
und ud
verwendet werden, oa
wird ignoriert; beim Senden an ein
Telefon sind nur oa
und ud
nötig,
da
wird ignoriert.
Eine Extension zum Empfangen von Nachrichten könnte so aussehen (wenn 01930100 die Nummer des für uns zuständigen SMSC - hier T-Com - ist):
[incoming] exten => _X.,1,GotoIf($["${CALLERIDNUM}" = "01930100"]?sms-me-in,${EXTEN },1) ; oder so: ;exten => _X./_0193010.,1,Goto(sms-me-in,${EXTEN},1) [sms-me-in] exten => _X.,1,Wait(1) exten => _X.,n,SMS(me-eingang,a) exten => _X.,n,System(handleincomingsms) exten => _X.,n,Hangup()
wobei
handleincomingsms
z.B. smsq
--process=
sein
könnte, was für jede eingegangene Nachricht einen Befehl ausführt.befehl
--queue=me-eingang
Ausgehende Nachrichten sollten als Dateien geschrieben werden, könne aber auch mit folgendem (veralteten) Aufruf erzeugt werden (0193010 ist die Nummer des SMSC - hier T-Com):
[outgoing] exten = 0193010,1,Goto(sms-me-out,${CALLERIDNUM},1) [sms-me-out] exten => _X.,1,Set(CDR(accountcode)=SMS) exten => _X.,n,Set(smsFrom=${CALLERIDNUM}) exten => _X.,n,SMS(${smsFrom},s,${EXTEN},${smsText}) ; SMS erzeugen exten => _X.,n,SMS(${smsFrom},s) ; senden exten => _X.,n,Hangup()
Weitere Informationen und viele Beispiele auf http://www.voip-info.org/wiki/view/Asterisk+cmd+Sms
und http://www.pi4tel.de/asterisk/sms.shtml.
Man kann jedoch nicht erwarten, dass SMS()
„out of the
box“ sofort funktioniert.
Interner Hilfetext zu dieser Applikation in Asterisk 1.4: -= Info about application 'SMS' =- [Synopsis] Communicates with SMS service centres and SMS capable analogue phones [Description] SMS(name|[a][s]): SMS handles exchange of SMS data with a call to/fro m SMS capabale phone or SMS PSTN service center. Can send and/or receive SMS messages. Works to ETSI ES 201 912 compatible with BT SMS PSTN service in UK Typical usage is to use to handle called from the SMS service centre CLI , or to set up a call using 'outgoing' or manager interface to connect service centre to SMS() name is the name of the queue used in /var/spool/asterisk/sms Arguments: a: answer, i.e. send initial FSK packet. s: act as service centre talking to a phone. Messages are processed as per text file message queues. smsq (a separate software) is a command to generate message queues and send messages. Differenz zum internen Hilfetext in Asterisk 1.2: - keine - |