Ejemplo n.º 1
0
        public override int Send(byte mode = 0)
        {
            string resultData = "";
            int    ret        = 0;

            resultMsg = "Missing/invalid phone number and/or message";

            if (PhoneNumber.Length < 10 || MessageBody.Length < 3)
            {
                return(10);
            }

            if (provider == null)
            {
                if (mode == (byte)Constants.TransactionType.Test)                   // Testing
                {
                    provider             = new Provider();
                    provider.BureauCode  = ((int)Constants.MessageProvider.ClickaTell).ToString().PadLeft(3, '0');
                    provider.MerchantKey = "E8gSxksaQpmEDZ4OvabmlQ==";
                    provider.BureauURL   = "https://platform.clickatell.com/messages/http/send";
                }
                else if (LoadProvider() != 0)
                {
                    return(15);
                }
            }

            try
            {
                ret       = 20;
                resultMsg = "Missing/invalid message provider details";
                string sendURL = provider.BureauURL;

                Tools.LogInfo("Send/5", "SMS to " + phoneNumber, Constants.LogSeverity, this);

                if (ProviderCode == (int)Constants.MessageProvider.ClickaTell)
                {
                    sendURL = sendURL + "?apiKey=" + Tools.URLString(provider.MerchantKey)
                              + "&to=" + Tools.URLString(phoneNumber)
                              + "&content=" + Tools.URLString(messageBody);
                }

                else if (ProviderCode == (int)Constants.MessageProvider.GlobalSMS)
                {
                    sendURL = sendURL + "?key=" + Tools.URLString(provider.MerchantKey)
                              + "&contacts=" + Tools.URLString(phoneNumber)
                              + "&msg=" + Tools.URLString(messageBody)
                              + "&senderid=" + Tools.URLString(provider.MerchantUserID)
                              + "&type=text";
                }
                else
                {
                    return(25);
                }

                Tools.LogInfo("Send/88", "Provider = " + ProviderCode.ToString() + ", sendURL = " + sendURL, Constants.LogSeverity, this);

                resultMsg = "";
                ret       = 30;
                HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(sendURL);
                ret = 60;
                HttpWebResponse webResponse = (HttpWebResponse)webReq.GetResponse();
                ret = 70;
                using (StreamReader streamIn = new StreamReader(webResponse.GetResponseStream()))
                    resultData = streamIn.ReadToEnd().Trim();

                string resultOK = "false";

                if (ProviderCode == (int)Constants.MessageProvider.GlobalSMS)
                {
                    resultOK     = "true";
                    resultDetail = resultData;
                    resultCode   = resultData;
                    if (resultCode.EndsWith("<br />"))
                    {
                        resultCode = (" " + resultCode).Substring(0, resultCode.Length - 5).Trim();
                    }
                    if (resultCode.StartsWith("<br />"))
                    {
                        resultCode = (resultCode + " ").Substring(6).Trim();
                    }
                }
                else if (ProviderCode == (int)Constants.MessageProvider.ClickaTell)
                {
                    if (resultData.Length > 0 && resultData.StartsWith("{"))                       // JSON
                    {
                        resultID     = Tools.JSONValue(resultData, "apiMessageId");
                        resultOK     = Tools.JSONValue(resultData, "accepted");
                        resultCode   = Tools.JSONValue(resultData, "errorCode");
                        resultDetail = Tools.JSONValue(resultData, "errorDescription");
                        resultMsg    = Tools.JSONValue(resultData, "error");
                    }
                    else if (resultData.Length > 0 && resultData.StartsWith("<"))                       // XML
                    {
                        XmlDocument h = new XmlDocument();
                        h.Load(resultData);
                        resultID     = Tools.XMLNode(h, "apiMessageId");
                        resultOK     = Tools.XMLNode(h, "accepted");
                        resultCode   = Tools.XMLNode(h, "errorCode");
                        resultDetail = Tools.XMLNode(h, "errorDescription");
                        resultMsg    = Tools.XMLNode(h, "error");
                        h            = null;
                    }
                    if (resultID.ToUpper() == "NULL")
                    {
                        resultID = "";
                    }
                    if (resultCode.ToUpper() == "NULL")
                    {
                        resultCode = "";
                    }
                    if (resultDetail.ToUpper() == "NULL")
                    {
                        resultDetail = "";
                    }
                    if (resultMsg.ToUpper() == "NULL")
                    {
                        resultMsg = "";
                    }
                }

                Tools.LogInfo("Send/199", "SMS to " + phoneNumber + " (" + resultData + ")", Constants.LogSeverity, this);

                if (resultOK.ToUpper() == "TRUE")
                {
                    return(0);
                }

                return(199);
            }
            catch (Exception ex)
            {
                Tools.LogException("Send/301", "ret=" + ret.ToString() + ", " + resultData + "", ex, this);
                resultMsg = ex.Message;
            }
            return(ret);
        }