Structura scriptului de interogare SQL

Derulați în jos pentru a vedea structura scriptului de interogare SQL. Puteți furniza un fișier script fiecărui Utilizator al Bazei de Date Autoreply, care este capabil să trimită mesaje SMS dacă urmează scriptul. Fișierul funcționează cu fiecare mesaj primit și selectează mesajele de răspuns în funcție de filtru.

Introducere

Uită-te la fișierul script. Poți vedea că este împărțit în secțiuni separate prin linii goale (Figura 1). Poți scrie câte secțiuni dorești, fără limită maximă. Secțiunile sunt citite secvențial și prima secțiune care se potrivește cu SMS-ul primit va fi utilizată pentru a crea mesajul de răspuns.

Prima linie a fiecărei secțiuni este condiția de filtrare, iar următoarele una sau mai multe instrucțiuni SQL se numesc acțiune. Instrucțiunile SQL SELECT pot returna unul sau mai multe mesaje de răspuns. Dacă condiția de filtrare se potrivește cu datele mesajului primit, aceasta apelează instrucțiunile care urmează să fie executate până când se găsește o linie goală. În acest caz, nu vor fi verificate alte secțiuni.

puteți vedea condițiile filtrate și instrucțiunile SQL în acest exemplu
Figura 1 - Puteți vedea condițiile filtrate și instrucțiunile SQL în acest exemplu
Condiție

Fiecare secțiune începe cu o condiție formată dintr-un singur rând împărțit în două părți (Figura 2)

prima linie a fiecărei secțiuni se numește: condiție
Figura 2 - Prima linie a fiecărei secțiuni se numește: condiție

Prima parte este selectorul țintă de potrivire, un singur caracter care determină ce parte a mesajului primit ar trebui filtrată (Figura 3). FONT style="font-size:15px;">Puteți selecta un caracter selector țintă de potrivire din următoarele opțiuni:

# Opțiuni de condiție:
#     n - dacă numărul de telefon al expeditorului se potrivește cu modelul
#     m - dacă textul mesajului se potrivește cu modelul
#     k - dacă cuvântul cheie se potrivește cu modelul. (Cuvântul cheie este primul cuvânt
#         din mesaje. Cuvântul cheie este convertit în majuscule)
Figura 3 - Selectori țintă de potrivire

A doua parte este modelul de potrivire, care este filtrul de caractere (Figura 4).

Aceste exemple de model de potrivire funcționează pe ținta mesajului 'm':
m.* - se potrivește cu orice mesaj text
m^abc.* - se potrivește dacă mesajul text începe cu 'abc' sau 'ABC'
m.*abc.* - se potrivește dacă mesajul text conține 'abc' sau 'ABC'
Figura 4 - Exemple de model de potrivire

Aici puteți găsi un tutorial despre expresii regulate pentru modelele de potrivire disponibile.

Acțiune

Fiecare filtru de condiție este urmat de o acțiune care constă din instrucțiuni SQL.

Puteți trimite mesaje SMS doar cu interogări SQL SELECT, dar puteți rula și instrucțiuni INSERT și UPDATE. Rețineți că primul parametru al setului de rezultate SELECT este destinatarul mesajului care urmează să fie trimis, în timp ce al doilea parametru este mesajul în sine. În Figura 5 puteți vedea câteva exemple.


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'
Figura 5 - Exemple de instrucțiuni SQL unde destinatarul este '$sender'

Următoarele cuvinte sunt înlocuite în instrucțiunile SQL:
CuvinteValoare
$originatorNumărul de telefon de la care a fost trimis mesajul.
$sender=$originator ($sender este un alt nume pentru $originator.)
$recipientNumărul de telefon către care a fost trimis mesajul.
$receiver=$recipient ($receiver este un alt nume pentru $recipient.)
$messagedataTextul mesajului.
$keywordPrimul cuvânt din mesaj. Acest cuvânt se numește cuvânt cheie.
$afterTextul rămas după cuvântul cheie.
$senttimeUn marcaj de timp care arată când a fost trimis mesajul.
$receivedtimeUn marcaj de timp care arată când a fost primit mesajul.
$messagetypeTipul mesajului, care este în majoritatea cazurilor 'SMS:TEXT'.
$idUn șir unic. Identifică fiecare mesaj în Ozeki SMS Gateway.
$operatorNumele furnizorului de servicii. Primește mesajul în Ozeki SMS Gateway.
$1Primul cuvânt din mesaj.
$2Al doilea cuvânt din mesaj.
$3Al treilea cuvânt din mesaj, etc...

Fiecare instrucțiune SQL este executată linie cu linie până când interpretul ajunge la o linie goală, unde se oprește în final.

(Sfat: Puteți obține conținutul mesajului de răspuns doar folosind instrucțiuni SELECT.)

Răspuns

Setul de rezultate al instrucțiunii SQL SELECT conține mesajele care trebuie transmise sau răspunse. Numărul de rânduri pe care le găsiți în setul de rezultate va determina numărul de mesaje care vor fi trimise. (Figura 6)

Setul de rezultate poate conține următorii parametri:
recipient - Prima coloană a setului de rezultate (Obligatoriu)
messageData - A doua coloană a setului de rezultate (Obligatoriu)
messageType - A treia coloană a setului de rezultate (Opțional)
sender - A patra coloană a setului de rezultate (Opțional)
operatorNames - A cincea coloană a setului de rezultate (Opțional)

Figura 6 - Utilizatorul Autoreply Database al Ozeki 10 SMS Gateway va trimite mesaje SMS din rezultate.

Exemplu

Uitați-vă la un exemplu despre cum să filtrați primul cuvânt din fiecare mesaj primit și cum să efectuați acțiuni separate pentru fiecare. Acțiunea depinde dacă cuvântul este 'RED', 'BLUE' sau altceva. Caracterele majuscule și minuscule sunt luate în considerare în mod egal. (Figura 7)

k^RED
INSERT INTO log (sender,message) VALUES ('$sender','$messagedata')
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='red'
#Primul filtru verifică dacă cuvântul 'RED' a fost cuvântul cheie.
#Dacă este adevărat, INSEREAZĂ mesajul în tabela 'log'
#și SELECTEAZĂ 'Red is a good colour.' ca mesaj de răspuns.
#Dacă este fals, trece la următorul filtru.

k^BLUE
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='blue'
#Al doilea filtru verifică dacă cuvântul 'BLUE' a fost cuvântul cheie.
#Dacă este adevărat, SELECTEAZĂ 'Blue is not the best option.' ca mesaj de răspuns.
#Dacă este fals, trece la următorul filtru.

k.*
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='default'
#Al treilea filtru va accepta orice alt cuvânt cheie.
#SELECTEAZĂ 'There is no data for this keyword.' ca mesaj de răspuns.
Figura 7 - Exemplu de script SQL query

Uitați-vă la tabelele SQL din Figura 8 și 9 pentru a examina următorul exemplu:

id          keyword                        msg
----------  ------------------------------ -------------------------------------
 1          default                        There is no data for this keyword.
 2          red                            Red is a good colour.
 3          blue                           Blue is not the best option.
 
Figura 8 - Tabela 'autoreplymessage'

id          sender                         message
----------  ------------------------------ -------------------------------------
 1          +3620123456                    red Hello Autoreply Database User
 2          +3670654321                    red Good day to you Recipient
Figura 9 - Tabela 'log' pentru mesajele primite

More information