1
Answer

Check Replies

ASPbee

ASPbee

13y
1.5k
1
Hi,

       i am trying to create a service which automatically connects to the SMS Gateway account and goes through the inbox and checks if there any existing replies from the user and sends out a series of default messages in a time interval of 60 seconds each.

The following is what i got as a code together but unfortunately even when there are replies sitting on the SMS Gateway account my function says that there are "No replies currently" could someone help where i am missing.

private void CheckRepliesButton_Click(object sender, EventArgs e) 
        {
            //Messaging.MessageController.Settings.Logger.WriteLine(LogEntryType.Info, "Check replies button clicked.");


            // Validate the connection details before checking for replies.
            if (ValidateConnectionDetails())
                CollectFormData();
            else
                return;


            // Check for replies.
            if (!Messaging.MessageController.CheckReplies())
            {
                // Check replies was denied. Check replies can be called at a maximum rate of once per minute.
                // Display a message box with the amount of time the user must wait for replies can be checked.
                string text = string.Format("Replies can be checked for at a maximum rate of once per minute per account.\n\n" +
                    "Amount of time to wait: {0} seconds.", Messaging.MessageController.GetCheckReplyTimeToWait().TotalSeconds);
                MessageBox.Show(this, text, "Check Replies Denied", MessageBoxButtons.OK, MessageBoxIcon.Stop);
            }
        }




private void MessageController_CheckRepliesComplete(object sender, CheckRepliesCompleteEventArgs e)
        {
           if (e.Success)
            {
                // Pop up a form to display each reply message.
               // MessageBox.Show("e.Sucess");


                MessageList ml = e.Messages;
                MessageBox.Show("Message Count" + ml.Count);


               foreach (MessageIn reply in e.Messages)
                {
                    ReplyForm replyForm = new ReplyForm(reply);
                    replyForm.Show();
                }


                // If delivery reports were received display a message box displaying the delivered messages.
                if (e.DeliveryReports.Count > 0)
                {
                    // Update the delivery status of sent messages that correspond to the received delivery reports.
                    UpdateSentItemsDeliveryStatus(e.DeliveryReports);


                    string text = "Delivery Reports Received:\n\n";
                    foreach (DeliveryReport report in e.DeliveryReports)
                    {
                        // Get the sent message that corresponds to the delivery report.
                        MessageOut deliveredMessage = this.SentItems.Find(delegate(MessageOut sentItem) { return sentItem.MessageID == report.MessageID; });


                        if (deliveredMessage != null)
                        {
                            text += string.Format("ID: {0}\nRecipient: {1}\nDelivery Status: {2}\nDelivery Time: {3:dd/MM/yyyy HH:mm:ss}\nMessage: {4}\n\n",
                                deliveredMessage.MessageID, deliveredMessage.PhoneNumber, deliveredMessage.DeliveryStatus.ToString(), deliveredMessage.DeliveryTime, deliveredMessage.MessageText);
                        }
                        else
                        {
                            // The sent item corresponding to the delivery report could not be found in SentItems. This will
                            // happen if the application is restarted between the message being sent and the delivery report arriving.
                            text += string.Format("ID: {0}\nDelivery Report: {1}\n(Message Contents Not Found In SentItems)\n\n", report.MessageID, report.MessageText);
                        }
                    }
                    MessageBox.Show(this, text, "Messages Delivered", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }


                // If no new replies or delivery reports were received display a message box to notify the user.
                if (e.Messages.Count == 0 && e.DeliveryReports.Count == 0)
                {
                    MessageBox.Show(this, "No new replies or delivery reports were received.", "No Messages Received", MessageBoxButtons.OK, MessageBoxIcon.Information); 
                }
            }
            else
            {
                string text = string.Format("The following error occurred when checking for replies:\n\n{0}", (e.Exception != null) ? e.Exception.ToString() : "Unknown");
                MessageBox.Show(this, text, "Check Replies Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
            }
        }
       
 Messaging.MessageController.CheckRepliesComplete += new CheckRepliesCompleteEventHandler(MessageController_CheckRepliesComplete);
           

Answers (1)