public async Task <HttpResponseMessage> PublishNotification([FromBody] PublishUpdate data) { foreach (var conversation in SubscribedPublishConversations.Keys) { var conversationReference = SubscribedPublishConversations[conversation]; IMessageActivity message = Activity.CreateMessageActivity(); message.ChannelId = conversationReference.ChannelId; message.From = conversationReference.Bot; message.Recipient = conversationReference.User; message.Conversation = conversationReference.Conversation; message.Locale = "en-US"; if (data.State == State.Ended) { message.Text = $"Publish completed, was started by {data.FullName} ({data.UserName})"; } else if (data.State == State.Started) { if (data.Mode == "Full" && data.CompareRevisions) { message.Text = $"{data.FullName} ({data.UserName}) just started a smart publish (publish differences between source and target database)"; } else if (data.Mode == "Full" && !data.CompareRevisions) { message.Text = $"{data.FullName} ({data.UserName}) just started a republish (publish everything)"; } else if (data.Mode == "Incremental") { message.Text = $"{data.FullName} ({data.UserName}) just started a incremental publish (publish only changed items)"; } else if (data.Mode == "SingleItem" && data.CompareRevisions && data.Deep) { message.Text = $"{data.FullName} ({data.UserName}) just started a smart publish (publish only changed items) for everything under {data.RootItemPath}"; } else if (data.Mode == "SingleItem" && data.CompareRevisions && !data.Deep) { message.Text = $"{data.FullName} ({data.UserName}) just started a smart publish (publish only changed items) only for {data.RootItemPath}"; } else if (data.Mode == "SingleItem" && !data.CompareRevisions && data.Deep) { message.Text = $"{data.FullName} ({data.UserName}) just started a republish (publish everything) for everything under {data.RootItemPath}"; } else if (data.Mode == "SingleItem" && !data.CompareRevisions && !data.Deep) { message.Text = $"{data.FullName} ({data.UserName}) just started a republish (publish everything) only for {data.RootItemPath}"; } else { message.Text = $"{data.FullName} ({data.UserName}) just started a publish for {data.RootItemPath}"; } } var connector = new ConnectorClient(new Uri(conversationReference.ServiceUrl)); await connector.Conversations.SendToConversationAsync((Activity)message); } return(Request.CreateResponse("OK")); }
public void Ended(object sender, EventArgs args) { try { if (args != null) { SitecoreEventArgs sitecoreEventArg = args as SitecoreEventArgs; if (sitecoreEventArg != null) { Publisher parameters = sitecoreEventArg.Parameters[0] as Publisher; if (parameters != null) { try { var publishData = new PublishUpdate { UserName = parameters.Options.UserName, CompareRevisions = parameters.Options.CompareRevisions, Deep = parameters.Options.Deep, FromDate = parameters.Options.FromDate, Language = parameters.Options.Language.Name, Mode = parameters.Options.Mode.ToString(), PublishDate = parameters.Options.PublishDate, PublishingTargets = parameters.Options.PublishingTargets, PublishRelatedItems = parameters.Options.PublishRelatedItems, RecoveryId = parameters.Options.RecoveryId, RepublishAll = parameters.Options.RepublishAll, RootItemPath = parameters.Options.RootItem?.Paths.FullPath, State = State.Ended }; User user = User.FromName(parameters.Options.UserName, false); if (user != null) { publishData.FullName = user.Profile.FullName; } new Services.NotificationService <PublishUpdate>().Send(publishData); } catch (Exception) { } } } } } catch (Exception exception) { } }