Die Struktur des SQL-Abfrage-Skripts
Scrollen Sie nach unten, um die Struktur des SQL-Abfrage-Skripts zu sehen. Sie können jedem Autoreply-Datenbankbenutzer eine Skriptdatei bereitstellen, die in der Lage ist, SMS-Nachrichten zu senden, wenn sie dem Skript folgen. Die Datei arbeitet mit jeder eingehenden Nachricht und wählt ausgehende Nachrichten entsprechend dem Filter aus.
Einführung
Schauen Sie sich die Skriptdatei an. Sie können sehen, dass sie in Abschnitte unterteilt ist, die durch Leerzeilen getrennt sind (Abbildung 1). Sie können so viele Abschnitte schreiben, wie Sie möchten, ohne maximale Grenze. Die Abschnitte werden sequenziell gelesen, und der erste Abschnitt, der mit der eingehenden SMS übereinstimmt, wird verwendet, um die Antwort-SMS-Nachricht zu erstellen.
Die erste Zeile jedes Abschnitts ist die Filterbedingung, und die folgenden ein oder mehr SQL-Anweisungen werden als Aktion bezeichnet. SQL-SELECT-Anweisungen können eine oder mehrere Antwortnachrichten zurückgeben. Wenn die Filterbedingung mit den Daten der eingehenden Nachricht übereinstimmt, werden die Anweisungen ausgeführt, bis eine Leerzeile gefunden wird. In diesem Fall werden andere Abschnitte nicht überprüft.
Bedingung
Jeder Abschnitt beginnt mit einer Bedingung, die aus einer einzelnen Zeile besteht, die in zwei Teile geteilt ist (Abbildung 2)
Der erste Teil ist der Zielauswahlfilter, ein einzelnes Zeichen, das bestimmt, welcher Teil der eingehenden Nachricht gefiltert werden soll (Abbildung 3). FONT style="font-size:15px;">Sie können ein Zielauswahlfilterzeichen aus den folgenden Optionen auswählen:
# Bedingungsoptionen: # n - wenn die Telefonnummer des Absenders dem Muster entspricht # m - wenn der Nachrichtentext dem Muster entspricht # k - wenn das Schlüsselwort dem Muster entspricht. (Das Schlüsselwort ist das erste Wort # der Nachrichten. Das Schlüsselwort wird in Großbuchstaben umgewandelt)Abbildung 3 - Zielauswahlfilter
Der zweite Teil ist das Filtermuster, das der Zeichenfilter ist (Abbildung 4). Diese Filtermusterbeispiele funktionieren mit dem 'm'-Nachrichtenziel:
m.* - passt auf jeden Textnachricht m^abc.* - passt, wenn die Textnachricht mit 'abc' oder 'ABC' beginnt m.*abc.* - passt, wenn die Textnachricht 'abc' oder 'ABC' enthältAbbildung 4 - Filtermusterbeispiele
Hier finden Sie ein Tutorial zu regulären Ausdrücken für die verfügbaren Filtermuster.
Aktion
Jede Filterbedingung wird von einer Aktion gefolgt, die aus SQL-Anweisungen besteht.
Sie können nur SMS-Nachrichten mit SQL-SELECT-Abfragen senden, aber Sie können auch INSERT- und UPDATE-Anweisungen ausführen. Beachten Sie, dass der 1. Parameter des SELECT-Ergebnissatzes der Empfänger der zu sendenden Nachricht ist, während der 2. Parameter die Nachricht selbst ist. In Abbildung 5 sehen Sie einige Beispiele.
k^RED INSERT INTO log (sender,message) VALUES ('$sender','$messagedata') SELECT '$sender',msg FROM autoreplymessage WHERE keyword='red' k^BLUE SELECT '$sender',msg FROM autoreplymessage WHERE keyword='blue' k.* SELECT '$sender',msg FROM autoreplymessage WHERE keyword='default'Abbildung 5 - SQL-Anweisungsbeispiele, bei denen der Empfänger der '$sender' ist
Die folgenden Wörter werden in den SQL-Anweisungen ersetzt:
Wörter | Wert | $originator | Die Telefonnummer, von der die Nachricht gesendet wurde. |
---|---|
$sender | =$originator (Der $sender ist ein anderer Name für den $originator.) |
$recipient | Die Telefonnummer, an die die Nachricht gesendet wurde. |
$receiver | =$recipient (Der $receiver ist ein anderer Name für den $recipient.) |
$messagedata | Der Text der Nachricht. |
$keyword | Das 1. Wort in der Nachricht. Dieses Wort wird als Schlüsselwort bezeichnet. |
$after | Der verbleibende Text nach dem Schlüsselwort. |
$senttime | Ein Zeitstempel, der anzeigt, wann die Nachricht gesendet wurde. |
$receivedtime | Ein Zeitstempel, der anzeigt, wann die Nachricht empfangen wurde. |
$messagetype | Der Typ der Nachricht, in den meisten Fällen 'SMS:TEXT'. |
$id | Eine eindeutige Zeichenkette. Sie identifiziert jede Nachricht in Ozeki SMS Gateway. |
$operator | Name des Dienstanbieters. Er empfängt die Nachricht in Ozeki SMS Gateway. |
$1 | Das 1. Wort in der Nachricht. |
$2 | Das 2. Wort in der Nachricht. |
$3 | Das 3. Wort in der Nachricht, usw... |
Jede SQL-Anweisung wird Zeile für Zeile ausgeführt, bis der Interpreter eine Leerzeile erreicht, wo er schließlich stoppt.
(Tipp: Sie können den Inhalt der Antwortnachricht nur mit SELECT-Anweisungen erhalten.)
AntwortDas Ergebnis des SELECT-SQL-Befehls enthält die Nachrichten, die weitergeleitet oder beantwortet werden sollen. Die Anzahl der Zeilen im Ergebnis bestimmt die Anzahl der zu sendenden Nachrichten. (Abbildung 6)
Das Ergebnis kann die folgenden Parameter enthalten:recipient - Die 1. Spalte des Ergebnisses (Pflicht) messageData - Die 2. Spalte des Ergebnisses (Pflicht) messageType - Die 3. Spalte des Ergebnisses (Optional) sender - Die 4. Spalte des Ergebnisses (Optional) operatorNames - Die 5. Spalte des Ergebnisses (Optional)
Abbildung 6 - Der Autoreply-Datenbank-Benutzer des Ozeki 10 SMS Gateway sendet SMS-Nachrichten aus den Ergebnissen.
Beispiel
Sehen Sie sich ein Beispiel an, wie das erste Wort jeder eingehenden Nachricht gefiltert wird und wie separate Aktionen für jedes durchgeführt werden. Die Aktion hängt davon ab, ob das Wort 'ROT', 'BLAU' oder etwas anderes ist. Groß- und Kleinbuchstaben werden gleich behandelt. (Abbildung 7)
k^ROT INSERT INTO log (sender,message) VALUES ('$sender','$messagedata') SELECT '$sender',msg FROM autoreplymessage WHERE keyword='rot' #Der erste Filter prüft, ob das Wort 'ROT' das Schlüsselwort war. #Wenn ja, wird die Nachricht in die 'log'-Tabelle eingefügt #und 'Rot ist eine gute Farbe.' als Antwortnachricht ausgewählt. #Wenn nicht, geht es zum nächsten Filter. k^BLAU SELECT '$sender',msg FROM autoreplymessage WHERE keyword='blau' #Der zweite Filter prüft, ob das Wort 'BLAU' das Schlüsselwort war. #Wenn ja, wird 'Blau ist nicht die beste Option.' als Antwortnachricht ausgewählt. #Wenn nicht, 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 7 - Beispiel für ein SQL-Abfrageskript
Sehen Sie sich die SQL-Tabellen in Abbildung 8 und 9 an, um das folgende Beispiel zu untersuchen:
id keyword msg ---------- ------------------------------ ------------------------------------- 1 default Es gibt keine Daten für dieses Schlüsselwort. 2 rot Rot ist eine gute Farbe. 3 blau Blau ist nicht die beste Option.Abbildung 8 - 'autoreplymessage'-Tabelle
id sender message ---------- ------------------------------ ------------------------------------- 1 +3620123456 rot Hallo Autoreply-Datenbank-Benutzer 2 +3670654321 rot Guten Tag EmpfängerAbbildung 9 - 'log'-Tabelle für eingehende Nachrichten
More information
- Installationsanleitung
- Datenbanklayout erstellen
- Beispielskriptdatei
- Skriptstruktur