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.

Sie können die Filterbedingungen und die SQL-Anweisungen in diesem Beispiel sehen
Abbildung 1 - Sie können die Filterbedingungen und die SQL-Anweisungen in diesem Beispiel sehen

Bedingung

Jeder Abschnitt beginnt mit einer Bedingung, die aus einer einzelnen Zeile besteht, die in zwei Teile geteilt ist (Abbildung 2)

die erste Zeile jedes Abschnitts wird als Bedingung bezeichnet
Abbildung 2 - Die erste Zeile jedes Abschnitts wird als Bedingung bezeichnet

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ält
Abbildung 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örterWert
$originatorDie Telefonnummer, von der die Nachricht gesendet wurde.
$sender=$originator (Der $sender ist ein anderer Name für den $originator.)
$recipientDie Telefonnummer, an die die Nachricht gesendet wurde.
$receiver=$recipient (Der $receiver ist ein anderer Name für den $recipient.)
$messagedataDer Text der Nachricht.
$keywordDas 1. Wort in der Nachricht. Dieses Wort wird als Schlüsselwort bezeichnet.
$afterDer verbleibende Text nach dem Schlüsselwort.
$senttimeEin Zeitstempel, der anzeigt, wann die Nachricht gesendet wurde.
$receivedtimeEin Zeitstempel, der anzeigt, wann die Nachricht empfangen wurde.
$messagetypeDer Typ der Nachricht, in den meisten Fällen 'SMS:TEXT'.
$idEine eindeutige Zeichenkette. Sie identifiziert jede Nachricht in Ozeki SMS Gateway.
$operatorName des Dienstanbieters. Er empfängt die Nachricht in Ozeki SMS Gateway.
$1Das 1. Wort in der Nachricht.
$2Das 2. Wort in der Nachricht.
$3Das 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.)

Antwort

Das 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änger
Abbildung 9 - 'log'-Tabelle für eingehende Nachrichten

More information