Odpovědi na SMS z SQL databáze
Uživatel Autoreply Database v Ozeki SMS Gateway se může připojit k vaší databázi Microsoft SQL, Oracle, MySQL, Sybase atd. pomocí připojovacího řetězce. Spustí jakýkoli SELECT dotaz, který zadáte, po přijetí SMS zprávy. Výsledná sada dotazu bude odeslána jako odchozí zprávy. Dotazy a tabulky lze také upravovat z vaší vlastní aplikace.
Jak odeslat odpověď na SMS z SQL
Pro odeslání odpovědi na SMS z SQL:
- Spusťte Ozeki SMS Gateway
- Přidejte nového uživatele Autoreply database
- Vytvořte strukturu tabulky SQL databáze
- Nastavte uživatele Autoreply database
- Zadejte skript pro automatickou odpověď
- Použijte identifikovatelná čísla a klíčová slova
- Odešlete testovací SMS pro získání odpovědi z SQL
- Zkontrolujte protokoly uživatele Autoreply database
Toto řešení vám umožní vytvořit následující službu (Obrázek 1):
1.) SMS zpráva je přijata Ozeki SMS Gateway z mobilního telefonu.
2.) Uživatel Autoreply Database v Ozeki SMS Gateway vyhledá klíčová slova v SMS zprávě pomocí txt souboru.
3.) V závislosti na vyhledávání bude automatická odpověď vybrána z vašeho databázového serveru pomocí stejného txt souboru.
Je důležité, abyste měli nakonfigurovaného poskytovatele IP SMS služeb nebo GSM modem ve vašem Ozeki SMS Gateway, abyste mohli přijímat SMS zprávy a automaticky na ně odpovídat pomocí tohoto příkladu.
Krok 1 - Nastavení uživatele Autoreply Database v Ozeki SMS Gateway
Nejprve je třeba nainstalovat uživatele Autoreply Database pro vytvoření popsané služby. Na konzoli 'Management' prosím klikněte na 'Přidat', jak je vidět na Obrázku 2.
Najděte uživatele Autoreply Database a klikněte na modrý odkaz 'nainstalovat' vedle něj. Jak můžete vidět na Obrázku 3.
Krok 2 - Vytvoření struktury databázové tabulky
Uživatel Autoreply Database bude vybírat odpovědi na SMS zprávy z databázové tabulky. Vytvořte následující databázovou strukturu pro uložení SMS zpráv (Obrázek 4). Tento příklad používá databázový server MySQL, ale můžete použít i jiné databáze jako Microsoft SQL, Oracle, Sybase atd. Můžete použít i jiné tabulky a rozložení tabulek.
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","Pro toto klíčové slovo nejsou žádná data."), ("red","Červená je dobrá barva."), ("blue","Modrá není nejlepší volba.");Obrázek 4 - VYTVOŘENÍ TABULKY a VLOŽENÍ řádků do tabulky 'autoreplymessage'
Vaše tabulky lze zobrazit pomocí SELECT * FROM příkazů (Obrázek 5). Ačkoli tento příklad obsahuje pouze jednu tabulku.
> SELECT * FROM autoreplymessage;
id keyword msg ---------- ------------------------------ ------------------------------------- 1 default Pro toto klíčové slovo nejsou žádná data. 2 red Červená je dobrá barva. 3 blue Modrá není nejlepší volba. (3 řádky ovlivněny)Obrázek 5 - Čtení tabulky 'autoreplymessage' pomocí SELECT příkazu
Pokud není s databázovým serverem nainstalován databázový ovladač, měli byste ovladač nainstalovat, protože budete potřebovat připojovací řetězec v dalším kroku. Databázový ovladač spojuje Ozeki SMS Gateway a databázový server. Ve většině případů je databázový ovladač nainstalován spolu s databázovým serverem.
Budete muset zadat typ připojení k databázi a připojovací řetězec v panelu 'Nastavení databáze' uživatele Autoreply Database User (Obrázek 6). Typ lze vybrat z rozbalovacího seznamu, zatímco řetězec musí být vložen do textového pole.
Na obrázku 7 můžete vidět ukázkový řetězec pro připojení k MySQL databázi.
Mějte na paměti, že můžete použít vlastní typ připojovacího řetězce (OleDB, ODBC,
SQLServer, Oracle) pro vlastní databázový server,
kterým může být Microsoft SQL, Oracle, Sybase atd... V případě, že používáte ODBC
ovladač pro MySQL,
stačí upravit IP adresu MySQL serveru, název databáze, uživatelské jméno a
heslo na vlastní hodnoty v následujícím řetězci:
Typ připojení: ODBC
Připojovací řetězec: Driver={MySQL ODBC 5.3 Unicode Driver}; Server=127.0.0.1;Database=ozekisms;User=ozeki;Password=abc123;Option=4;
Pro nalezení připojovacího řetězce k jiným databázovým serverům, se doporučuje přečíst si průvodce SMS Database Connection Strings.
Krok 4 - Napište skript pro automatickou odpověď z SQL databáze
Nyní je čas napsat skriptový soubor, který je schopen SELECT řádek z vaší databázové tabulky, pokud byla tabulka úspěšně vytvořena v KROKU 2. Atribut zprávy vybraného řádku bude odpovědí na SMS zprávu. Zde můžete najít cestu k příkladu skriptu: C:\Program Files\Ozeki\Ozeki10\Data\NG\config\OzekiUsername\sqlscript.txt
Tyto soubory lze upravovat pomocí jednoduchého textového editoru nebo můžete vytvořit vlastní txt soubor a upravit jej vlastní aplikací, což je užitečné, pokud chcete upravit dotazy. Zadejte cestu k souboru pomocí uživatele Autoreply Database User kliknutím na 'Nastavení databáze' a výběrem záložky 'Autoreply script' (Obrázek 8)
Krok 5 - Struktura SQL skriptů pro dotazy
SQL skript uživatele Autoreply Database User obsahuje dvojice filtr-příkaz, které fungují přesně jako struktura if-then v programovacích jazycích. Přijatá SMS zpráva projde filtrem a pokud je v pořádku, spustí se SQL SELECT příkaz. Obsah zprávy vybraných řádků bude přeposlán na telefonní číslo. Toto číslo je 1. parametrem výsledné sady SELECT příkazu, zatímco text zprávy je 2. Filtr je schopen identifikovat telefonní čísla, fragmenty textu a klíčová slova. Klíčové slovo každé zprávy je první slovo textu. Přeposlání proběhne, pokud je adresa příjemce zahrnuta v databázi (Obrázek 11).
Krok 6 - Jednoduchý příklad s klíčovým slovem
Tento příklad bude fungovat na následující tabulce, kterou můžete vidět na obrázku 9.
id keyword msg ---------- ------------------------------ ------------------------------------- 1 default Pro toto klíčové slovo nejsou žádná data. 2 red Červená je dobrá barva. 3 blue Modrá není nejlepší volba.Obrázek 9 - Obsah tabulky 'autoreplymessage'
Následující skript na obrázku 10 můžete spustit na tabulce 'autoreplymessage' jeho přidáním do 'sqlscript.txt'. Připomínáme, že klíčové slovo, které je symbolizováno znakem 'k', je první slovo v SMS zprávě. Toto slovo bude testováno filtrem. Pokud je kontrola filtru úspěšná, spustí se SELECT příkaz a skript se zastaví. Jak vidíte, můžete vložit konstantní hodnoty do SELECT příkazu. Například '$sender', což je odesílatel příchozí zprávy.
Prvky skriptu, které můžete vložit do sqlscript.txtSELECT '$sender',msg FROM autoreplymessage WHERE keyword='red' #První filtr kontroluje, zda bylo klíčové slovo 'RED'. #Pokud ano, vybere 'Červená je dobrá barva.' jako odpověď. #Pokud ne, přejde k dalšímu filtru. k^BLUE SELECT '$sender',msg FROM autoreplymessage WHERE keyword='blue' #Druhý filtr kontroluje, zda bylo klíčové slovo 'BLUE'. #Pokud ano, vybere 'Modrá není nejlepší volba.' jako odpověď. #Pokud ne, přejde k dalšímu filtru. k.* SELECT '$sender',msg FROM autoreplymessage WHERE keyword='default' #Třetí filtr přijme jakékoli jiné klíčové slovo. #Vybere 'Pro toto klíčové slovo nejsou žádná data.' jako odpověď.Obrázek 10 - Příklad skriptu, který lze vložit do sqlscript.txt
Filtrovací část SQL skriptu funguje podobně jako filtrovací část SMS messaging skriptu, ale mějte na paměti, že hledáte pouze příklady filtrů, protože druhá část je vždy SQL SELECT příkaz.
Krok 7 - Předdefinovaná klíčová slova v Ozeki SMS Gateway
Tyto typy klíčových slov lze umístit do skriptu. Například '$sender':
SELECT '$sender',msg FROM autoreplymessage WHERE keyword='red'Obrázek 11 - Odešle zprávu na '$sender'
Uživatel databáze automatických odpovědí může rozpoznat následující klíčová slova:
Klíčové slovo | Hodnota | $originator | Nahrazeno telefonním číslem odesílatele. |
---|---|
$sender | =$originator ($sender je jiný název pro $originator.) |
$recipient | Nahrazeno telefonním číslem, které zprávu přijalo. |
$receiver | =$recipient ($receiver je jiný název pro $recipient.) |
$messagedata | Nahrazeno textem zprávy. |
$keyword | Nahrazeno 1. slovem ve zprávě. Toto slovo se nazývá klíčové slovo. |
$after | Nahrazeno zbývajícím textem za klíčovým slovem. |
$senttime | Nahrazeno časovým razítkem, které ukazuje, kdy byla zpráva odeslána. |
$receivedtime | Nahrazeno časovým razítkem, které ukazuje, kdy byla zpráva přijata. |
$messagetype | Nahrazeno typem zprávy, což je ve většině případů 'SMS:TEXT'. |
$id | Nahrazeno jedinečným řetězcem, který identifikuje zprávu v Ozeki SMS Gateway. |
$operator | Nahrazeno názvem poskytovatele služeb, který přijal zprávu v Ozeki SMS Gateway. |
$1 | Nahrazeno 1. slovem ve zprávě. |
$2 | Nahrazeno 2. slovem ve zprávě. |
$3 | Nahrazeno 3. slovem ve zprávě, atd... |
Struktura skriptu pro automatické odpovědi je vysvětlena na těchto webových stránkách:
Krok 8 - Otestování řešení automatických odpovědí z databáze
Po provedení kroků 1 až 6 můžete vyzkoušet řešení. Ozeki SMS Gateway bude přeposílat příchozí SMS zprávy vašemu uživateli databáze automatických odpovědí. Skript SQL dotazu filtruje SMS zprávu, aby vytvořil správné výsledné sady SELECT. Každý řádek výsledné sady bude představovat zprávu, na kterou má být odpovězeno nebo přeposláno.
Protokol zpráv vašeho uživatele databáze automatických odpovědí můžete sledovat na následující cestě:
C:\Program Files\Ozeki\Ozeki10\Data\NG\Logs
Když vložím data do tabulky Ozekimessageout, nedostanu zprávu na svůj mobilní telefon. Co by mohlo být příčinou, že nedostanu textovou zprávu, která je vložena do výstupní tabulky pomocí mé SQL konzole?
Nejprve vylučme problém s mobilní sítí. Odešlete testovací SMS přímo z grafického uživatelského rozhraní (GUI) Ozeki. Pokud zpráva dorazí úspěšně, připojení k síti funguje správně.
Dále musíme ověřit, zda jsou zprávy přenášeny z vaší databáze do softwaru Ozeki. Vložte nějaké testovací zprávy do tabulky Ozekimessageout. Poté v GUI Ozeki přejděte do odchozí pošty spojené s databázovým uživatelem, kterého používáte. Pokud tyto testovací zprávy v odchozí poště chybí, problém spočívá v procesu přenosu dat mezi databází a Ozeki.
Chtěl bych použít jednu databázi pro více "databázových uživatelů". Je to možné?
Absolutně! Ozeki SMS Gateway vám umožňuje udržovat samostatné protokoly zpráv pro různé účely pomocí samostatných databázových uživatelů.
Zde je návod krok za krokem:
- Vytvořte nové databázové tabulky: Nastavte dvě nové tabulky ve vaší databázi. Pro snadnou identifikaci je můžete pojmenovat ozekimessagein2 a ozekimessageout2. Tyto tabulky by měly kopírovat strukturu stávajících tabulek ozekimessagein a ozekimessageout používaných vaším prvním databázovým uživatelem.
- Nakonfigurujte druhého databázového uživatele: Otevřete konfigurační formulář pro vašeho druhého databázového uživatele v Ozeki.
- Upravte SQL šablony: Najděte sekci pro SQL šablony v konfiguračním formuláři. Tyto šablony určují, jak jsou zprávy ukládány do databázových tabulek.
- Aktualizujte názvy tabulek: V SQL šablonách pro druhého databázového uživatele aktualizujte stávající názvy tabulek (ozekimessagein a ozekimessageout) tak, aby odpovídaly nově vytvořeným tabulkám (ozekimessagein2 a ozekimessageout2).
Moje Ozeki SMS Gateway se vždy odpojí od mého MySQL serveru s následující chybovou zprávou: MySQL Server has gone away. Co bych měl udělat?
Pro zlepšení odezvy při používání Ozeki s MySQL upravte nastavení časového limitu. Zde je návod:
Konfigurace časového limitu MySQL:
- Upravte svůj konfigurační soubor MySQL (např. my.ini) a nastavte parametr interactive_timeout na požadovanou dobu v sekundách (např. interactive_timeout = 28800 pro 8 hodin).
- Uložte změny a restartujte službu MySQL.
Aktualizujte připojovací řetězec Ozeki:
-
Upravte svůj připojovací řetězec Ozeki tak, aby používal Interactive místo wait_timeout. Správný formát je Driver={MySQL ODBC 5.2 ANSI Driver};Server=127.0.0.1;Database=ozeki;User=test;Password=test;Interactive=VAŠE_HODNOTA_ČASOVÉHO_LIMITU.
- Nezapomeňte nahradit VAŠE_HODNOTA_ČASOVÉHO_LIMITU požadovaným časovým limitem v sekundách.
Driver={MySQL ODBC 5.2 ANSI Driver};Server=127.0.0.1;Database=ozeki;User=test;Password=test;interactive=;Option=8;
More information
- Odpověď na SMS z PC do mobilu
- Jak napsat skript pro automatickou odpověď na SMS
- Jak odeslat automatickou odpověď na SMS z SQL