Sendet oder empfängt SMS-Nachrichten.
SMS(Warteschlange
[,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[] – dass ein Austausch über komprimierte Codecs wie GSM
funktioniert, ist daher unwahrscheinlich.
Optionen:
- a
Als antwortende Seite agieren.
- s
Als Service-Center agieren, das mit einem Telefon
kommuniziert.
Alle Sende-/Empfangswarteschlangen werden in
/var/spool/asterisk/sms/
gespeichert: die Nachrichten
vom Service-Center zum Telefon in
sc-me.Schlange
/
, die
Nachrichten vom Telefon zum SMSC in
me-sc.Schlange
/
. In
/var/log/asterisk/sms
wird ein Log
geschrieben.
Beim Verbinden als Client (a
) werden alle im
Verzeichnis me-sc.Schlange
/
wartenden Nachrichten gesendet und dann gelöscht; die empfangenen werden in
sc-me.Schlange
/
mit einem
Timestamp im Dateinamen gespeichert. Wenn wir uns als Service-Center
verbinden (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()
Dabei könnte
handleincomingsms
z. B.
smsq
--process=befehl
--queue=me-eingang
sein,
was für jede eingegangene Nachricht einen Befehl ausführt.
Ausgehende Nachrichten sollten als Dateien geschrieben werden, können
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()
— keine —