Struktura skripta SQL poizvedbe

Pomaknite se navzdol, da vidite strukturo skripta SQL poizvedbe. Vsakemu uporabniku baze podatkov Autoreply lahko pripravite skriptno datoteko, ki lahko pošilja SMS sporočila, če sledijo skriptu. Datoteka deluje z vsakim dohodnim sporočilom in izbere odhodna sporočila glede na filter.

Uvod

Oglejte si skriptno datoteko. Vidite lahko, da je razdeljena na odseke, ločene s praznimi vrsticami (Slika 1). Napišete lahko toliko odsekov, kolikor želite, brez zgornje meje. Odseki se berejo zaporedno in prvi odsek, ki se ujema z dohodnim SMS, bo uporabljen za ustvarjanje odzivnega SMS sporočila.

Prva vrstica vsakega odseka je pogoj filtra, ena ali več naslednjih SQL stavkov pa se imenuje akcija. SQL SELECT stavki lahko vrnejo eno ali več odzivnih sporočil. Če se pogoj filtra ujema s podatki dohodnega sporočila, pokliče stavke za izvedbo, dokler ne najde prazne vrstice. V tem primeru ne bo preverjal drugih odsekov.

v tem primeru lahko vidite pogoje filtra in SQL stavke
Slika 1 - V tem primeru lahko vidite pogoje filtra in SQL stavke
Pogoj

Vsak odsek se začne s pogojem, ki je sestavljen iz ene vrstice, razdeljene na dva dela (Slika 2)

prva vrstica vsakega odseka se imenuje: pogoj
Slika 2 - Prva vrstica vsakega odseka se imenuje: pogoj

Prvi del je izbirnik cilja za ujemanje, en sam znak, ki določa, kateri del dohodnega sporočila naj se filtrira (Slika 3). FONT style="font-size:15px;">Izbrati lahko znak izbirnika cilja za ujemanje iz naslednjih možnosti:

# Možnosti pogoja:
#     n - če se telefonska številka pošiljatelja ujema z vzorcem
#     m - če se besedilo sporočila ujema z vzorcem
#     k - če se ključna beseda ujema z vzorcem. (Ključna beseda je prva beseda
#         sporočila. Ključna beseda se pretvori v velike črke)
Slika 3 - Izbirniki cilja za ujemanje

Drugi del je vzorec za ujemanje, ki je znakovni filter (Slika 4).

Ti primeri vzorca za ujemanje delujejo na cilju 'm' za sporočilo:
m.* - ujema se s katerim koli besedilnim sporočilom
m^abc.* - ujema se, če besedilno sporočilo začne z 'abc' ali 'ABC'
m.*abc.* - ujema se, če besedilno sporočilo vsebuje 'abc' ali 'ABC'
Slika 4 - Primeri vzorcev za ujemanje

Tukaj lahko najdete vadnico o regularnih izrazih za razpoložljive vzorce za ujemanje.

Akcija

Vsak pogoj filtra je sledi akcija, ki je sestavljena iz SQL stavkov.

Lahko uporabite samo SQL SELECT poizvedbe za pošiljanje SMS sporočil, lahko pa izvajate tudi INSERT in UPDATE stavke. Ne pozabite, da je 1. parameter rezultata SELECT poizvedbe prejemnik sporočila, ki ga želite poslati, 2. parameter pa je samo sporočilo. Na Sliki 5 lahko vidite nekaj primerov.


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'
Slika 5 - Primeri SQL stavkov, kjer je prejemnik '$sender'

Naslednje besede so zamenjane v SQL stavkih:
BesedeVrednost
$originatorTelefonska številka, s katere je bilo sporočilo poslano.
$sender=$originator ($sender je drugo ime za $originator.)
$recipientTelefonska številka, na katero je bilo sporočilo poslano.
$receiver=$recipient ($receiver je drugo ime za $recipient.)
$messagedataBesedilo sporočila.
$keyword1. beseda v sporočilu. Ta beseda se imenuje ključna beseda.
$afterPreostalo besedilo po ključni besedi.
$senttimeČasovni žig, ki prikazuje, kdaj je bilo sporočilo poslano.
$receivedtimeČasovni žig, ki prikazuje, kdaj je bilo sporočilo prejeto.
$messagetypeVrsta sporočila, ki je v večini primerov 'SMS:TEXT'.
$idEnolični niz. Identificira vsako sporočilo v Ozeki SMS Gateway.
$operatorIme ponudnika storitev. Prejme sporočilo v Ozeki SMS Gateway.
$11. beseda v sporočilu.
$22. beseda v sporočilu.
$33. beseda v sporočilu, itd...

Vsak SQL stavek se izvaja vrstico za vrstico, dokler tolmač ne doseže prazne vrstice, kjer se končno ustavi.

(Namig: Vsebino odzivnega sporočila lahko dobite samo z uporabo SELECT stavkov.)

Odgovor

Rezultat izbora SQL stavka vsebuje sporočila, ki jih je treba posredovati ali odgovoriti. Število vrstic, ki jih najdete v rezultatu, bo določilo število sporočil, ki jih je treba poslati. (Slika 6)

Rezultat lahko vsebuje naslednje parametre:
prejemnik - 1. stolpec rezultata (Obvezen)
messageData - 2. stolpec rezultata (Obvezen)
messageType - 3. stolpec rezultata (Izbiren)
pošiljatelj - 4. stolpec rezultata (Izbiren)
operatorNames - 5. stolpec rezultata (Izbiren)

Slika 6 - Uporabnik avtomatskega odgovora baze podatkov Ozeki 10 SMS Gateway bo poslal SMS sporočila iz rezultatov.

Primer

Oglejte si primer, kako filtrirati prvo besedo v vsakem dohodnem sporočilu in kako izvesti ločena dejanja za vsako. Dejanje je odvisno od tega, ali je beseda 'RED', 'BLUE' ali druga. Velike in male črke se upoštevajo enako. (Slika 7)

k^RED
INSERT INTO log (sender,message) VALUES ('$sender','$messagedata')
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='red'
#Prvi filter preveri, ali je bila ključna beseda 'RED'.
#Če je res, vstavi sporočilo v tabelo 'log'
#in izbere 'Red is a good colour.' kot odzivno sporočilo.
#Če ni res, gre na naslednji filter.

k^BLUE
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='blue'
#Drugi filter preveri, ali je bila ključna beseda 'BLUE'.
#Če je res, izbere 'Blue is not the best option.' kot odzivno sporočilo.
#Če ni res, gre na naslednji filter.

k.*
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='default'
#Tretji filter bo sprejel katero koli drugo ključno besedo.
#Izbere 'There is no data for this keyword.' kot odzivno sporočilo.
Slika 7 - Primer skripte SQL poizvedbe

Oglejte si SQL tabele na Sliki 8 in 9, da preučite naslednji primer:

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.
 
Slika 8 - tabela 'autoreplymessage'

id          sender                         message
----------  ------------------------------ -------------------------------------
 1          +3620123456                    red Hello Autoreply Database User
 2          +3670654321                    red Good day to you Recipient
Slika 9 - tabela 'log' za dohodna sporočila

More information