Queue om sms berichten te zenden. Berichten worden tijdelijk in global opgeslagen en verwerkt. persistent vhLib.Macro 1 %Persistent 0 SMSGateway@vanhoecke.be Interne klanten zijn NV,BV en Halux 4682;9544;7587 Het nummer van de onvanger van het bericht %String 1 Het nummer van de afzender van het bericht %String Volledig bericht mag groter zijn dan 160kar %String 1 Email adres voor bevestiging %String Email adres voor bevestiging %String Email adres voor bevestiging Res.InternePersoon Prioriteit van verzenden van bericht 1 low, 2=medium, 3=high %String Wordt verhoogt bij elke foute transmissie Std=0 maximaal = 3 %String WS.TAPI.SMSMessageSingle children Parent 1 Leeg = OK, alle singles zijn verstuurd alle andere geven in tekstvorm de fout weer %String %TimeStamp %TimeStamp Recipients : $LB van GSM-nrs Sender : Een Telnr Message : String met de paragrafen met $C(13) gescheiden SenderEmail : optioneel emailadres voor de feedback 1 Recipients:%List,Sender:%String,Message:%String,SenderEmail:%String,Creator:Res.InternePersoon %String 0 Do . Set Ok=Msg.%Save() . Set Status=$S(Ok=1:Msg.%Id(),1:$$ParseStatus^vhLib(Ok)) Else Do . Set Status="Geen bericht aangemaakt" Do:Status?1.N ..SendAllAsJob() ; SendAll uitvoeren in background Quit Status ]]> TelNr %String Recipient 0:155,$L(Msg)>160:155,1:160) . Set Single.Message=$E(Msg,1,Lengte) . Quit:Single.Message="" . Set Single.Status="NEW" . Set $E(Msg,1,Lengte)="" . Set Cnt=Cnt+1 . Set Single.VolgNr=Cnt . Set Ok=..Singles.Insert(Single) Set ..SingleCount=Cnt ]]> d ClassMethod^vhLib("WS.TAPI.SMSMessage","SendAll") 1 1 '') and (Retry<3) ORDER by Priority desc) &SQL(OPEN cSendAll) For &SQL(FETCH cSendAll) Quit:(SQLCODE) Do . Set Msg=..%OpenId(ID) . Do Msg.Send() . Do:(Msg.Status="")||(Msg.Retry>2) Msg.SendMailReport() &SQL(CLOSE cSendAll) Lock -SMSService Set $ZTRAP="" Quit ERRORTRAP Do MailError^vhLib($LB("WRO@VanHoecke.be","PV@VanHoecke.be")) Lock -SMSService ZQuit ; volledig stoppen ]]> '')and Parent->ID=:ParentID ORDER by VolgNr) &SQL(OPEN cSendMsg) Set FullStatus="" For &SQL(FETCH cSendMsg) Quit:(SQLCODE) Do . ;d WL^vhDBG("SINGLE"_ID) . Set Single=##class(WS.TAPI.SMSMessageSingle).%OpenId(ID) . Set Status=Single.Send() . Set:Status'="" FullStatus=Status Set ..Status=FullStatus Set:..Status'="" ..Retry=..Retry+1 Set ..ZendTijdStip=$ZDT($H,3) Set Ok=..%Save() &SQL(CLOSE cSendMsg) ]]> ID=:ParentID ORDER by VolgNr) &SQL(OPEN cSendReport) Set FullStatus="" Set Body="" For &SQL(FETCH cSendReport) Quit:(SQLCODE) Do . Set Single=##class(WS.TAPI.SMSMessageSingle).%OpenId(ID) . Set Body=Body_Single.StatusReport()_$$$CRLF &SQL(CLOSE cSendReport) Set:$isObject(..Creator) Body=Body_$$$CRLF_"SMS Creator: "_..Creator.Naam_" Creatietijdstip: "_..CreatieTijdStip Set Body=Body_$$$CRLF_"Status: "_$$$CRLF_..Status Set Body=Body_$$$CRLF_$$$CRLF_"Message: "_$$$CRLF_..Message Set from="SMSGateway@vanhoecke.be" Set Subj="SMS Delivery report (ID="_..%Id()_")" If ..SenderEmail="" Do . Set to=$lb("itadmin@vanhoecke.be") . Set Subj=Subj_" (emailaddress sender empty)" Else Do . Set to=$lb(..SenderEmail) //Set to=$S(..SenderEmail'="":$lb(..SenderEmail,"itadmin@vanhoecke.be"),1:$lb("itadmin@vanhoecke.be")) Do SendMiniMail^vhLib(from,to,Subj,Body,,,,,) ]]> d ##class(WS.TAPI.SMSMessage).test() 1 %String 0 %Library.CacheStorage ^WS.TAPI.SMSMessageD SMSMessageDefaultData ^WS.TAPI.SMSMessageD ^WS.TAPI.SMSMessageI ^WS.TAPI.SMSMessageS listnode %%CLASSNAME CreatieTijdStip Message Priority Recipients Retry Sender SenderEmail SingleCount Status ZendTijdStip Creator