Loading
Experience Cloud
Brug API’en til at give anerkendelsesskilte – eksempelkode

Brug API’en til at give anerkendelsesskilte – eksempelkode

Du kan bruge API’en til programmeringsmæssigt at give anerkendelsesskilte til Experience Cloud-lokalitetsmedlemmer.

Tildel et anerkendelsesskilt, og adviser et medlem, der bruger Apex

ID networkID = '0DBB0000000CdBaOAK';
ID badgeDefintionID = '0W1B0000000ekuJKAQ';
ID giverID = '005B0000003InDeIAK';
ID recipientID = '005B000000483dDIAQ';
String message = 'Welcome to the site';

WorkThanks thanks = new WorkThanks (
NetworkdID=networkID
GiverID=giverID,
Message=message
);
insert thanks;

WorkBadge badge = new WorkBadge(
DefinitionId=badgeDefinitionId,
NetworkID=networkID
RecipientId=recipientID,
SourceId=thanks.id
);
insert badge;

// optional: create a Chatter post on the user profile
// showing the badge. The user will be notified through
// the standard Chatter notification mechanisms.
FeedItem feedItem = new FeedItem(
NetworkScope=networkID,
ParentId=recipientID,
RelatedRecordId=thanks.id,
Body=message,
Type='RypplePost',
Visibility='AllUsers'
);
insert feedItem;

// Unfortunately, there is a limitation in the WDC API that
// prevents these 2 lines from working:
// thanks.FeedItemID = :feedItem.id;
// update thanks;

Tildel et anerkendelsesskilt, når et medlem når et antal omdømmepoint

Hvis du vil undgå at tildele det samme skilt to gange, har vi føjet et tilpasset "hasBadge_c"-felt til brugerobjektet.

trigger NetworkMemberTrigger on NetworkMember (after update) {
              for (NetworkMember nm : Trigger.New) {
                   User user = [select ID, hasBadge_c from User where ID = 
:nm. MemberID]; 
         If (nm.ReputationPonts >= 40 && !user.hasBadge_c) {
             WorkThanks thanks = new WorkThanks(
             GiverId='005B00000036ukY',  
             Message='inserted by trigger',
             NetworkId=nm.NetworkId);
             insert thanks;

            WorkBadge badge = new WorkBadge(
            DefinitionId='0W1B0000000T1QBKA0',
            NetworkId=nm.NetworkId,
            RecipientId=nm.MemberId,
            SourceId=thanks.id);
            insert badge;

            user.hasBadge_c = true;
            update user;
      }  
   }
}

Tilføj automatisk omdømmepoint, når et skilt tildeles til et medlem

Hvis du vil undgå at hardcode antallet af omdømmepoint, der tildeles med skiltet, antager vi i dette eksempel, at enheden WorkBadgeDefinition er blevet tilpasset med et ekstra "ReputationPoints__c"-felt.

trigger WorkBadgeTrigger on WorkBadge (after insert) {
             for (WorkBadge badge : Trigger.new) {
                 if (badge.DefinitionId == '0W1B0000000T1QBKA0') {
                     WorkBadgeDefinition badgeDefinition = [select Id,
ReputationPoints_c from WorkBadgeDefinition where Id = 
:badge.DefinitionId];
            NetworkMember member = [select Id, ReputationPoints from
NetworkMember where MemberID = :badge.RecipientId];
            member.ReputationPoints = member.ReputationPoints + 
badgeDefinition.ReputationPoints_c;
            update member;
      }
   }
}

Tildel anerkendelsesskilt, når medlemmer har oprettet et antal indlæg eller kommentarer

Objektet ChatterActivity indeholder følgende nyttige felter:

  • CommentCount
  • CommentRecievedCount
  • LikeReceivedCount
  • PostCount

Disse optællinger kan bruges til programmeringsmæssigt at tildele skilte baseret på forskellige tærskler. Medlemmer kan f.eks. få et skilt, hver gang de har oprettet 100 indlæg, eller når de har modtaget 100 synes godt om.

trigger ChatterActivityTrigger on ChatterActivity (after update) {
              for (ChatterActivity ca : Trigger.New) {
                  if (ca.PostCount >= 10) {
                      // TODO: assign badge to user if he hasn't received one already
      }
   }
}
 
Indlæser
Salesforce Help | Article