Az SQL lekérdezés szkript szerkezete

Görgessen le, hogy láthassa az SQL lekérdezés szkript szerkezetét. Minden Autoreply Adatbázis Felhasználónak renderelhet egy szkriptfájlt, amely képes SMS üzenetek küldésére, ha követik a szkriptet. A fájl minden bejövő üzenettel működik, és a szűrő alapján kiválasztja a kimenő üzeneteket.

Bevezetés

Nézzük meg a szkriptfájlt. Látható, hogy szakaszokra van osztva, üres sorokkal elválasztva (1. ábra). Tetszőleges számú szakaszt írhat, nincs maximális korlát. A szakaszokat sorrendben olvassa, és az első olyan szakaszt használja, amely illeszkedik a bejövő SMS-re, hogy létrehozza a válasz SMS üzenetet.

Minden szakasz első sora a szűrőfeltétel, a következő egy vagy több SQL utasítás pedig a művelet. Az SQL SELECT utasítások egy vagy több válaszüzenetet adhatnak vissza. Ha a szűrőfeltétel illeszkedik a bejövő üzenet adataira, akkor végrehajtja az utasításokat, amíg üres sort nem talál. Ebben az esetben nem ellenőrzi a többi szakaszt.

ebben a példában láthatók a szűrőfeltételek és az SQL utasítások
1. ábra - Ebben a példában láthatók a szűrőfeltételek és az SQL utasítások

Feltétel

Minden szakasz egy feltétellel kezdődik, amely egyetlen sorból áll, két részre osztva (2. ábra)

minden szakasz első sorát feltételnek hívják
2. ábra - Minden szakasz első sorát feltételnek hívják

Az első rész a illesztési cél választó, egyetlen karakter, amely meghatározza, hogy a bejövő üzenet melyik részét kell szűrni (3. ábra). FONT style="font-size:15px;">Az alábbi lehetőségek közül választhat illesztési cél választó karaktert:

# Feltétel opciók:
#     n - ha a feladó telefonszáma illeszkedik a mintára
#     m - ha az üzenet szövege illeszkedik a mintára
#     k - ha a kulcsszó illeszkedik a mintára. (A kulcsszó az üzenet első szava.
#         A kulcsszó nagybetűssé alakul)
3. ábra - Illesztési cél választók

A második rész a illesztési minta, amely a karakteres szűrő (4. ábra).

Ezek az illesztési minta példák az 'm' üzenet célra vonatkoznak:
m.* - illeszkedik bármilyen szöveges üzenetre
m^abc.* - illeszkedik, ha a szöveges üzenet 'abc' vagy 'ABC' kezdettel rendelkezik
m.*abc.* - illeszkedik, ha a szöveges üzenet tartalmaz 'abc' vagy 'ABC' szöveget
4. ábra - Illesztési minta példák

Itt található egy reguláris kifejezések oktatóanyag az elérhető illesztési mintákhoz.

Művelet

Minden feltételszűrőt egy művelet követ, amely SQL utasításokból áll.

Csak SQL SELECT lekérdezésekkel küldhet SMS üzeneteket, de INSERT és UPDATE utasításokat is futtathat. Ne feledje, hogy a SELECT eredményhalmaz első paramétere a küldendő üzenet címzettje, míg a második paraméter maga az üzenet. Az 5. ábrán látható néhány példa.


k^PIROS
INSERT INTO log (sender,message) VALUES ('$sender','$messagedata')
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='piros'

k^KÉK
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='kék'

k.*
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='alapértelmezett'
5. ábra - SQL utasítás példák, ahol a címzett a '$sender'

A következő szavak kerülnek cserére az SQL utasításokban:
SzavakÉrték
$originatorAz a telefonszám, amelyről az üzenet érkezett.
$sender=$originator (A $sender a $originator másik neve.)
$recipientAz a telefonszám, amelyre az üzenet érkezett.
$receiver=$recipient (A $receiver a $recipient másik neve.)
$messagedataAz üzenet szövege.
$keywordAz üzenet első szava. Ezt a szót kulcsszónak hívják.
$afterA kulcsszó utáni maradék szöveg.
$senttimeEgy időbélyeg, amely megmutatja, mikor küldték az üzenetet.
$receivedtimeEgy időbélyeg, amely megmutatja, mikor érkezett az üzenet.
$messagetypeAz üzenet típusa, amely legtöbbször 'SMS:TEXT'.
$idEgy egyedi azonosító. Az Ozeki SMS Gateway-ben minden üzenetet azonosít.
$operatorA szolgáltató neve. Az Ozeki SMS Gateway-ben fogadja az üzenetet.
$1Az üzenet első szava.
$2Az üzenet második szava.
$3Az üzenet harmadik szava, stb...

Minden SQL utasítás soronként kerül végrehajtásra, amíg az értelmező el nem ér egy üres sort, ahol végül megáll.

(Tipp: Csak SELECT utasításokkal kaphat válaszüzenet tartalmat.)

Válasz

A SELECT SQL utasítás eredményhalmaza tartalmazza a továbbítandó vagy megválaszolandó üzeneteket. Az eredményhalmazban található sorok száma határozza meg a küldendő üzenetek számát. (6. ábra)

Az eredményhalmaz a következő paramétereket tartalmazhatja:
recipient - Az eredményhalmaz 1. oszlopa (Kötelező)
messageData - Az eredményhalmaz 2. oszlopa (Kötelező)
messageType - Az eredményhalmaz 3. oszlopa (Opcionális)
sender - Az eredményhalmaz 4. oszlopa (Opcionális)
operatorNames - Az eredményhalmaz 5. oszlopa (Opcionális)

6. ábra - Az Ozeki 10 SMS Gateway Autoreply Database User SMS üzeneteket küld az eredmények alapján.

Példa

Nézzünk meg egy példát arra, hogyan szűrhetjük ki az első szót minden bejövő üzenetből és hogyan végezhetünk különböző műveleteket mindegyiken. A művelet attól függ, hogy a szó 'PIROS', 'KÉK' vagy más. A kis- és nagybetűket egyformán kezeljük. (7. ábra)

k^PIROS
INSERT INTO log (sender,message) VALUES ('$sender','$messagedata')
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='piros'
#Az első szűrő ellenőrzi, hogy a 'PIROS' szó volt-e a kulcsszó.
#Ha igaz, beszúrja az üzenetet a 'log' táblába
#és kiválasztja a 'A piros jó szín.' válaszüzenetet.
#Ha hamis, a következő szűrőhöz lép.

k^KÉK
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='kék'
#A második szűrő ellenőrzi, hogy a 'KÉK' szó volt-e a kulcsszó.
#Ha igaz, kiválasztja a 'A kék nem a legjobb választás.' válaszüzenetet.
#Ha hamis, a következő szűrőhöz lép.

k.*
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='alapértelmezett'
#A harmadik szűrő bármilyen más kulcsszót elfogad.
#Kiválasztja a 'Nincs adat ehhez a kulcsszóhoz.' válaszüzenetet.
7. ábra - SQL lekérdezési szkript példa

Nézzük meg a 8. ábrán és 9. ábrán található SQL táblákat a következő példa megértéséhez:

id          keyword                        msg
----------  ------------------------------ -------------------------------------
 1          alapértelmezett                Nincs adat ehhez a kulcsszóhoz.
 2          piros                          A piros jó szín.
 3          kék                            A kék nem a legjobb választás.
 
8. ábra - 'autoreplymessage' tábla

id          sender                         message
----------  ------------------------------ -------------------------------------
 1          +3620123456                    piros Helló Autoreply Database User
 2          +3670654321                    piros Szép napot kívánok Kedves Címzett
9. ábra - 'log' tábla a bejövő üzenetekhez

More information