使用Ooredoo Messaging Service从asp.net网络表单向不同的用户发送不同的消息

时间:2018-08-11 07:28:23

标签: c# asp.net .net bulksms

我们需要从我们的应用程序发送大量SMS,为此我们正在使用Ooredoo Messaging Service,但是由于我们必须一次从该应用程序向10000多名用户发送不同的消息。有时一一发送会导致严重的网关错误(502),并且在发送200条以上的SMS后会停止执行。因此,请帮助我找出我在做错什么。

MessengerSoapClient messenger = null;
AuthResult authData = null;
SoapUser user = null;
Constants constant = new Constants();
SendResult sendResult = null;
string originator = string.Empty;
SmsStatus status = null;

foreach (DataRow customer in smsCustomerList.Rows)
{
    Task.Run(() =>
    {
        string transactionId = string.Empty;
        try
        {
            if (messenger == null || user == null)
            {
                messenger = new MessengerSoapClient("MessengerSoap");
                user = new SoapUser();
                user.CustomerID = constant.SmsCustomerID;
                user.Name = constant.SmsUsername;
                user.Language = "en";
                user.Password = constant.SmsPassword;
                authData = messenger.Authenticate(user);
            }
            if (authData.Result == "OK")
            {
                Console.WriteLine("Authenicated");
            }
            else
            {
                Console.WriteLine("Error: " + authData.Result);
            }
            originator = authData.Originators[0];

            sendResult = messenger.SendSms(user, originator, customer["smsData"].ToString(), customer["phone"].ToString(), MessageType.ArabicWithLatinNumbers, customer["defDate"].ToString(), false, false, false);
            transactionId = sendResult.TransactionID;
        }
        catch (Exception ex)
        {

            logger.Error("Exception occured at {0},{1}", ex.Message, ex.StackTrace);
            if (sendResult == null)
            {
                transactionId = Guid.Empty.ToString();
            }
            else
            {
                transactionId = string.IsNullOrEmpty(sendResult.TransactionID) ? Guid.Empty.ToString() : sendResult.TransactionID;
            }
            messenger = null;

        }


        status = messenger.GetSmsStatus(user, transactionId, true);

        if (status != null && status.Result == "OK")
        {
            _service.UpdateSmsStatusByTransactionId("GroupMessages", transactionId, 1);
        }
    }).ConfigureAwait(false).GetAwaiter();
}

0 个答案:

没有答案
相关问题