SMS mit FileMaker und dem MBS-Plugin versenden.

SMS-Nachrichten versenden mit FileMakerIn diesem Fachartikel erläutern wir, wie Sie SMS-Nachrichten unter Verwendung des MBS Plugins direkt aus Ihrer FileMaker-Datenbank heraus versenden können. Dabei erstellen wir ein Teilscript, das durch einen Aufruf mit fünf Parametern beliebige SMS-Nachrichten an beliebige Empfänger senden kann. Als Gateway für den Versand von SMS-Nachrichten verwenden wir in diesem Beispiel den deutschen Anbieter smstrade.

Dieser Dienst bietet den Versand von SMS-Nachrichten in deutsche Netze ab 1,6 Cent pro Nachricht, weltweit können SMS-Nachrichten zu Preisen ab 4,9 Cent pro Nachricht versendet werden, jeweils zzgl. 19% Mehrwertsteuer. Nach der Registrierung stehen für den Start 30 kostenlose SMS-Nachrichten zur Verfügung, die zu Testzwecken versendet werden können. Eine monatliche Grundgebühr fällt bei diesem Anbieter nicht an. Im folgenden erfahren Sie, wie Sie SMS-Nachrichten automatisiert direkt aus Ihrer FileMaker-Datenbank heraus versenden können.

Anmeldung bei smstrade

Um SMS-Nachrichten über das SMS-Gateway versenden zu können, registrieren Sie sich zunächst bei smstrade.de. Die Registrierung ist kostenlos und beinhaltet zum Start den Versand von bis zu 30 kostenlosen SMS-Nachrichten.
smstrade SMS Gateway

Stammdaten für das SMS-Gateway

Zunächst werden in Ihrer FileMaker-Datenbank drei Felder benötigt, die die Zugangs- und Stammdaten für das SMS-Gateway enthalten sollen. Diese Felder gelten global für die Nutzung in Ihrer gesamten FileMaker-Lösung. Alternativ können Sie statt Feldern auch globale Variablen nutzen, die beim Start Ihrer Lösung in einem Script initialisiert werden. Für den Versand von SMS-Nachrichten werden folgende Felder für die Stammdaten benötigt:

  • Absender – Absenderkennung der SMS, z.B. ‚0049123456789‘ oder ‚+49123456789‘
  • Gateway Key – Gateway-Schlüssel, den Sie nach der Registrierung bei smstrade.de erhalten.
  • Route – smstrade bietet drei Tarifoptionen an:
    • basic für den Versand von SMS-Nachrichten innerhalb Deutschlands
    • gold für den weltweiten Versand mit beliebiger Absenderkennung
    • direct für den weltweiten Versand direkt über den Netzbetreiber

Erstellen Sie in Ihrer Datenbank drei Felder oder globale Variablen, auf die Sie in ihrer gesamten Lösung Zugriff haben. Nach der Registrierung bei smstrade tragen Sie die Stammdaten in die entsprechenden Felder ein. Für den Versand von SMS-Nachrichten innerhalb Deutschlands empfehlen wir die Tarifoption ‚basic‘.

Das Script für den SMS-Versand

Im nächsten Schritt programmieren wir ein Script, mit dem Sie beliebige SMS-Nachrichten an beliebige Empfänger aus der gesamten Datenbank heraus versenden können. Das Script kann später mit folgenden fünf Script-Parametern aufgerufen werden:

  • Empfänger – Telefonnummer des Empfängers, z.B. ‚0049123456789‘ oder ‚+49123456789‘
  • Text – Text der SMS-Nachricht (bis zu 1.530 Zeichen als verknüpfte SMS)
  • Absender – Absenderkennung, wird i.d.R. aus Stammdatenfeld erzeugt.
  • Gateway Key – Gateway-Schlüssel, wird i.d.R. aus Stammdatenfeld erzeugt.
  • Route – Route (Tarif), wird i.d.R. aus Stammdatenfeld erzeugt.

Wenn Sie Felder ‚Absender‘, ‚Gateway Key‘ und ‚Route‘ aus Stammdatenfeldern erzeugen, sollte das Script zunächst prüfen, ob diese Felder auch gepflegt wurden. Aus diesem Grund enthält unser Script am Anfang eine entsprechende Abfrage. Im folgenden finden Sie das gesamte Script zum Versenden von SMS-Nachrichten mit Unterstützung des MBS FileMaker Plugins.

Script-Parameter übergeben

Beim Aufruf dieses Scripts werden fünf Script-Parameter in einem String übergeben, dessen Werte mit Hochstrich (|) getrennt werden. Für die Trennung des Strings nutzen wir eine eigene Funktion namens „StringTrennen“. Um das Script wie gezeigt verwenden zu können, legen Sie zunächst folgende Custom Function (eigene Funktion) in FileMaker Pro Advanced an:

StringTrennen (String; Nummer)

Falls(Nummer = 1;
   ZeichenLinks ( String; (Position ( String; "|"; 1; 1))-1);
ZeichenMitte ( String;
(Position ( String; "|"; 1; Nummer-1))+1;
(Position ( String; "|"; 1; Nummer)) - ((Position ( String; "|"; 1; Nummer-1))+1)
)
 )

Script für den SMS-Versand

Haben Sie die oben genannte Custom Function eingefügt oder verfügen über eine andere eigene Funktion, die durch ein Zeichen getrennte Strings extrahieren kann, legen Sie im Scripteditor ein neues Script an und benennen Sie es als Teilscript nach Ihrem persönlichen Namensschema (z.B. ‚ts.SMS_Versand‘).

Wenn [NICHT IstLeer(Absender) UND NICHT IstLeer(Key) UND NICHT IstLeer(Route)]
   #Script-Parameter: Tel | Text | From | Key | Route
   Variable setzen [$tel_nr; Wert:StringTrennen(Hole(ScriptParameter); 1)]
   Variable setzen [$text; Wert:StringTrennen(Hole(ScriptParameter); 2)]
   Variable setzen [$from; Wert:StringTrennen(Hole(ScriptParameter); 3)]
   Variable setzen [$key; Wert:StringTrennen(Hole(ScriptParameter); 4)]
   Variable setzen [$route; Wert:StringTrennen(Hole(ScriptParameter); 5)]
   #
   # Transfer initialisieren
   Variable setzen [$r; Wert:MBS("Trace")]
   Variable setzen [$to; Wert:MBS("String.EncodeURLComponent"; $tel_nr; "utf8")]
   Variable setzen [$from; Wert:MBS("String.EncodeURLComponent"; $from; "utf8")]
   Variable setzen [$body; Wert:Austauschen(MBS("String.EncodeURLComponent"; $text; "utf8"); "%20"; "+")]
   Variable setzen [$curl; Wert:MBS("CURL.New")]
   Variable setzen [$result; Wert:MBS("CURL.SetOptionpost"; $curl; 1)]
   Variable setzen [$result; Wert:MBS("CURL.SetOptionVerbose"; $curl; 1)]
   Variable setzen [$result; Wert:MBS("CURL.SetOptionURL"; $curl; "http://gateway.smstrade.de")]
   #
   # Input XML und SMS-Details setzen
   Variable setzen [$content; Wert:"key=" & $key & "&" & "to=" & $to & "&" & "message=" & $body & "&" & 
   "route=" & $route & "&" & "from=" & $from & "&" & "charset=utf-8"]
   Variable setzen [$content; Wert:MBS( "String.ReplaceNewline"; $content; 2 )]
   Variable setzen [$result; Wert:MBS("CURL.SetOptionPostFields"; $curl; $content)]
   #
   # Transfer starten
   Variable setzen [$result; Wert:MBS("CURL.Perform"; $curl)]
   #
   # Ergebnis prüfen
   Variable setzen [$$debugText; Wert:MBS("String.ReplaceNewline"; MBS("CURL.GetDebugAsText"; $curl);1)]
   Variable setzen [$$resultText; Wert:MBS("String.ReplaceNewline"; MBS("CURL.GetResultAsText"; $curl);1)]
   Variable setzen [$r; Wert:MBS("CURL.Cleanup"; $curl)]
Sonst
   Eigenes Dialogfeld anzeigen ["SMS-Gateway nicht eingerichtet"; "Keine Stammdaten eingetragen!"; "OK"]
Ende (wenn)

Im ersten Teil des Scriptes wird zunächst der übergebene Script-Parameter-String in einzelne Variablen extrahiert. Im zweiten Teil wird die CURL-Engine des MBS FileMaker Plugin initialisiert. Der dritte Teil setzt den String zusammen, der zum Server des SMS-Gateways gesendet wird. Der Versand findet im Teilscript „Transfer starten“ statt. Im letzten Teil wird der Versandstatus in die globalen Variablen $$result und $$debug geschrieben und kann hier nach dem Versand ausgelesen werden.

Download Demo-Datenbank

Damit Sie nicht in C=64-Manier den gesamten Quellcode abtippen müssen, stellen wir Ihnen die in diesem Artikel beschriebene Lösung als Beispieldatei zum Download zur Verfügung. Die Beispieldatei ist im fmp12-Format und setzt FileMaker 12, 13 oder 14 mit installiertem MBS FileMaker Plugin voraus. Wer nicht über eine Lizenz von FileMaker Pro Advanced, sondern nur über den normalen FileMaker Pro verfügt, kann diese Beispieldatei nutzen, die die benötigte Custom Function zum Trennen des Übergabestrings bereits enthält.

Download FileMaker Beispieldatei

Download SMS Beispieldatenbank

Diesen Beitrag bewerten:

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Bisher noch keine Bewertungen vorhanden)
Loading...

Über den Autor

Markus Schall
Entwicklung von FileMaker-Datenbanken seit 1994, Modifikation und Erweiterung von FileMaker-Lösungen, Konvertierung von FileMaker-Datenbanken von .fm, .fp3, .fp5 (FileMaker 2-6) oder .fp7 (FileMaker 7-11) zu .fmp12 (FileMaker 12-16), Schnittstellen zu Drittsystemen wie Onlineshops, CMS oder andere Datenbanken. Entwicklung individueller FileMaker-Datenbanksysteme auf Basis des gFM-Business-Frameworks mit persönlicher Beratung aus Oldenburg. Betreiber des Online-Fachportals goFileMaker.de, Entwickler des CRM- und Warenwirtschaftssystems gFM-Business. Mitglied in der FileMaker Business Alliance, FileMaker Developers Subscription und FMM Experte. Gewinner eines FMM Award 2011, vergeben durch das FileMaker Magazin.

Schreiben Sie einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.