Odpowiedzi SMS z bazy danych SQL
Użytkownik Autoreply Database w Ozeki SMS Gateway może połączyć się z bazą danych Microsoft SQL, Oracle, MySQL, Sybase itp. za pomocą ciągu połączenia. Wykonuje dowolne zapytanie SELECT, które podasz, po otrzymaniu wiadomości SMS. Zestaw wyników zapytania zostanie wysłany jako wiadomości wychodzące. Zapytania i tabele mogą być również modyfikowane z poziomu własnej aplikacji.
Jak wysłać odpowiedź SMS z SQL
Aby wysłać odpowiedź SMS z SQL:
- Uruchom Ozeki SMS Gateway
- Dodaj nowego użytkownika Autoreply database
- Utwórz strukturę tabeli bazy danych SQL
- Skonfiguruj użytkownika Autoreply database
- Podaj skrypt tekstowy autoreply
- Używaj identyfikowalnych numerów i słów kluczowych
- Wyślij testową SMS, aby otrzymać odpowiedź z SQL
- Sprawdź logi użytkownika Autoreply database
Możesz utworzyć następującą usługę, korzystając z tego rozwiązania (Rysunek 1):
1.) Wiadomość SMS jest odbierana przez Ozeki SMS Gateway z telefonu komórkowego.
2.) Użytkownik Autoreply Database w Ozeki SMS Gateway wyszukuje słowa kluczowe w wiadomości SMS, korzystając z pliku txt.
3.) W zależności od wyniku wyszukiwania, wiadomość autoreply zostanie wybrana z serwera bazy danych za pomocą tego samego pliku txt.
Ważne jest, abyś miał skonfigurowanego dostawcę usług SMS IP lub modem GSM w Ozeki SMS Gateway, aby móc odbierać wiadomości SMS i automatycznie na nie odpowiadać, korzystając z tego przykładu.
Krok 1 - Konfiguracja użytkownika Autoreply Database w Ozeki SMS Gateway
Najpierw musisz zainstalować użytkownika Autoreply Database, aby utworzyć opisaną usługę. W konsoli 'Management' kliknij 'Add', jak pokazano na Rysunku 2.
Znajdź użytkownika Autoreply Database i kliknij niebieski link 'install' obok niego. Jak widać na Rysunku 3.
Krok 2 - Utwórz strukturę tabeli bazy danych
Użytkownik Autoreply Database będzie wybierał wiadomości SMS odpowiedzi z tabeli bazy danych. Utwórz następującą strukturę bazy danych do przechowywania wiadomości SMS (Rysunek 4). Ten przykład używa serwera bazy danych MySQL, ale możesz użyć innych baz danych, takich jak Microsoft SQL, Oracle, Sybase itp. Możesz również użyć innych tabel i układów tabel.
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","There is no data for this keyword."), ("red","Red is a good colour."), ("blue","Blue is not the best option.");Rysunek 4 - CREATE TABLE i INSERT wierszy do tabeli 'autoreplymessage'
Twoje tabele mogą być przeglądane za pomocą zapytań SELECT * FROM (Rysunek 5). Chociaż ten przykład zawiera tylko jedną tabelę.
> SELECT * FROM autoreplymessage;
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. (3 rows affected)Rysunek 5 - Odczyt tabeli 'autoreplymessage' za pomocą zapytania SELECT
W przypadku, gdy nie ma zainstalowanego sterownika bazy danych z serwerem bazy danych, powinieneś zainstalować sterownik, ponieważ będziesz potrzebować ciągu połączenia w następnym kroku. Sterownik bazy danych łączy Ozeki SMS Gateway z serwerem bazy danych. W większości przypadków sterownik bazy danych jest zainstalowany wraz z serwerem bazy danych.
Krok 3 - Konfiguracja użytkownika bazy danych Autoreply do korzystania z Twojej bazy danych
Będziesz musiał wprowadzić typ połączenia z bazą danych i ciąg połączenia w panelu 'Konfiguracja bazy danych' użytkownika Autoreply Database (Rysunek 6). Typ można wybrać z listy rozwijanej, a ciąg należy wpisać w pole tekstowe.
Na Rysunku 7 możesz zobaczyć przykładowy ciąg dla połączenia z bazą danych MySQL.
Pamiętaj, że możesz użyć własnego typu ciągu połączenia (OleDB, ODBC,
SQLServer, Oracle) dla swojego serwera bazy danych,
którym może być Microsoft SQL, Oracle, Sybase itp... W przypadku użycia sterownika ODBC dla MySQL,
wystarczy zmodyfikować IP serwera MySQL, nazwę bazy danych, nazwę użytkownika i
hasło na własne wartości w następującym ciągu:
Typ połączenia: ODBC
Ciąg połączenia: Driver={MySQL ODBC 5.3 Unicode Driver}; Server=127.0.0.1;Database=ozekisms;User=ozeki;Password=abc123;Option=4;
Aby znaleźć ciąg połączenia dla innych serwerów baz danych, sugerujemy przeczytanie przewodnika po ciągach połączeń SMS Database.
Krok 4 - Napisanie skryptu do automatycznej odpowiedzi z bazy danych SQL
Teraz czas na napisanie pliku skryptu, który jest w stanie wybrać wiersz z Twojej tabeli bazy danych, jeśli tabela została pomyślnie utworzona w KROKU 2. Atrybut wiadomości wybranego wiersza zostanie przesłany jako odpowiedź na wiadomość SMS. Tutaj znajdziesz ścieżkę przykładowego skryptu: C:\Program Files\Ozeki\Ozeki10\Data\NG\config\OzekiUsername\sqlscript.txt
Prosty edytor tekstu może edytować te pliki lub możesz utworzyć własny plik txt i edytować go za pomocą własnej aplikacji, co jest przydatne, jeśli chcesz modyfikować zapytania. Podaj ścieżkę do pliku za pomocą użytkownika Autoreply Database, klikając 'Konfiguracja bazy danych' i wybierając kartę 'Skrypt automatycznej odpowiedzi' (Rysunek 8)
Krok 5 - Struktura skryptów zapytań SQL
Skrypt SQL użytkownika Autoreply Database zawiera pary filtr-zapytanie, które działają dokładnie jak struktura if-then w językach programowania. Odebrana wiadomość SMS przechodzi przez filtr i jeśli jest poprawna, zostanie wykonane zapytanie SQL SELECT. Treść wiadomości wybranych wierszy zostanie przesłana na numer telefonu. Ten numer jest pierwszym parametrem zestawu wyników zapytania SELECT, a tekst wiadomości jest drugim. Filtr jest w stanie identyfikować numery telefonów, fragmenty tekstu i słowa kluczowe. Słowo kluczowe każdej wiadomości to pierwsze słowo tekstu. Przesyłanie odbywa się, jeśli adres odbiorcy jest zawarty w bazie danych (Rysunek 11).
Krok 6 - Prosty przykład słowa kluczowego
Ten przykład będzie działał na następującej tabeli, którą możesz zobaczyć na Rysunku 9.
id keyword msg ---------- ------------------------------ ------------------------------------- 1 default Brak danych dla tego słowa kluczowego. 2 red Czerwony to dobry kolor. 3 blue Niebieski nie jest najlepszym wyborem.Rysunek 9 - Zawartość tabeli 'autoreplymessage'
Możesz uruchomić następujący skrypt z Rysunku 10 na tabeli 'autoreplymessage', dodając go do 'sqlscript.txt'. Przypomnijmy, że słowo kluczowe, symbolizowane przez znak 'k', to pierwsze słowo w wiadomości SMS. To słowo będzie testowane przez filtr. Jeśli test filtra zakończy się sukcesem, zostanie wykonane zapytanie SELECT, a skrypt się zatrzyma. Jak widać, możesz umieścić stałe wartości w zapytaniu SELECT. Na przykład '$sender', który jest nadawcą przychodzącej wiadomości.
Elementy skryptu, które możesz umieścić w sqlscript.txtSELECT '$sender',msg FROM autoreplymessage WHERE keyword='red' #Pierwszy filtr sprawdza, czy słowem kluczowym było 'RED'. #Jeśli tak, wybiera 'Czerwony to dobry kolor.' jako wiadomość odpowiedzi. #Jeśli nie, przechodzi do następnego filtra. k^BLUE SELECT '$sender',msg FROM autoreplymessage WHERE keyword='blue' #Drugi filtr sprawdza, czy słowem kluczowym było 'BLUE'. #Jeśli tak, wybiera 'Niebieski nie jest najlepszym wyborem.' jako wiadomość odpowiedzi. #Jeśli nie, przechodzi do następnego filtra. k.* SELECT '$sender',msg FROM autoreplymessage WHERE keyword='default' #Trzeci filtr zaakceptuje każde inne słowo kluczowe. #Wybiera 'Brak danych dla tego słowa kluczowego.' jako wiadomość odpowiedzi.Rysunek 10 - Przykładowy skrypt, który można umieścić w sqlscript.txt
Część filtrująca skryptu zapytania SQL działa podobnie jak część filtrująca skryptu wiadomości SMS, ale pamiętaj, aby szukać tylko przykładów filtrów, ponieważ druga część to zawsze zapytanie SQL SELECT.
Krok 7 - Wstępnie zdefiniowane słowa kluczowe w Ozeki SMS Gateway
Tego typu słowa kluczowe mogą być umieszczone w skrypcie. Na przykład '$sender':
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='red'Rysunek 11 - Wysyła wiadomość do '$sender'
Użytkownik Autoreply Database może rozpoznać następujące słowa kluczowe:
Słowo kluczowe | Wartość | $originator | Zastępowane przez numer telefonu nadawcy. |
---|---|
$sender | =$originator ($sender to inna nazwa dla $originator.) |
$recipient | Zastępowane przez numer telefonu, który otrzymał wiadomość. |
$receiver | =$recipient ($receiver to inna nazwa dla $recipient.) |
$messagedata | Zastępowane przez tekst wiadomości. |
$keyword | Zastępowane przez pierwsze słowo w wiadomości. To słowo nazywane jest słowem kluczowym. |
$after | Zastępowane przez pozostały tekst po słowie kluczowym. |
$senttime | Zastępowane przez znacznik czasu pokazujący, kiedy wiadomość została wysłana. |
$receivedtime | Zastępowane przez znacznik czasu pokazujący, kiedy wiadomość została odebrana. |
$messagetype | Zastępowane przez typ wiadomości, który w większości przypadków to 'SMS:TEXT'. |
$id | Zastępowane przez unikalny ciąg znaków, który identyfikuje wiadomość w Ozeki SMS Gateway. |
$operator | Zastępowane przez nazwę dostawcy usług, który odebrał wiadomość w Ozeki SMS Gateway. |
$1 | Zastępowane przez pierwsze słowo w wiadomości. |
$2 | Zastępowane przez drugie słowo w wiadomości. |
$3 | Zastępowane przez trzecie słowo w wiadomości, itd... |
Struktura skryptu autoreply jest wyjaśniona na tych stronach:
Krok 8 - Testowanie rozwiązania autoreply z bazy danych
Po wykonaniu kroków od 1 do 6, możesz przetestować rozwiązanie. Ozeki SMS Gateway będzie przekazywać przychodzące wiadomości SMS do Twojego użytkownika Autoreply Database. Skrypt zapytania SQL filtruje wiadomość SMS, aby utworzyć odpowiednie zestawy wyników SELECT. Każdy wiersz zestawu wyników będzie reprezentował wiadomość do odpowiedzi lub przekazania.
Możesz śledzić dziennik wiadomości swojego użytkownika Autoreply Database pod następującą ścieżką:
C:\Program Files\Ozeki\Ozeki10\Data\NG\Logs
Kiedy wstawiam dane do tabeli Ozekimessageout, nie otrzymuję wiadomości na mój telefon komórkowy. Jaka może być przyczyna, że nie otrzymuję wiadomości tekstowej, która jest wstawiona do tabeli out za pomocą mojej konsoli SQL?
Najpierw wykluczmy problem z siecią komórkową. Wyślij testową wiadomość SMS bezpośrednio z interfejsu graficznego (GUI) Ozeki. Jeśli wiadomość dotrze pomyślnie, połączenie sieciowe wydaje się działać prawidłowo.
Następnie musimy sprawdzić, czy wiadomości są przekazywane z bazy danych do oprogramowania Ozeki. Wstaw kilka testowych wiadomości do tabeli Ozekimessageout. Następnie, w interfejsie graficznym Ozeki, przejdź do skrzynki wychodzącej powiązanej z użytkownikiem bazy danych, którego używasz. Jeśli te testowe wiadomości nie są obecne w skrzynce wychodzącej, problem leży w procesie transferu danych między bazą danych a Ozeki.
Chciałbym używać jednej bazy danych dla wielu "użytkowników bazy danych". Czy to możliwe?
Oczywiście! Ozeki SMS Gateway pozwala na utrzymanie oddzielnych dzienników wiadomości dla różnych celów poprzez użycie oddzielnych użytkowników bazy danych.
Oto przewodnik krok po kroku:
- Utwórz nowe tabele w bazie danych: Skonfiguruj dwie nowe tabele w swojej bazie danych. Dla łatwej identyfikacji możesz nazwać je ozekimessagein2 i ozekimessageout2. Te tabele powinny mieć strukturę identyczną z istniejącymi tabelami ozekimessagein i ozekimessageout używanymi przez pierwszego użytkownika bazy danych.
- Skonfiguruj drugiego użytkownika bazy danych: Otwórz formularz konfiguracyjny dla swojego drugiego użytkownika bazy danych w Ozeki.
- Zmodyfikuj szablony SQL: Znajdź sekcję szablonów SQL w formularzu konfiguracyjnym. Te szablony określają, jak wiadomości są zapisywane do tabel bazy danych.
- Zaktualizuj nazwy tabel: W szablonach SQL dla drugiego użytkownika bazy danych, zaktualizuj istniejące nazwy tabel (ozekimessagein i ozekimessageout) na nowo utworzone tabele (ozekimessagein2 i ozekimessageout2).
Moje Ozeki SMS Gateway zawsze rozłącza się z moim serwerem MySQL z następującym komunikatem o błędzie: MySQL Server has gone away. Co powinienem zrobić?
Aby poprawić responsywność podczas używania Ozeki z MySQL, dostosuj ustawienie timeout. Oto jak:
Skonfiguruj timeout MySQL:
- Edytuj plik konfiguracyjny MySQL (np. my.ini) i ustaw parametr interactive_timeout na żądany czas w sekundach (np. interactive_timeout = 28800 dla 8 godzin).
- Zapisz zmiany i zrestartuj usługę MySQL.
Zaktualizuj ciąg połączenia Ozeki:
-
Zmodyfikuj swój ciąg połączenia Ozeki, aby używał Interactive zamiast wait_timeout. Poprawny format to Driver={MySQL ODBC 5.2 ANSI Driver};Server=127.0.0.1;Database=ozeki;User=test;Password=test;Interactive=TWÓJ_WARTOŚĆ_TIMEOUT.
- Pamiętaj, aby zastąpić TWÓJ_WARTOŚĆ_TIMEOUT żądanym czasem timeout w sekundach.
Driver={MySQL ODBC 5.2 ANSI Driver};Server=127.0.0.1;Database=ozeki;User=test;Password=test;interactive=;Option=8;
More information
- Odpowiedź SMS z komputera na telefon
- Jak nAPIsać skrypt odpowiedzi SMS
- Jak wysłać odpowiedź SMS z SQL