%@ 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,
}
}