Hey are you looking to mention user or Chatter group in your user chatter feed or Feed on Sobject records , then here is the solution for you to mention Annotations in chatter from Apex code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
public class addChatterAddMention{ public static void checkItems(List<FeedItem> fi){ String name='procodingskills'; List<CollaborationGroup> cg=[select id from CollaborationGroup where Name=:name LIMIT 1]; String groupId = cg[0].Id; String communityId = Network.getNetworkId(); List<FeedItem> tochange= new List<FeedItem>(); for(FeedItem feed :fi){ if(feed.Type == 'QuestionPost'){ if(!feed.Body.contains('@')){ tochange.add(feed); } } if(feed.Type == 'TextPost'){ if(!feed.Body.contains('@')){ tochange.add(feed); } } } if(!tochange.isEmpty()){ for(FeedItem feed : tochange){ String feedElementId = feed.Id; ConnectApi.FeedEntityIsEditable isEditable = ConnectApi.ChatterFeeds.isFeedElementEditableByMe(communityId, feedElementId); if (isEditable.isEditableByMe == true){ ConnectApi.FeedItemInput feedItemInput = new ConnectApi.FeedItemInput(); ConnectApi.FeedElementCapabilitiesInput feedElementCapabilitiesInput = new ConnectApi.FeedElementCapabilitiesInput(); ConnectApi.QuestionAndAnswersCapabilityInput questionAndAnswersCapabilityInput = new ConnectApi.QuestionAndAnswersCapabilityInput(); ConnectApi.MessageBodyInput messageBodyInput = new ConnectApi.MessageBodyInput(); ConnectApi.TextSegmentInput textSegmentInput = new ConnectApi.TextSegmentInput(); ConnectApi.MentionSegmentInput mentionSegmentInput = new ConnectApi.MentionSegmentInput(); mentionSegmentInput.id = GroupId; messageBodyInput.messageSegments = new List<ConnectApi.MessageSegmentInput>(); system.debug('********'+feed.body); textSegmentInput.text = String.valueOf(feed.body).replace('<p>', '').replace('</p>', '')+'\n'; messageBodyInput.messageSegments.add(textSegmentInput); messageBodyInput.messageSegments.add(mentionSegmentInput); feedItemInput.body = messageBodyInput; feedItemInput.capabilities = feedElementCapabilitiesInput; if(feed.Type == 'QuestionPost'){ feedElementCapabilitiesInput.questionAndAnswers = questionAndAnswersCapabilityInput; questionAndAnswersCapabilityInput.questionTitle = feed.title; } ConnectApi.FeedElement editedFeedElement = ConnectApi.ChatterFeeds.updateFeedElement(communityId, feedElementId, feedItemInput); } } } } } |
1 2 3 |
trigger Feed_Tgr on FeedItem (after insert,after update) { addChatterAddMention.checkItems(Trigger.new); } |
Leave a Reply