Sunteți pe pagina 1din 5

using

using
using
using
using

System;
System.Collections.Generic;
System.Text;
DiafaanMessageServer;
System.Collections;

namespace Macter.Diafan.ScirptGateway
{
public class ZongGatewayScript : IScript
{
/// <summary>
/// Execute a Soap WebService call
/// </summary>
public System.Xml.XmlDocument SendSingleSMS(string to, string msg)
{
System.Net.HttpWebRequest request = CreateWebRequest();
System.Xml.XmlDocument soapEnvelopeXml = new System.Xml.XmlDocument(
);
soapEnvelopeXml.LoadXml(@"
<?xml version='1.0' encoding='utf-8'?>
<soap12:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSc
hema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap12='http:/
/www.w3.org/2003/05/soap-envelope'>
<soap12:Body>
<SendSingleSMS xmlns='http://tempuri.org/'>
<Src_nbr>923105330261</Src_nbr>
<Password>mil@zong0261</Password>
<Dst_nbr>" + to + @"</Dst_nbr>
<Mask />
<Message>" + msg + @"</Message>
</SendSingleSMS>
</soap12:Body>
</soap12:Envelope>");
using (System.IO.Stream stream = request.GetRequestStream())
{
soapEnvelopeXml.Save(stream);
}
using (System.Net.WebResponse response = request.GetResponse())
{
using (System.IO.StreamReader rd = new System.IO.StreamReader(re
sponse.GetResponseStream()))
{
string soapResult = rd.ReadToEnd();
System.Xml.XmlDocument soapResultx = new System.Xml.XmlDocum
ent();
soapResultx.LoadXml(soapResult);
return soapResultx;
}
}
}
/// <summary>
/// Create a soap webrequest to [Url]
/// </summary>
/// <returns></returns>
public System.Net.HttpWebRequest CreateWebRequest()
{
System.Net.HttpWebRequest webRequest = (System.Net.HttpWebRequest)Sy
stem.Net.WebRequest.Create(@"http://reach.zong.com.pk/csws/Service.asmx");

webRequest.Headers.Add(@"SOAP:Action");
webRequest.ContentType = "text/xml;charset=\"utf-8\"";
webRequest.Accept = "text/xml";
webRequest.Method = "POST";
return webRequest;
}
private IScriptHost host = null;
public void OnLoad(IScriptHost host)
{
this.host = host;
}
public void OnUnload()
{
//
// TODO: Add cleanup code, make sure to remove (Timer) event handler
s here
//
}
private void OnMessageToSend(string recordId, string toAddress, string f
romAddress,
string message, string messageType)
{
//if (messageType == "text-zmi")
//{
System.Xml.XmlDocument ret = SendSingleSMS(toAddress, message);
switch (ret.ChildNodes[1].ChildNodes[0].ChildNodes[0].ChildNodes
[0].ChildNodes[0].InnerXml)
{
case "1":
PostSendResult(recordId, null,
StatusCode.Sent, ret.ChildNodes[1].ChildNodes[0].Chi
ldNodes[0].ChildNodes[0].ChildNodes[1].InnerXml,
"", "", false);
//PostDispatchMessage(recordId, toAddress, fromAddress,
message, messageType, "GSM Modem Gateway", "");
break;
default:
PostSendResult(recordId, null,
StatusCode.SendError, null,
ret.ChildNodes[1].ChildNodes[0].ChildNodes[0].ChildN
odes[0].ChildNodes[0].InnerXml,
ret.ChildNodes[1].ChildNodes[0].ChildNodes[0].ChildN
odes[0].ChildNodes[1].InnerXml, false);
break;
}
//}
//else
//
PostDispatchMessage(recordId, toAddress, fromAddress, message,
messageType, "", "");
}
private void OnStatusRequest(string messageId)
{
// TODO: Send status request query

}
#region
private
private
private

Gateway Script helper functions


enum StatusCode { Sent = 200, Received = 201, SendError = 300 }
enum EventLog { Information = 0, Warning = 1, Error = 2 }
enum TraceLog { Information = 0, Send = 1, Receive = 2 }

public void OnMessagePacket(Hashtable messagePacket)


{
if (GetPacketString(messagePacket, "PacketName", "") == "MessageOut"
)
{
OnMessageToSend(GetPacketString(messagePacket,
GetPacketString(messagePacket,
GetPacketString(messagePacket,
GetPacketString(messagePacket,
GetPacketString(messagePacket,

"RecordId", ""),
"To", ""),
"From", ""),
"Message", ""),
"MessageType", ""

));
}
else if (GetPacketString(messagePacket, "PacketName", "") == "Status
Request")
{
OnStatusRequest(GetPacketString(messagePacket, "MessageId", ""))
;
}
}
private void PostReceiveMessage(string toAddress, string fromAddress, st
ring messageText,
string messageType, string messageId, Da
teTime sendTime,
DateTime receiveTime)
{
Hashtable messagePacket = new Hashtable();
messagePacket.Add("PacketName", "MessageIn");
messagePacket.Add("To", toAddress);
messagePacket.Add("From", fromAddress);
messagePacket.Add("Message", messageText);
messagePacket.Add("MessageType", messageType);
messagePacket.Add("MessageId", messageId);
messagePacket.Add("SendTime", sendTime.Ticks.ToString());
messagePacket.Add("ReceiveTime", receiveTime.Ticks.ToString());
host.PostMessagePacket(messagePacket);
}
private void PostDispatchMessage(string recordId, string toAddress, stri
ng fromAddress,
string message, string messageType,
string gateway,
string backupGateway)
{
Hashtable messagePacket = new Hashtable();
messagePacket.Add("PacketName", "DispatchMessage");
messagePacket.Add("RecordId", recordId);
messagePacket.Add("To", toAddress);
messagePacket.Add("From", fromAddress);
messagePacket.Add("Message", message);
messagePacket.Add("MessageType", messageType);
messagePacket.Add("Gateway", gateway);
messagePacket.Add("BackupGateway", backupGateway);

host.PostMessagePacket(messagePacket);
}
private void PostSendResult(string recordId, string messageId, StatusCod
e status,
string statusText, string errorCode, string
errorText, bool sendStatusRequest)
{
Hashtable messagePacket = new Hashtable();
messagePacket.Add("PacketName", "MessageOutResult");
messagePacket.Add("RecordId", recordId);
messagePacket.Add("MessageId", messageId);
messagePacket.Add("StatusCode", ((int)status).ToString());
messagePacket.Add("StatusText", statusText);
messagePacket.Add("ErrorCode", errorCode);
messagePacket.Add("ErrorText", errorText);
if (sendStatusRequest)
{
messagePacket.Add("SendStatusRequest", "1");
}
else
{
messagePacket.Add("SendStatusRequest", "0");
}
host.PostMessagePacket(messagePacket);
}
private void PostSendResultUpdate(string messageId, StatusCode status, s
tring statusText,
string errorCode, string errorText, Da
teTime receiveTime)
{
Hashtable messagePacket = new Hashtable();
messagePacket.Add("PacketName", "MessageOutResultUpdate");
messagePacket.Add("MessageId", messageId);
messagePacket.Add("StatusCode", ((int)status).ToString());
messagePacket.Add("StatusText", statusText);
messagePacket.Add("ErrorCode", errorCode);
messagePacket.Add("ErrorText", errorText);
if (status == StatusCode.Received) messagePacket.Add("ReceiveTime",
receiveTime.Ticks.ToString());
host.PostMessagePacket(messagePacket);
}
private void PostEventLog(string eventMessage, string eventDescription,
EventLog eventType)
{
Hashtable messagePacket = new Hashtable();
messagePacket.Add("PacketName", "EventLog");
messagePacket.Add("EventType", ((int)eventType).ToString());
messagePacket.Add("EventMessage", eventMessage);
messagePacket.Add("EventDescription", eventDescription);
host.PostMessagePacket(messagePacket);
}
private void PostTraceLog(string traceLogMessage, TraceLog logType)
{
Hashtable messagePacket = new Hashtable();
messagePacket.Add("PacketName", "TraceLog");
messagePacket.Add("TraceLogType", ((int)logType).ToString());

messagePacket.Add("TraceLogMessage", traceLogMessage);
host.PostMessagePacket(messagePacket);
}
private string GetPacketString(Hashtable hashtable, string key, string d
efaultValue)
{
try
{
return (string)hashtable[key];
}
catch { }
return defaultValue;
}
private int GetPacketInteger(Hashtable hashtable, string key, int defaul
tValue)
{
try
{
return Convert.ToInt32((string)hashtable[key]);
}
catch { }
return defaultValue;
}
private DateTime GetPacketDateTime(Hashtable hashtable, string key, Date
Time defaultValue)
{
try
{
return new DateTime(Convert.ToInt64((string)hashtable[key]));
}
catch { }
return defaultValue;
}
#endregion
}
}

S-ar putea să vă placă și