static void DoSomething(ClientContext SPClientContext, ListItem ItemChanged, TraceWriter log) { string disBody = string.Empty; // Read the post Body disBody = ItemChanged["Body"].ToString(); log.Info($"---- Body: " + disBody); // Make a stream of the body text byte[] disBodyByteArray = System.Text.Encoding.UTF8.GetBytes(disBody); MemoryStream disBodyStream = new MemoryStream(disBodyByteArray); log.Info($"---- Body For Moderation: " + disBody); // Get the Moderation from Azure and modify the Body AzureContentModerationResults myModeration = CheckContentForModeration(disBodyStream); string myModifiedBody = ModifyText(myModeration.AutoCorrectedText, myModeration); log.Info($"---- Body Moderated: " + myModifiedBody); // Send back the modified Body to SharePoint ItemChanged["Body"] = myModifiedBody; ItemChanged.Update(); SPClientContext.ExecuteQuery(); log.Info($"---- Item Moderated"); }
static string ModifyText(string InputString, AzureContentModerationResults ModerationResult) { foreach (Term oneWord in ModerationResult.Terms) { string termModified = oneWord.term.Remove(1); for (int charCount = 1; charCount < oneWord.term.Length; charCount++) { termModified += "*"; } InputString = InputString.Replace(oneWord.term, termModified); } return(InputString); }