<%@ WebService Language="C#" Class="SmsNotificationInterfaceService" %> using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Collections.Generic; using SMSCenter.Gateway.Incoming; using SMSCenter.Gateway.Messages; using SMSCenterWebService.IncomingServices; /// [System.Web.Services.WebServiceBindingAttribute(Name = "SmsNotificationInterfaceSoapBinding", Namespace = "http://argela.com.tr/sane/interfaces/v2/argelasms/notify")] [SoapDocumentService(RoutingStyle = SoapServiceRoutingStyle.RequestElement)] // This is very important. Do not forget to include. [WebService(Namespace = "http://argela.com.tr/sane/interfaces/v2/argelasms/notify")] public class SmsNotificationInterfaceService : System.Web.Services.WebService { /// [System.Web.Services.WebMethodAttribute()] [System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace = "http://argela.com.tr/sane/interfaces/v2/argelasms/notify", ResponseNamespace = "http://argela.com.tr/sane/interfaces/v2/argelasms/notify")] public void notifyDeliveryReport(string sessionId, string requestIdentifier, DeliveryInformation deliveryInfo) { string cmdtext = "Update Recipients SET StatusId=@StatusId , DeliveryDate=@DeliveryDate WHERE RemoteMsgId=@RemoteMsgId"; RecipientStatus status; switch (deliveryInfo.deliveryStatus) { case DeliveryStatus.Delivered: status = RecipientStatus.Delivered; break; case DeliveryStatus.DeliveryUncertain: status = RecipientStatus.Delivered; break; case DeliveryStatus.DeliveryImpossible: status = RecipientStatus.RejectByRemote; break; case DeliveryStatus.MessageWaiting: status = RecipientStatus.WaitOnRemote; break; default: throw new ApplicationException(string.Format("Unknow status '{0}' ", deliveryInfo.deliveryStatus)); break; } /* SMSCenter.MainSystem.Context.Databases.System.ExecuteNonQuery( //SMSCenter.MainSystem.Context.Databases.Gateway.ExecuteNonQuery( cmdtext, System.Data.CommandType.Text, new KeyValuePair("@StatusId",(int)status), new KeyValuePair("@DeliveryDate",(status==RecipientStatus.Delivered)?(object)DateTime.UtcNow:DBNull.Value), new KeyValuePair("@RemoteMsgId",requestIdentifier) ); */ } /// [System.Web.Services.WebMethodAttribute()] [System.Web.Services.Protocols.SoapRpcMethodAttribute(Action = "", RequestNamespace = "http://argela.com.tr/sane/interfaces/v2/argelasms/notify", ResponseNamespace = "http://argela.com.tr/sane/interfaces/v2/argelasms/notify")] public void notifySmsReception(string sessionId, string smsServiceActivationNumber, string senderAddress, string message) { IncomingMessage incomingMessage = new IncomingMessage(); incomingMessage.Channel = "avea"; incomingMessage.UserId = 350100002; incomingMessage.RouteKey = "3396"; incomingMessage.RemoteMsgId = sessionId; incomingMessage.ReciveDate = DateTime.UtcNow; incomingMessage.SendDate = incomingMessage.ReciveDate; incomingMessage.Content = message; incomingMessage.SenderAddress = senderAddress; incomingMessage.RecipientAddress = smsServiceActivationNumber; int _messageid = SMSCenter.MainSystem.Context.Gateway.Incoming.SaveIncomingMessage(incomingMessage); incomingMessage.MessageId = _messageid; RedirectIncomingMessage(incomingMessage.UserId, incomingMessage); //System.IO.StreamWriter file2 = new System.IO.StreamWriter(@"D:\SMSCenter2\logs\file.txt", true); //file2.WriteLine(string.Format("AVEA_INCOMING_NotifySmsReception sessionId:{0}, smsServiceActivationNumber:{1}, senderAddress:{2}, message:{3}", sessionId, smsServiceActivationNumber, senderAddress, message)); //file2.Close(); } private void RedirectIncomingMessage(int user, IncomingMessage message) { ReceiverServiceV2 _rs = new ReceiverServiceV2("http://dprx.dyo.com.tr/Receiver.asmx"); _rs.NewIncomingMessageV2(message.ReciveDate, message.SenderAddress, message.RecipientAddress, message.Content, message.MessageId.ToString(), message.Channel); } /// [System.Xml.Serialization.SoapTypeAttribute("DeliveryInformation", "http://datatypes.common.v2.interfaces.sane.argela.com.tr")] public class DeliveryInformation { /// public string address; /// public DeliveryStatus deliveryStatus; } /// [System.Xml.Serialization.SoapTypeAttribute("DeliveryStatus", "http://datatypes.common.v2.interfaces.sane.argela.com.tr")] public enum DeliveryStatus { /// Delivered, /// DeliveryUncertain, /// DeliveryImpossible, /// MessageWaiting, } }