Navigace:  MobilChange™ - Dokumentace > Administrace a funkčnost MobilChange™ > Úvod do programování MobilChange >

Základní struktura MobilChange skriptu

Předchozí stránkaDomůDalší stránka

listUživatelská funkce OnInit()

listUživatelská funkce OnReceivedSMS()

listUživatelská funkce OnNotification()

listUživatelská funkce OnIddle()

listUživatelská funkce OnShutdown()


 

Uživatelská funkce OnInit()

Při spuštění uživatelského skriptu je po provedení všech potřebných inicializací zavolána funkce 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á
hodnota)

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.

priklad_24Zde 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

upozorneni_24Upozornění: Uvnitř OnInit() NELZE použít funkce MobilChange.SendSMS/SendSMSEx - ještě není nainicializováno vše potřebné pro odeslání SMS.

Uživatelská funkce OnReceivedSMS()

Jakmile je skriptové aplikace doručena nějaká SMS, je zavolána uživatelská funce 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ě.

upozorneni_24Upozornění: Funkce musí být implementována.

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á
hodnota)

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.

priklad_24Uká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, Empty, Empty, Empty, Empty,True,True )

   MXLog "MobilChange.SendSms() = " & rc

   If rc <> "OK" Then

       MXLog "ERROR: " + MobilChange.LastError

   End If

   

   OnReceivedSMS = "OK"    ' return status

End Function

Uživatelská funkce OnNotification()

Jakmile je skriptové aplikace doručena nějaká SMS, potvrzení o odeslání, (ne)doručení atd., je zavolána uživatelská funce OnNotification() a jsou jí předány tyto parametry:

MessageType

Typ události. Možné hodnoty:

sent_ok_wait - Čeká na doručenku.

sent_ok - Zpráva odeslána, Doručenka nevyžadována.

sent_err_send - Chyba při odesílání.

e_nosms - Uživatel nemá právo odeslat zprávu.

e_norule - Nenalezeno pravidlo pro odeslání.

e_dailycounter - Uživatel překročil svůj denní limit ceny odeslaných SMS.

e_monthlycounter - Uživatel překročil svůj měsíční limit ceny odeslaných.

sms e_linecounter - Uživatel překročil denní limit počtu SMS linky.

e_norule - Neplatné telefonní číslo (prázdný řetězec).

e_createusersp - Nelze vytvořit uživatele - chyba v uložené proceduře.

e_createuser - Nelze vytvořit uživatele, jelikož je to zakázáno v nastavení MobilChange.

e_expired - Vypršela doba platnosti zprávy.

e_invalidpdu - Chyba při parsování PDU.

e_drtimeout - Doručenka nepřišla v časovém limitu: SMS byla odesláno do SMS centra a SMS centrum SMS přijalo, ale do konfigurací daného limitu nepřišla doručenka ani nedoručenka.

e_confirmtimeout - Potvrzení ze SMSC nepřišlo v časovém limitu. SMS byla odesláno do SMS centra, ale SMS centrum do stanoveného limitu přijetí SMS nepotvrdila.

sent_ok_dr - Přijata doručenka.

sent_err_ndr - Přijata nedoručenka.

e_postponed - Odeslání odloženo (např. dvě sms na stejné číslo rychle za sebou - druhá bude pozdržena).

e_reroute - Zpráva k přesměrování, nepodařilo se odeslat. Například síťová chyba při odesílání požadavku do SMS centra. SMS centrum SMS vůbec nedostalo.

rcv_sms - Příchozí zpráva.

e_multipart - Nedošly všechny dílky příchozí vícedílné zprávy v požadovaném čase.

Attr

Kolekce atributů oznámení, jedná se o instanci objektu FxExtObj.DSVariantCol. Kolekce může obsahovat tyto položky:

Název atributu

Význam u reportu k odchozí zprávě

Význam u příchozí zprávy

msg_type

Typ oznámení - jedná se o stejnou hodnotu jako má parametr MessageType.

Typ oznámení - jedná se o stejnou hodnotu jako má parametr MessageType.

number

Normalizované telefonní číslo protistrany - příjemce SMS. Např.: 420607869081.

Telefonní číslo protistrany - odesilatele SMS. Např.: +420607869081.

name

"Zobrazované jméno" protistrany (tj. mobilu identifikovaného v "number"), pokud je známo. Jinak prázdné.

"Zobrazované jméno" protistrany (tj. mobilu identifikovaného v "number"), pokud je známo. Jinak prázdné.

tonumber

 

NEnormalizované naše telefonní číslo - tj. číslo, na které odesilatel z mobilu poslal zprávu.

time

Čas odeslání původní MT SMS, ke které se událost vztahuje - načítá se z MX_MAIL_OUT.MAIL_IN_MSG_SENT, uvádí se ve formátu yyyy/mm/dd HH:MM:SS .

Pro příchozí zprávy nemá význam. Z důvodu zpětné kompatibility se plní hodnotou stejnou jako atribut rcv.

rcv

Čas, ke kterému se report vztahuje (tj. např. kdy bylo doručeno) - načítá se z MX_MAIL_OUT.TIME_RECEIVED a uvádí se ve formátu yyyy/mm/dd HH:MM:SS.

Čas události (dle konkrétního ovladače a typu události to může být buď čas dle SMS centra a nebo čas přijetí události do MX) - načítá se z MX_MAIL_OUT.TIME_RECEIVED a uvádí se ve formátu yyyy/mm/dd HH:MM:SS.

operator

Kód operátora jako pětimístné číslo, tj. 23001. Dříve jméno operátora (obecný text hlášený GSM modemem jako "jméno sítě"), do kterého byla SMS odeslána.

Kód operátora jako pětimístné číslo, tj. 23001. Dříve jméno operátora (obecný text hlášený GSM modemem jako "jméno sítě"), ze kterého SMS přišla.

line

Jméno linky, přes kterou SMS odešla/neodešla.

Jméno linky, přes kterou SMS dorazila

cost

Cena za odeslání, textově, desetinná tečka.

 

num

Počet dílků, na které se odesílaná zpráva rozlomila.

 

text

Text odeslané zprávy.

Text přijaté zprávy.

drtext

Text reportu o odeslání/neodeslání, tam kde má smysl (kde je operátorem vracen nějaký kód/text).

 

user_app_id

Přesná kopie user_app_id zadaného při odeslání dané SMS (pro párování); u Premium ovladačů má vnitřní logiku a přesně daný formát.

U standard ovladačů: nic. U Premium ovladačů nese informaci o příchozí SMS zprávě (cena, ID na straně operátora atd).

(návratová
hodnota)

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.

Tato funkce je preferována oproti funkce OnReceived(), protože má více parametrů. Její implementace však není povinná.

Uživatelská funkce OnIddle()

Funkce 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á
hodnota)

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.

priklad_24Ukázka funkce OnIddle():

Function OnIddle

   ' There can be done anything...

   OnIddle = "OK"          ' return status

End Function

Uživatelská funkce OnShutdown()

Funkce OnShutdown() je volána systémem při ukončení služby UMS.TaskManager, například tedy při shutdownu počítače. Umožňuje uzavřít databázová spojení, smazat pracovní soubory.

(návratová
hodnota)

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.

priklad_24Ukázka funkce OnShutdown():

Function OnShutdown

   ' There can be done anything...

   OnShutdown = "OK"          ' return status

End Function