예제 #1
0
        public bool SendSms(Sms sms)
        {
            SmsConfig config = GetConfig();

            if (config != null)
            {
                //"[email protected]:project", "novohealth123"
                SmsProxy      smsengine = new SmsProxy(config.UserName, config.Password);
                List <string> tonumber  = new List <string>();
                tonumber.Add(sms.Msisdn);
                sms.Status = SmsStatus.Pending;
                SmsEngine.ServiceReference1.ResponseInfo resp = SmsProxy.SendSms(sms.FromId, tonumber, sms.Message, Convert.ToDateTime(sms.DeliveryDate));

                sms.ServerCode = resp.ErrorCode.ToString();

                if (resp.ErrorCode.Equals(0))
                {
                    sms.ServerResponse = resp.ExtraMessage;
                    sms.Status         = SmsStatus.Delivered;
                }
                else
                {
                    sms.ServerResponse = resp.ErrorMessage;
                }

                Savemessage(sms);
                return(true);
            }
            return(false);
        }
예제 #2
0
        private void Send(SmsProxy sms)
        {
            if (string.IsNullOrEmpty(sms.Body))
            {
                throw new SmsFormatException("Body of message cannot be empty");
            }

            if (sms.Recipients.Count == 0)
            {
                throw new SmsFormatException("A minimum of one recipient is required");
            }

            if (string.IsNullOrEmpty(sms.From))
            {
                throw new SmsFormatException("From field cannot be empty");
            }

            //foreach (var recipient in sms.Recipients)
            //{
            //    if (!recipient.PhoneNumber.IsValidNGNMobile())
            //        throw new SmsFormatException("Invalid Mobile number - " + recipient.PhoneNumber);
            //}

            _smsRepository.Add((OutboundSms)sms);

            _smsRepository.CommitChanges();
        }
예제 #3
0
        public static SmsProvider[] QueryProvider(string server, string userName, string password)
        {
            SmsProvider[] providers;

            var binding =
                new BasicHttpsBinding {
                AllowCookies = true
            };

            var vimEndpoint =
                new EndpointAddress(string.Format("https://{0}/sdk/vimService", server));

            var smsEndpoint =
                new EndpointAddress(string.Format("https://{0}/sms/sdk", server));

            ServicePointManager.ServerCertificateValidationCallback += (sender, x509Certificate, chain, errors) => true;

            using (var client = new VimPortTypeClient(binding, vimEndpoint))
            {
                client.Open();

                var vimProxy = new VimProxy(client);

                string sessionId;

                var content =
                    vimProxy.RetrieveServiceContent();

                var credential =
                    new NetworkCredential {
                    UserName = userName, Password = password
                };

                vimProxy.Login(content.sessionManager, credential, null, out sessionId);

                using (var smsClient = new SmsPortTypeClient(binding, smsEndpoint))
                {
                    smsClient.Open();

                    var smsProxy = new SmsProxy(smsClient, sessionId);

                    var storageManager =
                        smsProxy.QueryStorageManager();

                    var providerRefs =
                        smsProxy.QueryProvider(storageManager);

                    providers =
                        providerRefs.Select(smsProxy.QueryProviderInfo).Select(GetProvider).ToArray();

                    smsClient.Close();
                }

                vimProxy.Logout(content.sessionManager);

                client.Close();
            }

            return(providers);
        }
예제 #4
0
        public void Send(string from, List <string> phoneNumbers, string body)
        {
            var sms = new SmsProxy
            {
                Body       = body,
                From       = from,
                Recipients = new List <SmsRecipientProxy>()
            };

            foreach (var phoneNumber in phoneNumbers.Where(phoneNumber => !string.IsNullOrEmpty(phoneNumber)))
            {
                sms.Recipients.Add(new SmsRecipientProxy
                {
                    PhoneNumber = phoneNumber
                });
            }

            Send(sms);
        }
예제 #5
0
        public static SmsProvider RegisterProvider(
            ProviderElement providerConfiguration,
            X509Certificate2 vasaCertificate,
            String vCenter,
            String vCenterUserName,
            String vCenterPassword)
        {
            SmsProvider provider;

            var smsData = new VasaProviderSpec
            {
                name        = providerConfiguration.Name,
                url         = String.Format("{0}", providerConfiguration.VasaVersionXmlUri),
                username    = providerConfiguration.Credentials.Login,
                password    = providerConfiguration.Credentials.Password,
                certificate = Convert.ToBase64String(vasaCertificate.RawData)
            };

            var binding = new BasicHttpsBinding {
                AllowCookies = true
            };
            var vimEndpoint = new EndpointAddress(string.Format("https://{0}/sdk/vimService", vCenter));
            var smsEndpoint = new EndpointAddress(string.Format("https://{0}/sms/sdk", vCenter));

            ServicePointManager.ServerCertificateValidationCallback += (sender, x509Certificate, chain, errors) => true;

            using (var client = new VimPortTypeClient(binding, vimEndpoint))
            {
                client.Open();

                var vimProxy = new VimProxy(client);

                string sessionId;

                var content = vimProxy.RetrieveServiceContent();

                var vCenterCredential = new NetworkCredential
                {
                    UserName = vCenterUserName, Password = vCenterPassword
                };
                vimProxy.Login(content.sessionManager, vCenterCredential, null, out sessionId);

                using (var smsClient = new SmsPortTypeClient(binding, smsEndpoint))
                {
                    smsClient.Open();

                    var smsProxy       = new SmsProxy(smsClient, sessionId);
                    var storageManager = smsProxy.QueryStorageManager();
                    var taskRef        = smsProxy.RegisterProvider(storageManager, smsData);

                    var timeout = TimeSpan.FromMinutes(10);
                    if (!smsProxy.WaitSmsTask(taskRef, timeout))
                    {
                        try
                        {
                            var vimTaskRef = new DataCore.Vim.ManagedObjectReference {
                                type = taskRef.type, Value = taskRef.Value
                            };
                            client.CancelTask(vimTaskRef);
                        }
                        catch (Exception ex)
                        {
                            _traceSource.TraceEvent(TraceEventType.Warning, 0,
                                                    Resources.ErrorCancelingVasaProviderRegistration,
                                                    taskRef.Value, ex.ToString());
                        }

                        var msg = String.Format(
                            Resources.VasaProviderRegistrationTimeoutError,
                            taskRef.Value, timeout);

                        _traceSource.TraceEvent(TraceEventType.Error, 0, msg);
                        throw new TimeoutException(msg);
                    }

                    var task = smsProxy.QuerySmsTaskInfo(taskRef);

                    if (task.state.Equals("error", StringComparison.OrdinalIgnoreCase))
                    {
                        var error = task.error;

                        var msg = String.Format(
                            Resources.ErrorOnVasaProviderRegistration,
                            error.fault.GetType().Name, error.localizedMessage);

                        _traceSource.TraceEvent(TraceEventType.Error, 0, msg);
                        throw new Exception(msg);
                    }

                    var result =
                        smsProxy.QuerySmsTaskResult(taskRef);

                    var providerInfo =
                        smsProxy.QueryProviderInfo((Sms.ManagedObjectReference)result);

                    provider = GetProvider(providerInfo);

                    smsClient.Close();
                }
                vimProxy.Logout(content.sessionManager);
                client.Close();
            }

            return(provider);
        }