SMS-Antworten aus einer SQL-Datenbank
Der Autoreply-Datenbank-Benutzer des Ozeki SMS Gateways kann über eine Verbindungszeichenfolge mit Ihrer Microsoft SQL-, Oracle-, MySQL-, Sybase- usw. Datenbank verbinden. Er führt jede von Ihnen bereitgestellte SELECT-Abfrage aus, nachdem eine SMS-Nachricht empfangen wurde. Das Ergebnis der Abfrage wird als ausgehende Nachrichten gesendet. Die Abfragen und Tabellen können auch von Ihrer eigenen Anwendung aus geändert werden.
Wie man eine SMS-Antwort aus SQL sendet
So senden Sie eine SMS-Antwort aus SQL:
- Starten Sie das Ozeki SMS Gateway
- Fügen Sie einen neuen Autoreply-Datenbank-Benutzer hinzu
- Erstellen Sie die SQL-Datenbanktabellenstruktur
- Richten Sie den Autoreply-Datenbank-Benutzer ein
- Stellen Sie das Autoreply-Textskript bereit
- Verwenden Sie identifizierbare Nummern und Schlüsselwörter
- Senden Sie eine Test-SMS, um eine Antwort aus SQL zu erhalten
- Überprüfen Sie die Protokolle des Autoreply-Datenbank-Benutzers
Sie können den folgenden Dienst mit dieser Lösung erstellen (Abbildung 1):
1.) Eine SMS-Nachricht wird vom Ozeki SMS Gateway von einem Mobiltelefon empfangen.
2.) Der Autoreply-Datenbank-Benutzer des Ozeki SMS Gateways sucht nach Schlüsselwörtern in der SMS-Nachricht mithilfe einer txt-Datei.
3.) Abhängig von der Suche wird eine Autoreply-Nachricht von Ihrem Datenbankserver mit derselben txt-Datei ausgewählt.
Es ist wichtig, dass Sie einen IP-SMS-Dienstanbieter oder ein GSM-Modem in Ihrem Ozeki SMS Gateway konfiguriert haben, damit Sie SMS-Nachrichten empfangen und automatisch mit diesem Beispiel darauf antworten können.
Schritt 1 - Einrichten des Autoreply-Datenbank-Benutzers im Ozeki SMS Gateway
Zuerst müssen Sie einen Autoreply-Datenbank-Benutzer installieren, um den beschriebenen Dienst zu erstellen. Klicken Sie in der 'Management'-Konsole bitte auf 'Hinzufügen', wie in Abbildung 2 gezeigt.
Suchen Sie den Autoreply-Datenbank-Benutzer und klicken Sie auf den blauen 'Installieren'-Link daneben. Wie Sie in Abbildung 3 sehen können.
Schritt 2 - Erstellen der Datenbanktabellenstruktur
Der Autoreply-Datenbank-Benutzer wird die Antwort-SMS-Nachrichten aus einer Datenbanktabelle auswählen. Erstellen Sie die folgende Datenbankstruktur, um die SMS-Nachrichten zu speichern (Abbildung 4). Dieses Beispiel verwendet einen MySQL-Datenbankserver, aber Sie können auch andere Datenbanken wie Microsoft SQL, Oracle, Sybase usw. verwenden. Sie können auch andere Tabellen und Tabellenlayouts verwenden.
CREATE TABLE autoreplymessage ( id int(11) NOT NULL auto_increment, keyword varchar(30) default NULL, msg text default NULL, PRIMARY KEY (id) ); INSERT INTO autoreplymessage (keyword,msg) VALUES ("default","Es gibt keine Daten für dieses Schlüsselwort."), ("red","Rot ist eine gute Farbe."), ("blue","Blau ist nicht die beste Option.");Abbildung 4 - CREATE TABLE und INSERT-Zeilen in die 'autoreplymessage'-Tabelle
Ihre Tabellen können mit SELECT * FROM-Anweisungen angezeigt werden (Abbildung 5). Obwohl dieses Beispiel nur eine Tabelle enthält.
> SELECT * FROM autoreplymessage;
id keyword msg ---------- ------------------------------ ------------------------------------- 1 default Es gibt keine Daten für dieses Schlüsselwort. 2 red Rot ist eine gute Farbe. 3 blue Blau ist nicht die beste Option. (3 rows affected)Abbildung 5 - Lesen der 'autoreplymessage'-Tabelle mit einer SELECT-Anweisung
Falls kein Datenbanktreiber mit dem Datenbankserver installiert ist, sollten Sie einen Treiber installieren, da Sie im nächsten Schritt die Verbindungszeichenfolge benötigen werden. Der Datenbanktreiber verbindet das Ozeki SMS Gateway mit dem Datenbankserver. In den meisten Fällen ist ein Datenbanktreiber mit dem Datenbankserver installiert.
Schritt 3 - Konfigurieren Sie den Autoreply-Datenbankbenutzer für Ihre Datenbank
Sie müssen den Datenbankverbindungstyp und die Verbindungszeichenfolge im Panel "Datenbank-Setup" des Autoreply-Datenbankbenutzers eingeben (Abbildung 6). Der Typ kann aus der Combobox ausgewählt werden, während die Zeichenfolge in das Textfeld eingegeben werden muss.
In Abbildung 7 sehen Sie eine Beispielzeichenfolge für eine MySQL-Datenbankverbindung.
Beachten Sie, dass Sie Ihren eigenen Verbindungstyp (OleDB, ODBC, SQLServer, Oracle) für Ihren eigenen Datenbankserver verwenden können,
wie Microsoft SQL, Oracle, Sybase usw. Falls Sie einen ODBC-Treiber für MySQL verwenden,
müssen Sie nur die MySQL-Server-IP, den Datenbanknamen, Benutzernamen und das Passwort in der folgenden Zeichenfolge an Ihre eigenen Werte anpassen:
Verbindungstyp: ODBC
Verbindungszeichenfolge: Driver={MySQL ODBC 5.3 Unicode Driver}; Server=127.0.0.1;Database=ozekisms;User=ozeki;Password=abc123;Option=4;
Um die Verbindungszeichenfolge für andere Datenbankserver zu finden, wird empfohlen, den Leitfaden für SMS-Datenbank-Verbindungszeichenfolgen zu lesen.
Schritt 4 - Skript zum automatischen Antworten aus der SQL-Datenbank schreiben
Jetzt ist es an der Zeit, das Skript zu schreiben, das in der Lage ist, eine Zeile aus Ihrer Datenbanktabelle auszuwählen, falls die Tabelle in SCHRITT 2 erfolgreich erstellt wurde. Das Nachrichtenattribut der ausgewählten Zeile wird auf die SMS-Nachricht geantwortet. Hier finden Sie den Pfad des Beispielskripts: C:\Programme\Ozeki\Ozeki10\Daten\NG\config\OzekiUsername\sqlscript.txt
Ein einfacher Texteditor kann diese Dateien bearbeiten, oder Sie können Ihre eigene txt-Datei erstellen und sie mit Ihrer eigenen Anwendung bearbeiten, was nützlich ist, wenn Sie die Abfragen ändern möchten. Bitte geben Sie den Pfad zur Datei über den Autoreply-Datenbankbenutzer an, indem Sie auf "Datenbank-Setup" klicken und die Registerkarte "Autoreply-Skript" auswählen (Abbildung 8)
Schritt 5 - Die Struktur von SQL-Abfrage-Skripten
Das SQL-Skript des Autoreply-Datenbankbenutzers enthält Filter-Anweisungs-Paare, die genau wie die if-then-Struktur in Programmiersprachen funktionieren. Die empfangene SMS-Nachricht durchläuft den Filter, und wenn sie zutrifft, wird eine SQL-SELECT-Anweisung ausgeführt. Der Nachrichteninhalt der ausgewählten Zeilen wird an eine Telefonnummer weitergeleitet. Diese Nummer ist der 1. Parameter des Ergebnissatzes der SELECT-Anweisung, während der Nachrichtentext der 2. ist. Der Filter kann Telefonnummern, Textfragmente und Schlüsselwörter identifizieren. Das Schlüsselwort jeder Nachricht ist das erste Wort des Textes. Die Weiterleitung erfolgt, wenn die Adresse des Empfängers in der Datenbank enthalten ist (Abbildung 11).
Schritt 6 - Ein einfaches Schlüsselwort-Beispiel
Dieses Beispiel wird auf der folgenden Tabelle ausgeführt, die Sie in Abbildung 9 sehen können.
id keyword msg ---------- ------------------------------ ------------------------------------- 1 default Es gibt keine Daten für dieses Schlüsselwort. 2 red Rot ist eine gute Farbe. 3 blue Blau ist nicht die beste Option.Abbildung 9 - Der Inhalt der Tabelle "autoreplymessage"
Sie können das folgende Skript in Abbildung 10 auf der Tabelle "autoreplymessage" ausführen, indem Sie es zu "sqlscript.txt" hinzufügen. Zur Erinnerung: Das Schlüsselwort, das durch das Zeichen "k" symbolisiert wird, ist das erste Wort in der SMS-Nachricht. Dieses Wort wird vom Filter überprüft. Wenn eine Filterprüfung erfolgreich ist, wird die SELECT-Anweisung ausgeführt und das Skript stoppt. Wie Sie sehen können, können Sie konstante Werte in die SELECT-Anweisung einfügen. Zum Beispiel "$sender", der Absender der eingehenden Nachricht.
Skriptelemente, die Sie in sqlscript.txt einfügen könnenSELECT '$sender',msg FROM autoreplymessage WHERE keyword='red' #Der erste Filter prüft, ob das Wort "RED" das Schlüsselwort war. #Wenn ja, wird "Rot ist eine gute Farbe." als Antwortnachricht ausgewählt. #Wenn nein, geht es zum nächsten Filter. k^BLUE SELECT '$sender',msg FROM autoreplymessage WHERE keyword='blue' #Der zweite Filter prüft, ob das Wort "BLUE" das Schlüsselwort war. #Wenn ja, wird "Blau ist nicht die beste Option." als Antwortnachricht ausgewählt. #Wenn nein, geht es zum nächsten Filter. k.* SELECT '$sender',msg FROM autoreplymessage WHERE keyword='default' #Der dritte Filter akzeptiert jedes andere Schlüsselwort. #Er wählt "Es gibt keine Daten für dieses Schlüsselwort." als Antwortnachricht aus.Abbildung 10 - Beispielskript, das in sqlscript.txt eingefügt werden kann
Der Filterteil des SQL-Abfrage-Skripts funktioniert ähnlich wie der Filterteil des SMS-Nachrichtenskripts, aber denken Sie daran, nur nach Filterbeispielen zu suchen, da der zweite Teil immer eine SQL-SELECT-Anweisung ist.
Schritt 7 - Vordefinierte Schlüsselwörter in Ozeki SMS Gateway
Diese Arten von Schlüsselwörtern können im Skript verwendet werden. Zum Beispiel '$sender':
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='red'Abbildung 11 - Sendet msg an '$sender'
Autoreply Database User kann folgende Schlüsselwörter erkennen:
Schlüsselwort | Wert | $originator | Wird durch die Telefonnummer des Absenders ersetzt. |
---|---|
$sender | =$originator (Der $sender ist ein anderer Name für den $originator.) |
$recipient | Wird durch die Telefonnummer ersetzt, die die Nachricht erhalten hat. |
$receiver | =$recipient (Der $receiver ist ein anderer Name für den $recipient.) |
$messagedata | Wird durch den Text der Nachricht ersetzt. |
$keyword | Wird durch das 1. Wort in der Nachricht ersetzt. Dieses Wort wird als Schlüsselwort bezeichnet. |
$after | Wird durch den verbleibenden Text nach dem Schlüsselwort ersetzt. |
$senttime | Wird durch einen Zeitstempel ersetzt, der anzeigt, wann die Nachricht gesendet wurde. |
$receivedtime | Wird durch einen Zeitstempel ersetzt, der anzeigt, wann die Nachricht empfangen wurde. |
$messagetype | Wird durch den Typ der Nachricht ersetzt, was in den meisten Fällen 'SMS:TEXT' ist. |
$id | Wird durch eine eindeutige Zeichenfolge ersetzt, die die Nachricht in Ozeki SMS Gateway identifiziert. |
$operator | Wird durch den Namen des Dienstanbieters ersetzt, der die Nachricht in Ozeki SMS Gateway empfangen hat. |
$1 | Wird durch das 1. Wort in der Nachricht ersetzt. |
$2 | Wird durch das 2. Wort in der Nachricht ersetzt. |
$3 | Wird durch das 3. Wort in der Nachricht ersetzt, usw... |
Die Struktur des Autoreply-Skripts wird auf diesen Webseiten erklärt:
- Die einfache Struktur einer Skriptdatei wird auf dieser Webseite definiert.
- 'sqlscript.txt'-Beispiel
Schritt 8 - Autoreply aus der Datenbanklösung testen
Nachdem Sie die Schritte 1 bis 6 durchgeführt haben, können Sie die Lösung testen. Ozeki SMS Gateway leitet eingehende SMS-Nachrichten an Ihren Autoreply Database User weiter. Das SQL-Abfrage-Skript filtert die SMS-Nachricht, um die richtigen SELECT-Ergebnisgruppen zu erstellen. Jede Zeile der Ergebnisgruppe stellt eine Nachricht dar, die beantwortet oder weitergeleitet werden soll.
Sie können das Nachrichtenprotokoll Ihres Autoreply Database Users unter folgendem Pfad verfolgen:
C:\Programme\Ozeki\Ozeki10\Daten\NG\Protokolle
Wenn ich Daten in die Tabelle Ozekimessageout einfüge, erhalte ich keine Nachricht auf meinem Handy. Was könnte der Grund sein, dass ich die Textnachricht nicht erhalte, die in die Out-Tabelle über meine SQL-Konsole eingefügt wurde?
Zuerst sollten wir ein Problem mit dem Mobilfunknetz ausschließen. Senden Sie eine Test-SMS direkt über die grafische Benutzeroberfläche (GUI) von Ozeki. Wenn die Nachricht erfolgreich ankommt, scheint die Netzwerkverbindung ordnungsgemäß zu funktionieren.
Als nächstes müssen wir überprüfen, ob Nachrichten von Ihrer Datenbank an die Ozeki-Software übertragen werden. Fügen Sie einige Testnachrichten in die Tabelle Ozekimessageout ein. Navigieren Sie dann in der Ozeki-GUI zum Postausgang des Datenbankbenutzers, den Sie verwenden. Wenn diese Testnachrichten im Postausgang fehlen, liegt das Problem im Datenübertragungsprozess zwischen der Datenbank und Ozeki.
Ich möchte eine Datenbank für viele "Datenbankbenutzer" verwenden. Ist das möglich?
Absolut! Ozeki SMS Gateway ermöglicht es Ihnen, separate Nachrichtenprotokolle für verschiedene Zwecke zu führen, indem Sie separate Datenbankbenutzer verwenden.
Hier ist eine Schritt-für-Schritt-Anleitung:
- Neue Datenbanktabellen erstellen: Richten Sie zwei neue Tabellen in Ihrer Datenbank ein. Zur einfachen Identifizierung können Sie sie ozekimessagein2 und ozekimessageout2 nennen. Diese Tabellen sollten die Struktur der vorhandenen ozekimessagein- und ozekimessageout-Tabellen nachbilden, die von Ihrem ersten Datenbankbenutzer verwendet werden.
- Den zweiten Datenbankbenutzer konfigurieren: Greifen Sie auf das Konfigurationsformular für Ihren zweiten Datenbankbenutzer in Ozeki zu.
- SQL-Vorlagen anpassen: Suchen Sie den Abschnitt für SQL-Vorlagen innerhalb des Konfigurationsformulars. Diese Vorlagen legen fest, wie Nachrichten in den Datenbanktabellen gespeichert werden.
- Tabellennamen aktualisieren: Aktualisieren Sie in den SQL-Vorlagen für den zweiten Datenbankbenutzer die vorhandenen Tabellennamen (ozekimessagein und ozekimessageout) so, dass sie mit den neu erstellten Tabellen (ozekimessagein2 und ozekimessageout2) übereinstimmen.
Mein Ozeki SMS Gateway trennt immer die Verbindung zu meinem MySQL-Server mit der folgenden Fehlermeldung: MySQL Server has gone away. Was soll ich tun?
Um die Reaktionsfähigkeit bei der Verwendung von Ozeki mit MySQL zu verbessern, passen Sie die Timeout-Einstellung an. So geht's:
MySQL-Timeout konfigurieren:
- Bearbeiten Sie Ihre MySQL-Konfigurationsdatei (z.B. my.ini) und setzen Sie den interactive_timeout-Parameter auf die gewünschte Dauer in Sekunden (z.B. interactive_timeout = 28800 für 8 Stunden).
- Speichern Sie die Änderungen und starten Sie den MySQL-Dienst neu.
Ozeki-Verbindungszeichenfolge aktualisieren:
-
Ändern Sie Ihre Ozeki-Verbindungszeichenfolge so, dass Interactive anstelle von wait_timeout verwendet wird. Das korrekte Format lautet Driver={MySQL ODBC 5.2 ANSI Driver};Server=127.0.0.1;Database=ozeki;User=test;Password=test;Interactive=IHRE_TIMEOUT_WERTE.
- Ersetzen Sie IHREN_TIMEOUT_WERT durch den gewünschten Timeout in Sekunden.
Driver={MySQL ODBC 5.2 ANSI Driver};Server=127.0.0.1;Database=ozeki;User=test;Password=test;interactive=;Option=8;
More information
- SMS-Antwort von PC an Mobilgerät
- Wie schreibe ich ein SMS-Antwortskript
- Wie sende ich eine SMS-Antwort aus SQL