
Az alkalmazás arra képes, hogy folyamatosan monitorozza az SAP Business One adatbázisát és ha olyan tranzakciót talál, amelyik megegyezik valamely a programban beállított szabállyal, akkor küld egy e-mail vagy sms értesítőt a - paraméterekben meghatározott tartalommal - a címzettnek.
A legtöbb beszélgetőtársamnak az SMS küldés keltette fel az érdeklődését és nem nagyon értették, hogy miként lehet ezt megoldani anélkül, hogy egy mobiltelefont kapcsolnánk össze a szerverrel.
A megoldás igazából nagyon egyszerű: léteznek olyan internetes szolgáltatások, ahol előre megvásárolhatunk adott számú sms-t amelyeket egy speciális interfészen (http, ftp, soap, smtp, stb.) keresztül küldhetünk el a címzetteknek. Ilyen szolgáltatást nyújt például a Clickatell vagy a Voipbuster, és még persze sokan mások.
Hogy ne csak a programunk rejtett reklámjának tűnjön ez a bejegyzés (egyébként ingyenes ;-) egy nagyon leegyszerűsített példán keresztül nézzük meg közelebbről, miként lehet ezt technikailag kivitelezni.
1. lépés: A feladat meghatározása
Küldjünk értesítést a vevői rendelés rögzítéséről az adott vevőnek.2. lépés: A szabály definiálása és az üzenet küldése
SAP Business One-ban a legegyszerűbben az SBO_SP_TransactionNotification tárolt eljárásban lehet értesülni arról, ha valamilyen dokumentumot rögzítettek a rendszerbe. Aki már látta ezt az eljárást azt tudja, hogy vizsgálni kell azt, hogy milyen adaton és milyen műveletet végzett az adott tranzakció.Anélkül, hogy nagyon elmagyaráznám a részleteket az alábbi IF kifejezéssel állapíthatjuk meg, hogy egy új rendelést rögzítettek éppen vagy sem:
IF (@object_type = '17' and @transaction_type in ('A')) BEGIN select oli_sendsms(c.cellular, 'T. Ügyfelünk! Tájékoztatjuk, hogy '+ convert(char(12), d.doctotal)+'Ft értékben rendelést rögzítettünk cége számára. Hivatkozási szám:'+ convert(char(10),d.DocNum)+'. Tisztelettel: OnLiveIT') from ordr d, ocrd c where d.DocEntry=@list_of_cols_val_tab_del and d.cardcode=c.cardcode and c.cellular is not null END
A BEGIN - END között látható script elkészíti az SMS szövegét és elküldi a következő lépésben ismertetésre kerülő függvény segítségével az üzenetet.
3. lépés: SMS küldés
Mivel úgy szeretném megoldani a feladatot, hogy nem használok semmilyen fejlesztő eszközt, csak az SQL szerver lehetőségeit, a HTTP protokolon keresztüli SMS küldést fogom bemutatni.Ehhez létrehozok egy függvényt amelyik az első paraméterben megadott telefonszámra elküldi a második paraméterben átadott szöveget.
Valahogy így fog kinézni:
create function oli_sendsms (@to varchar(50), @text varchar(140)) returns nvarchar(100) begin Declare @Object as int, @ResponseText as varchar(1000), @url as varchar(1000); select @url = 'http://api.clickatell.com/http/sendmsg?'+ 'user=onliveit&password=xxxxxxxxx&api_id=99999999&'+ 'from=365409656&to='+@to+'&text='+@text Exec master..sp_OACreate 'MSXML2.XMLHTTP', @Object OUT; Exec master..sp_OAMethod @Object, 'open', NULL, 'get', @url, 'false' Exec master..sp_OAMethod @Object, 'send' Exec master..sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT Exec master..sp_OADestroy @Object return @ResponseText end
A fenti függvény definícióból látszik, hogy semmi bonyolult dologra nincs szükség az SMS küldéséhez csak megfelelően össze kell rakni a linket és meghívni a szükséges OLE Objektumot.
Az objektum híváshoz azonban először engedélyezni kell az SQL szerver számára, melyet többek között az alábbi scriptek segítségével lehet megtenni:
sp_configure 'show advanced options', 1 GO RECONFIGURE GO sp_configure 'Ole Automation Procedures', 1 GO RECONFIGURE GO
Összegzés
A fenti kis példával nem akartam egy komplex megoldást átnyújtani, inkább csak meg akartam adni a kezdőlökést, hogy könnyebb legyen elindulni, ha valakinek kedve van kipróbálni az SMS küldésben rejlő lehetőségeket.Remélem sikerült azt is megmutatni, hogy egy olyan komplex rendszer, mint az SAP Business One, milyen egyszerűen kiegészíthető olyan funkciókkal melyek első hallásra nagyon bonyolultnak tűnnek.
Bízom benne, hogy a hamarosan megnyíló pályázati források sok cég számára teszik lehetővé az informatikai infrastruktúrájuk modernizációját, hogy minél több hatékony eszköz álljon a kreatív cégvezetők szolgálatában!
Nincsenek megjegyzések:
Megjegyzés küldése