protected override void ExecuteInternal() { this.Message = null; GetMemberMessagesCall apiCall = new GetMemberMessagesCall(this.ApiContext); apiCall.ApiRequest.MemberMessageID = this.MessageId; apiCall.ApiRequest.DetailLevel = new DetailLevelCodeTypeCollection(); apiCall.ApiRequest.DetailLevel.Add(DetailLevelCodeType.ReturnHeaders); apiCall.ApiRequest.MailMessageType = MessageTypeCodeType.AskSellerQuestion; apiCall.Execute(); if (apiCall.HasWarning) { string message = apiCall.ApiException.Message; // TODO; } if (apiCall.HasError) { string message = apiCall.ApiException.Message; // TODO: } if (apiCall.ApiResponse != null && apiCall.ApiResponse.MemberMessage != null && apiCall.ApiResponse.MemberMessage.Count > 0) { this.Message = apiCall.ApiResponse.MemberMessage[0]; } }
public static void GetEmailByAPI(AccountType account, DateTime beginDate, DateTime endDate, ISession NSession) { ApiContext context = AppSettingHelper.GetGenericApiContext("US"); context.ApiCredential.eBayToken = account.ApiToken; GetMemberMessagesCall apicall = new GetMemberMessagesCall(context); apicall.DetailLevelList.Add(DetailLevelCodeType.ReturnAll); TimeFilter fltr = new TimeFilter(); fltr.TimeFrom = beginDate; fltr.TimeTo = endDate; MemberMessageExchangeTypeCollection messages; int i = 1; do { apicall.Pagination = new eBay.Service.Core.Soap.PaginationType(); apicall.Pagination.PageNumber = i; apicall.Pagination.EntriesPerPage = 100; messages = apicall.GetMemberMessages(fltr, MessageTypeCodeType.All, MessageStatusTypeCodeType.Unanswered); for (int k = 0; k < messages.Count; k++) { MemberMessageExchangeType mmet = messages[k]; EbayMessageType email = new EbayMessageType(); email.Body = mmet.Question.Body; email.CreationDate = mmet.CreationDate; email.MessageId = mmet.Question.MessageID; email.MessageStatus = "未回复"; email.MessageType = MessageType(mmet.Question.MessageType.ToString()); email.SenderEmail = mmet.Question.SenderEmail; email.SenderID = mmet.Question.SenderID; email.Subject = mmet.Question.Subject; if (mmet.Item != null) { email.ItemId = mmet.Item.ItemID; email.Title = mmet.Item.Title; } email.Shop = mmet.Question.RecipientID[0]; email.CreateOn = DateTime.Now; email.ReplayOn = Convert.ToDateTime("2000-01-01"); if (HasExist(email.MessageId, NSession)) { } else { NSession.Save(email); NSession.Flush(); } } i++; } while (messages != null && messages.Count == 100); }
public AlertBase PopulateAlert(Account account, ClientAlertEventType item) { if (item is FeedbackLeftEventType) { return(null); // Feedback received alerts are kind of worthless } if (item is ItemMarkedPaidEventType && ((ItemMarkedPaidEventType)item).SellerUserID == account.UserId) { return(null); // Not interested in alerts informing us we have marked the item as paid. } // Feedback Received if (item is FeedbackReceivedEventType) { FeedbackReceivedEventType eventType = (FeedbackReceivedEventType)item; FeedbackReceivedAlert alert = new FeedbackReceivedAlert(); alert.Account = account; alert.CommentingUser = new User(account.Site, eventType.FeedbackDetail.CommentingUser, eventType.FeedbackDetail.FeedbackScore); alert.Item = new Item(account.Site, eventType.FeedbackDetail.ItemID, eventType.FeedbackDetail.ItemTitle, eventType.FeedbackDetail.ItemPrice); alert.CommentText = eventType.FeedbackDetail.CommentText; alert.CommentType = eventType.FeedbackDetail.CommentType; return(alert); } // AskSellerQuestion else if (item is AskSellerQuestionEventType) { AskSellerQuestionEventType eventType = (AskSellerQuestionEventType)item; MessageAlert alert = new MessageAlert(); // Extract some more details from eBay { EbayContext context = new EbayContext(account.EbayToken); GetMemberMessages getMessagesCall = new GetMemberMessages(context); getMessagesCall.MessageId = eventType.MessageID; getMessagesCall.Execute(); MemberMessageExchangeType messageType = getMessagesCall.Message; alert.Account = account; alert.Sender = new User(account.Site, messageType.Question.SenderID); alert.Subject = messageType.Question.Subject; alert.Body = messageType.Question.Body.Replace("'", "'"); alert.Item = new Item(account.Site, messageType.Item.ItemID, messageType.Item.Title); foreach (MessageMediaType mediaType in messageType.MessageMedia) { PictureDownloader downloader = new PictureDownloader(); Bitmap bitmap = downloader.DownloadImage(mediaType.MediaURL); Media media = new Media(bitmap, mediaType.MediaURL); alert.MediaList.Add(media); } } return(alert); } else if (item is EndOfTransactionEventType && item.EventType == ClientAlertsEventTypeCodeType.FixedPriceTransaction) { EndOfTransactionEventType eventType = (EndOfTransactionEventType)item; ItemSoldAlert alert = new ItemSoldAlert(); alert.TransactionId = eventType.Transaction.TransactionID; alert.Account = account; alert.Item = new Item(account.Site, eventType.ItemID, eventType.Title, eventType.CurrentPrice); alert.Buyer = new User(account.Site, eventType.Transaction.BuyerUserID); alert.AmountPaid = eventType.Transaction.AmountPaid; alert.QuantitySold = eventType.Transaction.QuantitySold; if (!String.IsNullOrEmpty(eventType.GalleryURL)) { PictureDownloader downloader = new PictureDownloader(); Bitmap bitmap = downloader.DownloadImage(eventType.GalleryURL); Media media = new Media(bitmap, eventType.GalleryURL); alert.Item.Media = media; } return(alert); } return(null); }
private List <ZohoLead> GetMemberMessageLead(List <ZohoLead> leads, ItemType item, MemberMessageExchangeType message) { try { var checkLead = leads.Where(i => i.UserId == message.Question.SenderID).FirstOrDefault(); if (checkLead == null) { var lead = new ZohoLead() { //ItemDescription = item.Description, UserId = message.Question.SenderID, //PageViews = (int)message.Item.HitCount, //Watchers = (int)message.Item.WatchCount, EbayItemId = item.ItemID, Email = message.Question.SenderEmail, MemberMessage = $"{message.CreationDate} - {message.Question.Body}\n" }; apiContext = GetApiContext(); GetItemCall call = new GetItemCall(apiContext); call.ItemID = item.ItemID; call.IncludeWatchCount = true; call.DetailLevelList.Add(DetailLevelCodeType.ReturnAll); ItemType ebayItem = call.GetItem(item.ItemID); lead.ItemDescription = ebayItem.Description; lead.PageViews = (int)ebayItem.HitCount; lead.Watchers = (int)ebayItem.WatchCount; leads.Add(lead); } else { checkLead.MemberMessage += $"{message.CreationDate} - {message.Question.Body}\n"; } return(leads); } catch (Exception ex) { Trace.TraceError(ex.Message); throw ex; } }