Štruktúra skriptu SQL dopytu

Posuňte sa nižšie, aby ste videli štruktúru skriptu SQL dopytu. Môžete vygenerovať skriptový súbor pre každého používateľa databázy Autoreply, ktorý je schopný odosielať SMS správy, ak budú postupovať podľa skriptu. Súbor pracuje s každou prichádzajúcou správou a vyberá odchádzajúce správy podľa filtra.

Úvod

Pozrite sa na skriptový súbor. Môžete vidieť, že je rozdelený na sekcie oddelené prázdnymi riadkami (Obrázok 1). Môžete napísať toľko sekcií, koľko chcete, bez maximálneho limitu. Sekcie sa čítajú postupne a prvá sekcia, ktorá zodpovedá prichádzajúcej SMS, bude použitá na vytvorenie odpovede SMS správy.

Prvý riadok každej sekcie je filtrovacia podmienka a nasledujúce jeden alebo viac SQL príkazov sa nazývajú akcia. SQL SELECT príkazy môžu vrátiť jednu alebo viac odpovedí. Ak filtrovacia podmienka zodpovedá údajom prichádzajúcej správy, vykoná sa príkaz, kým sa nenájde prázdny riadok. V tomto prípade sa nebudú kontrolovať ďalšie sekcie.

môžete vidieť filtrovacie podmienky a SQL príkazy v tomto príklade
Obrázok 1 - Môžete vidieť filtrovacie podmienky a SQL príkazy v tomto príklade
Podmienka

Každá sekcia začína podmienkou, ktorá pozostáva z jedného riadka rozdeleného na dve časti (Obrázok 2)

prvý riadok každej sekcie sa nazýva: podmienka
Obrázok 2 - Prvý riadok každej sekcie sa nazýva: podmienka

Prvá časť je výberový filter cieľa, jeden znak, ktorý určuje, ktorá časť prichádzajúcej správy by mala byť filtrovaná (Obrázok 3). FONT style="font-size:15px;">Môžete vybrať výberový filter cieľa z nasledujúcich možností:

# Možnosti podmienky:
#     n - ak telefónne číslo odosielateľa zodpovedá vzoru
#     m - ak text správy zodpovedá vzoru
#     k - ak kľúčové slovo zodpovedá vzoru. (Kľúčové slovo je prvé slovo
#         správy. Kľúčové slovo je konvertované na veľké písmená)
Obrázok 3 - Výberové filtre cieľa

Druhá časť je vzor zhody, ktorý je znakový filter (Obrázok 4).

Tieto príklady vzoru zhody fungujú na cieľovej správe 'm':
m.* - zodpovedá akémukoľvek textu správy
m^abc.* - zodpovedá, ak text správy začína na 'abc' alebo 'ABC'
m.*abc.* - zodpovedá, ak text správy obsahuje 'abc' alebo 'ABC'
Obrázok 4 - Príklady vzoru zhody

Tu nájdete návod na regulárne výrazy pre dostupné vzory zhody.

Akcia

Každý filter podmienky je nasledovaný akciou, ktorá pozostáva z SQL príkazov.

Môžete odosielať SMS správy len pomocou SQL SELECT dopytov, ale môžete spustiť aj INSERT a UPDATE príkazy. Majte na pamäti, že 1. parameter výslednej sady SELECT je príjemca správy, ktorá má byť odoslaná, zatiaľ čo 2. parameter je samotná správa. Na Obrázku 5 môžete vidieť niekoľko príkladov.


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'
Obrázok 5 - Príklady SQL príkazov, kde príjemcom je '$sender'

Nasledujúce slová sú nahradené v SQL príkazoch:
SlováHodnota
$originatorTelefónne číslo, z ktorého bola správa odoslaná.
$sender=$originator ($sender je ďalší názov pre $originator.)
$recipientTelefónne číslo, na ktoré bola správa odoslaná.
$receiver=$recipient ($receiver je ďalší názov pre $recipient.)
$messagedataText správy.
$keywordPrvé slovo v správe. Toto slovo sa nazýva kľúčové slovo.
$afterZostávajúci text po kľúčovom slove.
$senttimeČasová značka, ktorá ukazuje, kedy bola správa odoslaná.
$receivedtimeČasová značka, ktorá ukazuje, kedy bola správa prijatá.
$messagetypeTyp správy, ktorý je vo väčšine prípadov 'SMS:TEXT'.
$idUnikátny reťazec. Identifikuje každú správu v Ozeki SMS Gateway.
$operatorNázov poskytovateľa služieb. Prijíma správu v Ozeki SMS Gateway.
$1Prvé slovo v správe.
$2Druhé slovo v správe.
$3Tretie slovo v správe, atď...

Každý SQL príkaz je vykonaný riadok po riadku, kým interpreter nedosiahne prázdny riadok, kde sa nakoniec zastaví.

(Tip: Obsah odpovede môžete získať len pomocou SELECT príkazov.)

Odpoveď

Výsledná množina príkazov SELECT SQL obsahuje správy, ktoré sa majú preposlať alebo odpovedať. Počet riadkov, ktoré nájdete vo výslednej množine, určí počet správ, ktoré sa majú odoslať. (Obrázok 6)

Výsledná množina môže obsahovať nasledujúce parametre:
recipient - 1. stĺpec výslednej množiny (Povinný)
messageData - 2. stĺpec výslednej množiny (Povinný)
messageType - 3. stĺpec výslednej množiny (Voliteľný)
sender - 4. stĺpec výslednej množiny (Voliteľný)
operatorNames - 5. stĺpec výslednej množiny (Voliteľný)

Obrázok 6 - Používateľ Ozeki 10 SMS Gateway Autoreply Database odošle SMS správy z výsledkov.

Príklad

Pozrite si príklad, ako filtrovať 1. slovo v každej prichádzajúcej správe a ako vykonať samostatné akcie pre každú. Akcia závisí od toho, či je slovo 'RED', 'BLUE' alebo iné. Veľké a malé písmená sa berú do úvahy rovnako. (Obrázok 7)

k^RED
INSERT INTO log (sender,message) VALUES ('$sender','$messagedata')
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='red'
#Prvý filter kontroluje, či bolo kľúčové slovo 'RED'.
#Ak je to pravda, vloží správu do tabuľky 'log'
#a vyberie 'Red is a good colour.' ako odpoveď.
#Ak nie, prejde k ďalšiemu filtru.

k^BLUE
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='blue'
#Druhý filter kontroluje, či bolo kľúčové slovo 'BLUE'.
#Ak je to pravda, vyberie 'Blue is not the best option.' ako odpoveď.
#Ak nie, prejde k ďalšiemu filtru.

k.*
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='default'
#Tretí filter akceptuje akékoľvek iné kľúčové slovo.
#Vyberie 'There is no data for this keyword.' ako odpoveď.
Obrázok 7 - Príklad SQL skriptu

Pozrite si SQL tabuľky na Obrázku 8 a 9, aby ste skúmali nasledujúci príklad:

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.
 
Obrázok 8 - Tabuľka 'autoreplymessage'

id          sender                         message
----------  ------------------------------ -------------------------------------
 1          +3620123456                    red Hello Autoreply Database User
 2          +3670654321                    red Good day to you Recipient
Obrázok 9 - Tabuľka 'log' pre prichádzajúce správy

More information