Răspunsuri SMS dintr-o bază de date SQL

Utilizatorul Autoreply Database al Ozeki SMS Gateway se poate conecta la baza dvs. de date Microsoft SQL, Oracle, MySQL, Sybase etc. folosind un șir de conexiune. Acesta execută orice interogare SELECT pe care o furnizați, după primirea unui mesaj SMS. Setul de rezultate al interogării va fi trimis ca mesaje de ieșire. Interogările și tabelele pot fi modificate și din propria aplicație.

Cum să trimiteți un răspuns SMS din SQL

Pentru a trimite un răspuns SMS din SQL:

  1. Lansați Ozeki SMS Gateway
  2. Adăugați un nou utilizator Autoreply database
  3. Creați structura tabelului din baza de date SQL
  4. Configurați utilizatorul Autoreply database
  5. Furnizați scriptul de text pentru autoreply
  6. Folosiți numere și cuvinte cheie identificabile
  7. Trimiteți un SMS de test pentru a primi răspunsul din SQL
  8. Verificați jurnalele utilizatorului Autoreply database

Video 1 - Cum să trimiteți un răspuns SMS din SQL (Tutorial video)

Puteți crea următorul serviciu folosind această soluție (Figura 1):
1.) Un mesaj SMS este primit de Ozeki SMS Gateway de la un telefon mobil.
2.) Utilizatorul Autoreply Database al Ozeki SMS Gateway caută cuvinte cheie în mesajul SMS folosind un fișier txt.
3.) În funcție de căutare, un mesaj de autoreply va fi selectat din serverul dvs. de baze de date cu același fișier txt.

Este important să aveți un furnizor de servicii IP SMS sau un modem GSM configurat pe Ozeki SMS Gateway, pentru a putea primi mesaje SMS și a răspunde automat la ele folosind acest exemplu.

cum funcționează utilizatorul autoreply database al ozeki sms gateway
Figura 1 - Cum funcționează utilizatorul Autoreply Database al Ozeki SMS Gateway

Pasul 1 - Configurați utilizatorul Autoreply Database în Ozeki SMS Gateway

Mai întâi trebuie să instalați un utilizator Autoreply Database pentru a crea serviciul explicat. În consola 'Management' vă rugăm să faceți clic pe 'Add' așa cum se vede în Figura 2.

faceți clic pe add user or application în consola management
Figura 2 - Faceți clic pe 'Add' utilizator sau aplicație în consola 'Management'

Găsiți utilizatorul Autoreply Database și faceți clic pe link-ul albastru 'install' de lângă el. Așa cum puteți vedea în Figura 3.

instalați utilizatorul autoreply database din consola management
Figura 3 - Instalați utilizatorul Autoreply Database din consola 'Management'

Pasul 2 - Creați structura tabelului din baza de date

Utilizatorul Autoreply Database va SELECTA mesajele SMS de răspuns dintr-un tabel de baze de date. Creați următoarea structură de baze de date pentru a stoca mesajele SMS (Figura 4). Acest exemplu folosește un server de baze de date MySQL, dar puteți folosi și alte baze de date precum Microsoft SQL, Oracle, Sybase etc. Puteți folosi și alte tabele și layout-uri de tabele.


CREATE TABLE autoreplymessage (
		 id int(11) NOT NULL auto_increment, 
		 keyword varchar(30) default NULL, 
		 msg text default NULL, 
		 PRIMARY KEY (id)
		 );
				
INSERT INTO autoreplymessage (keyword,msg) VALUES 
		("default","Nu există date pentru acest cuvânt cheie."), 
		("red","Roșu este o culoare bună."), 
		("blue","Albastru nu este cea mai bună opțiune.");
Figura 4 - CREATE TABLE și INSERT rânduri în tabelul 'autoreplymessage'

Tabelele dvs. pot fi vizualizate cu instrucțiuni SELECT * FROM (Figura 5). Deși acest exemplu conține doar un tabel.

> SELECT * FROM autoreplymessage;
id          keyword                        msg
----------  ------------------------------ -------------------------------------
 1          default                        Nu există date pentru acest cuvânt cheie.
 2          red                            Roșu este o culoare bună.
 3          blue                           Albastru nu este cea mai bună opțiune.

(3 rânduri afectate)
Figura 5 - Citirea tabelului 'autoreplymessage' cu o instrucțiune SELECT

În cazul în care nu este instalat niciun driver de baze de date cu serverul de baze de date, ar trebui să instalați un driver, deoarece veți avea nevoie de șirul de conexiune în pasul următor. Driverul de baze de date conectează Ozeki SMS Gateway și serverul de baze de date. În majoritatea cazurilor, un driver de baze de date este instalat împreună cu serverul de baze de date.

Pasul 3 - Configurați utilizatorul bazei de date Autoreply pentru a utiliza baza dvs. de date

Va trebui să introduceți tipul de conexiune la baza de date și șirul de conexiune în panoul 'Configurare baza de date' al utilizatorului Autoreply Database (Figura 6). Tipul poate fi selectat din caseta combobox, în timp ce șirul trebuie introdus în caseta de text.

configurare utilizator autoreply baza de date pentru interogare sms
Figura 6 - Configurare utilizator Autoreply Database pentru interogare SMS

În Figura 7 puteți vedea un exemplu de șir pentru o conexiune la baza de date MySQL. Rețineți că puteți utiliza propriul tip de șir de conexiune (OleDB, ODBC, SQLServer, Oracle) pentru propriul server de baze de date care poate fi Microsoft SQL, Oracle, Sybase etc... În cazul în care utilizați un driver ODBC pentru MySQL, trebuie doar să modificați IP-ul serverului MySQL, numele bazei de date, numele de utilizator și parola cu valorile dvs. în următorul șir:

Tip conexiune: ODBC
Șir conexiune: Driver={MySQL ODBC 5.3 Unicode Driver}; Server=127.0.0.1;Database=ozekisms;User=ozeki;Password=abc123;Option=4;

Figura 7 - Exemplu de șir de conexiune pentru o conexiune ODBC la o bază de date MySQL

Pentru a găsi șirul de conexiune pentru alte servere de baze de date, vi se sugerează să citiți Ghidul șirurilor de conexiune la baza de date SMS.

Pasul 4 - Scrieți scriptul pentru răspuns automat din baza de date SQL

Acum este momentul să scrieți fișierul script care este capabil să SELECTeze un rând din tabela dvs. de baze de date dacă tabela a fost creată cu succes în PASUL 2. Atributul mesaj al rândului selectat va fi răspuns la mesajul SMS. Aici puteți găsi calea scriptului exemplu: C:\Program Files\Ozeki\Ozeki10\Data\NG\config\OzekiUsername\sqlscript.txt

Un simplu editor de text poate edita aceste fișiere sau puteți crea propriul fișier txt și să-l editați cu propria aplicație, ceea ce este util dacă doriți să modificați interogările. Furnizați calea către fișier utilizând utilizatorul Autoreply Database făcând clic pe 'Configurare baza de date' și selectând fila 'Script autoreply' (Figura 8)

furnizați calea scriptului txt către utilizatorul autoreply baza de date
Figura 8 - Furnizați calea scriptului txt către utilizatorul Autoreply Database

Pasul 5 - Structura scripturilor de interogare SQL

Scriptul SQL al utilizatorului Autoreply Database conține perechi de filtre-interogări, care funcționează exact ca structura if-then în limbajele de programare. Mesajul SMS primit trece prin filtru și dacă este ok, se va executa o interogare SELECT. Conținutul mesajului rândurilor selectate va fi trimis către un număr de telefon. Acest număr este primul parametru al setului de rezultate al interogării SELECT, în timp ce textul mesajului este al doilea. Filtrul este capabil să identifice numere de telefon, fragmente de text și cuvinte cheie. Cuvântul cheie al fiecărui mesaj este primul cuvânt din text. Trimiterea se întâmplă dacă adresa destinatarului este inclusă în baza de date (Figura 11).

Pasul 6 - Un exemplu simplu de cuvânt cheie

Acest exemplu va funcționa pe următorul tabel pe care îl puteți vedea în Figura 9.

id          keyword                        msg
----------  ------------------------------ -------------------------------------
 1          default                        Nu există date pentru acest cuvânt cheie.
 2          red                            Roșu este o culoare bună.
 3          blue                           Albastru nu este cea mai bună opțiune.
Figura 9 - Conținutul tabelei 'autoreplymessage'

Puteți rula următorul script din Figura 10 pe tabela 'autoreplymessage' adăugându-l în 'sqlscript.txt'. Ca o reamintire, cuvântul cheie, care este simbolizat de caracterul 'k', este primul cuvânt din mesajul SMS. Acest cuvânt va fi testat de filtru. Dacă un test de filtru reușește, interogarea SELECT se execută și scriptul se va opri. După cum puteți vedea, puteți plasa valori constante în interogarea SELECT. De exemplu, '$sender', care este expeditorul mesajului primit.

Elemente de script pe care le puteți plasa în sqlscript.txt
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='red'
#Primul filtru verifică dacă cuvântul 'RED' a fost cuvântul cheie.
#Dacă este adevărat, SELECTează 'Roșu este o culoare bună.' ca mesaj de răspuns.
#Dacă este fals, merge 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ă 'Albastru nu este cea mai bună opțiune.' ca mesaj de răspuns.
#Dacă este fals, merge la următorul filtru.

k.*
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='default'
#Al treilea filtru va accepta orice alt cuvânt cheie.
#SELECTează 'Nu există date pentru acest cuvânt cheie.' ca mesaj de răspuns.
Figura 10 - Exemplu de script care poate fi plasat în sqlscript.txt

Partea de filtru a scriptului de interogare SQL funcționează similar cu partea de filtru a scriptului de mesagerie SMS, dar rețineți să căutați doar exemple de filtre, deoarece a doua parte este întotdeauna o interogare SELECT SQL.

Pasul 7 - Cuvinte cheie predefinite în Ozeki SMS Gateway

Aceste tipuri de cuvinte cheie pot fi plasate în script. De exemplu '$sender':


SELECT '$sender',msg FROM autoreplymessage WHERE keyword='red'
Figura 11 - Trimite msg către '$sender'

Utilizatorul bazei de date Autoreply poate recunoaște următoarele cuvinte cheie:
Cuvânt cheieValoare
$originatorÎnlocuit cu numărul de telefon al expeditorului.
$sender=$originator ($sender este un alt nume pentru $originator.)
$recipientÎnlocuit cu numărul de telefon care a primit mesajul.
$receiver=$recipient ($receiver este un alt nume pentru $recipient.)
$messagedataÎnlocuit cu textul mesajului.
$keywordÎnlocuit cu primul cuvânt din mesaj. Acest cuvânt se numește cuvânt cheie.
$afterÎnlocuit cu textul rămas după cuvântul cheie.
$senttimeÎnlocuit cu un marcaj de timp care arată când a fost trimis mesajul.
$receivedtimeÎnlocuit cu un marcaj de timp care arată când a fost primit mesajul.
$messagetypeÎnlocuit cu tipul mesajului, care este în majoritatea cazurilor 'SMS:TEXT'.
$idÎnlocuit cu un șir unic,
care identifică mesajul în Ozeki SMS Gateway.
$operatorÎnlocuit cu numele furnizorului de servicii,
care a primit mesajul în Ozeki SMS Gateway.
$1Înlocuit cu primul cuvânt din mesaj.
$2Înlocuit cu al doilea cuvânt din mesaj.
$3Înlocuit cu al treilea cuvânt din mesaj, etc...

Structura scriptului de autoreply este explicată pe aceste pagini web:

Pasul 8 - Testați soluția de autoreply din baza de date

După ce ați efectuat Pașii 1 până la 6, puteți încerca soluția. Ozeki SMS Gateway va redirecționa mesajele SMS primite către Utilizatorul dvs. de bază de date Autoreply. Scriptul de interogare SQL filtrează mesajul SMS pentru a crea seturile de rezultate SELECT corespunzătoare. Fiecare rând al setului de rezultate va reprezenta un mesaj de răspuns sau de redirecționat.

Puteți urmări jurnalul de mesagerie al Utilizatorului dvs. de bază de date Autoreply la următoarea cale:
C:\Program Files\Ozeki\Ozeki10\Data\NG\Logs

Când introduc date în tabela Ozekimessageout, nu primesc mesajul pe telefonul meu mobil. Care ar putea fi cauza pentru care nu primesc mesajul text care este introdus în tabela out folosind consola mea SQL?

În primul rând, să eliminăm o problemă de rețea mobilă. Trimiteți un SMS de test direct din interfața grafică (GUI) a Ozeki. Dacă mesajul ajunge cu succes, conexiunea la rețea pare să funcționeze corect.

Apoi, trebuie să verificăm dacă mesajele sunt transferate din baza de date în software-ul Ozeki. Introduceți câteva mesaje de test în tabela Ozekimessageout. Apoi, în GUI-ul Ozeki, navigați la cutia de ieșire asociată utilizatorului de bază de date pe care îl folosiți. Dacă aceste mesaje de test lipsesc din cutia de ieșire, problema se află în procesul de transfer de date între baza de date și Ozeki.

Aș dori să folosesc o singură bază de date pentru mai mulți "utilizatori de bază de date". Este posibil acest lucru?

Absolut! Ozeki SMS Gateway vă permite să mențineți jurnale de mesaje distincte pentru diferite scopuri folosind utilizatori separați de bază de date.

Iată un ghid pas cu pas:

  • Creați tabele noi în baza de date: Configurați două tabele noi în baza de date. Pentru o identificare ușoară, le puteți numi ozekimessagein2 și ozekimessageout2. Aceste tabele ar trebui să reflecte structura tabelelor existente ozekimessagein și ozekimessageout folosite de primul utilizator de bază de date.
  • Configurați al doilea utilizator de bază de date: Accesați formularul de configurare pentru al doilea utilizator de bază de date în Ozeki.
  • Modificați șabloanele SQL: Localizați secțiunea pentru șabloane SQL în cadrul formularului de configurare. Aceste șabloane specifică modul în care mesajele sunt salvate în tabelele de bază de date.
  • Actualizați numele tabelelor: În cadrul șabloanelor SQL pentru al doilea utilizator de bază de date, actualizați numele tabelelor existente (ozekimessagein și ozekimessageout) pentru a se potrivi cu tabelele nou create (ozekimessagein2 și ozekimessageout2).
Urmând acești pași, veți stabili jurnale de mesaje separate pentru fiecare utilizator de bază de date. Acest lucru vă permite să categorisiți sau să filtrați mesajele în funcție de nevoile dumneavoastră specifice folosind numele tabelelor alese.

Ozeki SMS Gateway-ul meu se deconectează mereu de la serverul meu MySQL cu următorul mesaj de eroare: MySQL Server has gone away. Ce ar trebui să fac?

Pentru a îmbunătăți răspunsul atunci când utilizați Ozeki cu MySQL, ajustați setarea de timeout. Iată cum:

Configurați timeout-ul MySQL:

  • Editați fișierul de configurare MySQL (de ex., my.ini) și setați parametrul interactive_timeout la durata dorită în secunde (de ex., interactive_timeout = 28800 pentru 8 ore).
  • Salvați modificările și reporniți serviciul MySQL.

Actualizați șirul de conexiune Ozeki:

  • Modificați șirul de conexiune Ozeki pentru a folosi Interactive în loc de wait_timeout. Formatul corect este Driver={MySQL ODBC 5.2 ANSI Driver};Server=127.0.0.1;Database=ozeki;User=test;Password=test;Interactive=VALOAREA_TIMEOUT.

  • Nu uitați să înlocuiți VALOAREA_TIMEOUT cu valoarea de timeout dorită în secunde.
Urmând acești pași, veți optimiza timeout-urile de conexiune MySQL pentru o funcționare mai bună în Ozeki, benefică în special pentru sarcini de lungă durată sau seturi de date mari.

Driver={MySQL ODBC 5.2 ANSI Driver};Server=127.0.0.1;Database=ozeki;User=test;Password=test;interactive=;Option=8;

More information