/// <summary>
        /// Take a message and create a reply message for it with the routing information
        ///             set up to correctly route a reply to the source message
        ///
        /// </summary>
        /// <param name="text">text you want to reply with</param><param name="locale">language of your reply</param>
        /// <returns>
        /// message set up to route back to the sender
        /// </returns>
        public Activity CreateReply(string text = null, string locale = null)
        {
            Activity activity = new Activity();

            activity.Type = "message";
            DateTime?nullable = new DateTime?(DateTime.UtcNow);

            activity.Timestamp = nullable;
            ChannelAccount channelAccount1 = new ChannelAccount(this.Recipient.Id, this.Recipient.Name);

            activity.From = channelAccount1;
            ChannelAccount channelAccount2 = new ChannelAccount(this.From.Id, this.From.Name);

            activity.Recipient = channelAccount2;
            string id = this.Id;

            activity.ReplyToId = id;
            string serviceUrl = this.ServiceUrl;

            activity.ServiceUrl = serviceUrl;
            string channelId = this.ChannelId;

            activity.ChannelId = channelId;
            ConversationAccount conversationAccount = new ConversationAccount(this.Conversation.IsGroup, this.Conversation.Id, this.Conversation.Name);

            activity.Conversation = conversationAccount;
            string str1 = text ?? string.Empty;

            activity.Text = str1;
            string str2 = locale ?? this.Locale;

            activity.Locale = str2;
            return(activity);
        }
 /// <summary>
 /// Initializes a new instance of the ConversationReference class.
 ///
 /// </summary>
 public ConversationReference(string activityId = null, ChannelAccount user = null, ChannelAccount bot = null, ConversationAccount conversation = null, string channelId = null, string serviceUrl = null)
 {
     this.ActivityId   = activityId;
     this.User         = user;
     this.Bot          = bot;
     this.Conversation = conversation;
     this.ChannelId    = channelId;
     this.ServiceUrl   = serviceUrl;
 }
        public Activity(string type = null, string id = null, DateTime?timestamp = null, DateTime?localTimestamp = null, string serviceUrl = null, string channelId = null, ChannelAccount from = null, ConversationAccount conversation = null, ChannelAccount recipient = null, string textFormat = null, string attachmentLayout = null, IList <ChannelAccount> membersAdded = null, IList <ChannelAccount> membersRemoved = null, string topicName = null, bool?historyDisclosed = null, string locale = null, string text = null, string speak = null, string inputHint = null, string summary = null, SuggestedActions suggestedActions = null, IList <Attachment> attachments = null, IList <Entity> entities = null, object channelData = null, string action = null, string replyToId = null, object value = null, string name = null, ConversationReference relatesTo = null, string code = null)
            : this()
        {
            this.Type      = type;
            this.Id        = id;
            this.Timestamp = timestamp;
            DateTime?nullable = localTimestamp;

            this.LocalTimestamp   = nullable.HasValue ? new DateTimeOffset?((DateTimeOffset)nullable.GetValueOrDefault()) : new DateTimeOffset?();
            this.ServiceUrl       = serviceUrl;
            this.ChannelId        = channelId;
            this.From             = from;
            this.Conversation     = conversation;
            this.Recipient        = recipient;
            this.TextFormat       = textFormat;
            this.AttachmentLayout = attachmentLayout;
            this.TopicName        = topicName;
            this.HistoryDisclosed = historyDisclosed;
            this.Locale           = locale;
            this.Text             = text;
            this.Speak            = speak;
            this.InputHint        = inputHint;
            this.Summary          = summary;
            this.SuggestedActions = suggestedActions;
            this.ChannelData      = channelData;
            this.Action           = action;
            this.ReplyToId        = replyToId;
            this.Value            = value;
            this.Name             = name;
            this.RelatesTo        = relatesTo;
            this.Code             = code;
            this.MembersAdded     = membersAdded ?? (IList <ChannelAccount>) new List <ChannelAccount>();
            this.MembersRemoved   = membersRemoved ?? (IList <ChannelAccount>) new List <ChannelAccount>();
            this.Attachments      = attachments ?? (IList <Attachment>) new List <Attachment>();
            this.Entities         = entities ?? (IList <Entity>) new List <Entity>();
        }