Coverbild des Asterisk Buches von Stefan Wintermeyer

Letzte Woche => Endspurt!

Montag den 29.01.07 geht das Buch in die Produktion. Bis dahin laeuft der Beta-Test noch in vollem Umfang. Bitte melden Sie Fehler! Siehe Beta-Test FAQ.

Erscheinungstermin: 03.03.07. Das Buch wird auf dem Asterisk-Tag.org in Chemnitz vorgestellt und kann dort auch erworben werden. 10 Tage spaeter wird es im Buchhandel sein. Wer nicht in Chemnitz sein kann, sollte das Buch vorbestellen: Amazon oder direkt beim Verlag

Asterisk-Schulungen und Consulting vom Autor dieses Buches finden Sie auf http://www.amooma.de. Naechste Asterisk-Schulung: 12.02. - 13.02.07 - Ach ja, ... wir suchen auch noch Asterisk Entwickler! => http://www.amooma.de/jobs/


10.95. SMS()

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[56] - die Funktion über komprimierte Codecs wie GSM ist daher unwahrscheinlich.

Optionen:

a
Als antwortende Seite agieren.
s
Als Service-Center agieren, das mit einem Telefon kommuniziert.

Alle Sende-/Empfangsschlangen 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()

wobei handleincomingsms z.B. smsq --process=befehl --queue=me-eingang sein könnte, was für jede eingegangene Nachricht einen Befehl ausführt.

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.

Anmerkung

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/from 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 - 


[56] Frequency Shift Keying, FSK