![]() |
Obsah dokumentace | Uživatelská dokumentace | Administrátorská dokumentace | Rejstřík pojmů | Technická podpora | Hledání on-line |
Programování skriptových aplikací |
Tento dokument popisuje, jak naprogramovat skriptovou aplikaci nad MobilChange. Očekává od čtenáře znalost jazyka VBScript nebo Visual Basic.
Obsah dokumentu
Všechny uživatelské skriptové aplikace běží v prostředí servisu UMS.TaskManager. Ten hlídá jejich funkci a zajišťuje případné restarty. Skripty se spouští uvnitř Windows Scripting Hosta.
Uživatelské aplikace se ukládají do adresáře MobilChange/script/
.
Různé ukázkové aplikace najdete v adresáři MobilChange/samples/
. Použití příkladů je komentováno přímo ve zdrojovém kódu.
Knihovny se k uživatelskému kódu připojují příkazem
'#include "soubor.vbs" |
Jméno souboru v uvozovkách může obsahovat i cestu, relativní vůči adresáři MobilChange/script/.
Při spuštění služby UMS.Task Manager je v rámci "startup" tasku
MX_<jméno úlohy>
zkompilován soubor MobilChange/script/<jméno úlohy>.vbs
,
provedeny includy a výsledný soubor je uložen jako
MobilChange/script/run/<jméno úlohy>.vbs
. Tento soubor je pak spouštěn.
Tj. pokud např. VBscript interpreter hlásí syntaktickou chybu na řádku 200,
je třeba najít řádek 200 ve zkompilovaném souboru v adresáři
MobilChange/script/run/
, chybu opravit ve
zdrojovém souboru v adresáři MobilChange/script/
a
pak zrestartovat UMS.Task Manager, aby došlo k překompilování skriptu.
Výše uvedené platí do verze MobilChange 4.6.23. Ve vyšší verzích se includování nepoužívá - je nahrazeno technologií WSF jobů:
MobilChange/script/<jméno úlohy>.wsf
, který je spouštěn v rámci
"normálního" tasku - "startup" task neexistuje
MobilChange/script/run/
se žádný kód nevytváří
Option Explicit '#include "include\mx_script_app.vbs" |
OnInit
. Jako parametr dostává tři proměnné, které musí nainicializovat.
AppName |
Do této proměnné musí uživatelský skript zapsat své jméno (jméno, pod kterým byl přidán do systému). |
ServerName |
Sem musí aplikace zadat jméno serveru MobilChange, se kterým chce pracovat.
Lokální server (počítač, na němž aplikace běží) se označuje prázdným řetězcem ("").
Ve stávající verzi sem nemá smysl zadávat nic jiného, než prázdný řetězec. |
IddleTime |
Zde musí skript zapsat, jak často má být volána funkce OnIddle . Čas se
zadává v milisekundách, doporučené minimum je 5000, maximum 60000. Při ukončování činnosti UMS.Taskmanageru se po tuto dobu čeká na ukončení
skriptové aplikace. Proto nenastavujte příliš vysokou hodnotu, aby ukončení Taskmanageru netrvalo příliš dlouho. |
(návratová |
Textový řetězec "OK", pokud je vše v pořádku, řetězec "ERROR" v případě, že došlo k chybě. Pokud uživatelský kód vrátí "ERROR", je skript ukončen a zrestartován. |
Zde je tedy ukázka kompletní funkce OnInit()
:
Function OnInit( AppName, ServerName, IddleTime ) AppName = "pizza" ' application "pizza" ServerName = "" ' local server IddleTime = 10000 ' 10 seconds, recommended ' There can be done additinal initialization tasks OnInit = "OK" ' return status End Function |
OnReceivedSMS()
. Ta dostává informace o SMS ve svých třech parametrech.
Nicméně tato funkce je zde jen pro zpětnou kompatibilitu se staršími verzemi Mobilchange - preferovaná cesta je používat novou funkci
OnNotification(), která rovněž dostává informace o došlých SMS a navíc dostává více informací o zprávě.
FromNumber |
Telefonní číslo odesilatele v mezinárodním formátu. |
TimeReceived |
Čas příchodu SMS jako textový řetězec ve formátu YYYY/MM/DD hh:mm:ss |
MessageBody |
Text přišlé SMS zprávy. |
(návratová |
Textový řetězec "OK", pokud je vše v pořádku, řetězec "ERROR" v případě, že došlo k chybě. Pokud uživatelský kód vrátí "ERROR", je skript ukončen a zrestartován. SMS zůstává ve frontě a po restartu bude skriptu znovu předána. |
Ukázka kompletní funkce OnReceivedSMS()
v uživatelské aplikaci Pizza.
Odpovídá na přijatou SMS a do odpovědi vloží text původní SMS.
Function OnReceivedSMS( FromNumber, TimeReceived, MessageBody ) Dim rc MXLog "Working on received SMS..." MXLog "Sending reply..." rc = MobilChange.SendSMS( FromNumber, "PIZZA SERVICE: You have ordered pizza -" + MessageBody + "- from phone number " + FromNumber + ".", True ) MXLog "MobilChange.SendSms() = " & rc If rc <> "OK" Then MXLog "ERROR: " + MobilChange.LastError End If OnReceivedSMS = "OK" ' return status End Function |
OnNotification()
a jsou jí předány tyto parametry:
MessageType |
Typ události. Možné hodnoty:
|
Attr |
Kolekce atributů oznámení, jedná se o instanci objektu FxExtObj.DSVariantCol. Kolekce může obsahovat tyto položky:
|
(návratová |
Textový řetězec "OK", pokud je vše v pořádku, řetězec "ERROR" v případě, že došlo k chybě. Pokud uživatelský kód vrátí "ERROR", je skript ukončen a zrestartován. SMS zůstává ve frontě a po restartu bude skriptu znovu předána. |
OnIddle()
je volána systémem tehdy, pokud
nejsou po zadanou dobu (nastavuje uživatel ve funkci OnInit()
žádné přijaté zprávy. Je určena například k odesílání zpráv o stavu zařízení,
výpisů z databází atd.
(návratová |
Textový řetězec "OK", pokud je vše v pořádku, řetězec "ERROR" v případě, že došlo k chybě. Pokud uživatelský kód vrátí "ERROR", je skript ukončen a zrestartován. |
Ukázka funkce OnIddle()
:
Function OnIddle ' There can be done anything... OnIddle = "OK" ' return status End Function |
OnShutdown()
je volána systémem při ukončení servisu
UMS.TaskManager, například tedy při shutdownu počítače. Umožňuje uzavřít
databázová spojení, smazat pracovní soubory...
(návratová |
Textový řetězec "OK", pokud je vše v pořádku, řetězec "ERROR" v případě, že došlo k chybě. Pokud uživatelský kód vrátí "ERROR", je skript ukončen a zrestartován. |
Ukázka funkce OnShutdown()
:
Function OnShutdown ' There can be done anything... OnShutdown = "OK" ' return status End Function |
MobilChange.SendSMS()
odesílá SMS zprávu. Syntaxe je:
MobilChange.SendSMS( to, text, nomodify )
MobilChange.SendSMS( to, text, nomodify, fromName, fromSMTP, fromEmail, language, DR )
To |
(textový řetězec) Telefonní číslo adresáta. |
Text |
(textový řetězec) Text zprávy. |
NoModify |
(True/False) Pokud je True , text zprávy je odeslán přesně tak, jak byl zadán aplikací.
Pokud je False , text je zpracován pomocí MobilChange stejným zprůsobem, jako
odesílané e-maily, tj. jsou vynechány mezery, překódovaná čeština atd. |
FromName |
(textový řetězec) Jméno uživatele, za kterého aplikace SMS odesílá.
Případné potvrzení o doručení bude posláno na toto jméno. |
FromEmail |
(textový řetězec) E-mail adresa uživatele, za kterého aplikace SMS odesílá, v rámci
lokálního e-mail systému (tj. např EX: adresa u Exchange serveru).
Případné potvrzení o doručení bude posláno na tuto adresu. |
FromSMTP |
(textový řetězec) SMTP adresa uživatele, za kterého aplikace SMS odesílá.
Tato adresa je použita při formátování odchozí SMS, pokud NoModify=False. |
Language |
(textový řetězec) Kód jazyka uživatele, za kterého aplikace SMS odesílá.
Případné potvrzení o doručení bude posláno v tomto jazyce. Povolené kódy odpovídají názvům podadresářů v adressáři MobilChange/data/, tj. CZ, UK, ... |
DR |
(True/False) Pokud je True , je vyžadováno potvrzení o doručení.
Pokud je False , nechce aplikace potvrzení o doručení. |
(návratová |
Textový řetězec "OK", pokud je vše v pořádku, řetězec "ERROR" v případě, že došlo k chybě. |
Příklad použití:
Dim rc rc = MobilChange.SendSMS( "+420603899285", "Hello, World!", True ) MXLog "MobilChange.SendSms() = " & rc If rc <> "OK" Then MXLog "ERROR: " + MobilChange.LastError End If |
MobilChange.SendSMSEx()
odesílá SMS zprávu, přičemž má větší možnosti než SendSMS(). Syntaxe je:
MobilChange.SendSMSEx( To, Text, Nomodify, fromName, fromEmail, fromSMTP, language, DR, SendNotify, Priority, UserAppId, OtherOptions )
To |
(textový řetězec) Telefonní číslo adresáta. |
Text |
(textový řetězec) Text zprávy. |
NoModify |
(True/False) Pokud je True , text zprávy je odeslán přesně tak, jak byl zadán aplikací.
Pokud je False , text je zpracován pomocí MobilChange stejným zprůsobem, jako
odesílané e-maily, tj. jsou vynechány mezery, překódovaná čeština atd. |
FromName |
(textový řetězec) Jméno uživatele, za kterého aplikace SMS odesílá. Použijte text "$AJmeno_aplikace" (bez uvozovek).
Případné potvrzení o doručení bude posláno na toto jméno. |
FromEmail |
(textový řetězec) E-mail adresa uživatele, za kterého aplikace SMS odesílá, v rámci
lokálního e-mail systému (tj. např EX: adresa u Exchange serveru). Použijte text "$AJmeno_aplikace" (bez uvozovek).
Případné potvrzení o doručení bude posláno na tuto adresu. |
FromSMTP |
(textový řetězec) SMTP adresa uživatele, za kterého aplikace SMS odesílá. Použijte text "$AJmeno_aplikace" (bez uvozovek).
Tato adresa je použita při formátování odchozí SMS, pokud NoModify=False. |
Language |
(textový řetězec) Kód jazyka uživatele, za kterého aplikace SMS odesílá.
Případné potvrzení o doručení bude posláno v tomto jazyce. Použijte text "AA" (bez uvozovek). |
DR |
(True/False) Pokud je True , je vyžadováno potvrzení o doručení.
Pokud je False , nechce aplikace potvrzení o doručení. |
SendNotify |
(True/False) Pokud je True , je vyžadováno potvrzení o odeslání do SMS centra.
Pokud je False , nechce aplikace potvrzení o odeslání do SMS centra. |
Priority |
(textový řetězec) Priorita zprávy. povolené hodnoty: "high", "normal", "low" (bez uvozovek). |
UserAppId |
(textový řetězec) aplikační Id zprávy. Pokud je vyplněno, je obsaženo i v potvrzení o odeslání/doručení/nedoručení, tudíž aplikace ví, které zprávy se potvrzení týkalo. |
Otheroptions |
(textový řetězec) další nastavení, oddělená znakem "|". Jsou k dispozici tato nastavení:
|
(návratová |
Textový řetězec "OK", pokud je vše v pořádku, řetězec "ERROR" v případě, že došlo k chybě. |
MobilChange.LastError
obsahuje textový popis poslední chyby
vzniklé ve skriptovém subsystému MobilChange.
Ukázku použití najdete v popisu funkce MobilChange.SendSMS().
MXLog
se používá k zápisům informací o běhu programu do logu.
Standardně je log pouze ve formě konzolového výpisu při ladícím režimu servisu
UMS.TaskManager. Syntaxe:
MXLog text
Ukázku použití najdete v popisu funkce MobilChange.SendSMS(). Funkce nemá návratovou hodnotu.
Novinka od MobilChange 3.0: Funkce MXLog též může zapisovat své výstupy do textového souboru
"\Mobilchange\log\<datum-YYYYMMDD>.<jméno-skriptu>.txt".
Toto se nastavuje v registry
HKLM\Software\Datasys\MobilChange\Scripting\<jméno-skriptu>\LogLocalSetting
(Dword)HKLM\Software\Datasys\MobilChange\Scripting\<jméno-skriptu>\LogLocalSetting
) v HKLM\Software\Datasys\MobilChange\Scripting\LogGlobalSetting
(Dword).MXSendMail
pošle e-mail zprávu (nezávisle na e-mail systému, který používáte).
Syntaxe:
MXSendMail(SenderName, SenderEmail, RecipientName, RecipientEmail, Subject, Text, Priority)
kde Priority je číslo - 1 (low), 2 (normal) nebo 3 (high). Pokud používáte Lotus Notes gateway, pak se nebere ohled na parametry SenderName, SenderEmail - vezmou se z Notes ID uživatele, pod nímž gateway běží.
Návratová hodnota je textový řetězec
Ukázka použití:
rc = MXSendMail ("SMS server", "smss@vasefirma.cz", "Josef Novak", "jn@volny.cz", "Automaticka odpoved", _ "Vase SMS z cisla " & FromNumber & " byla prijata a zpracovana v " & Now, 2) |
MxDeleteSMS
umožňuje smazat příchozí SMS kdykoliv během zpracování. Standardní stav je tento:
MxDeleteSMS
Ukázka použití nové funkce:
Function OnReceivedSMS( FromNumber, TimeReceived, MessageBody ) MxDeleteSMS ... následuje další zpracování SMS ... |
Přidání skriptu do MobilChange je důkladně popsáno v tomto dokumentu.
Editace směrovacích pravidel se dělá programem MxRouteCfg.
Nyní klikněte na ikonu v levém horním rohu konzolového okna, zvolte "Properties", a na záložce "Layout" nastavte "Screen buffer size" "Height" na 9999. Pak zmáčkněte "OK" a "Save settings for all windows with same title". Na pravé straně konzolového okna tímto přibyl scrollbar a můžete se dívat na starší výpisy. Stiskem klávesy [Pause]/[Break] pozastavíte běžící programy a jejich výstupy, stiskem jakékoli klávesy je opět spustíte.
Ukončení ladícího běhu UMS.TaskManager se provede stiskem kombinace kláves "Ctrl-C" v konzolovém okně (platí i pro níže uvedený způsob).
Další možností je zakázat laděnou úlohu v umsTaskCfg a spouštět ji "ručně" z command promptu takto:
cscript jméno_skriptu.wsf
nebo, pokud požadujeme ladění v debuggeru příkazem:
cscript //X //D jméno_skriptu.wsf
Pokud chcete, aby Vaše skriptová aplikace běžela v samostatném okně (a její výstup se nemísil s výstupem ostatních UMS.TaskManager aplikací), ukončete UMS.TaskManager (stiskem kláves "Ctrl-C") a v programu umsTaskCfg jí (v "běhových" úlohách) vypněte nastavení "shared console".
Upozornění pro uživatele VoiceChange: VoiceChange běží také v prostředí UMS.TaskManager. Tudíž po dobu, kdy UMS.TaskManager bude zastaven (nepoběží ani jako servis, ani v ladícím módu) nebude Vaše VoiceChange obsluhovat příchozí volání!