Você está aqui:
Usar a API para oferecer código de amostra de emblemas de reconhecimento
Você pode usar a API para conceder programaticamente os emblemas de reconhecimento aos membros do site do Experience Cloud.
Atribua um emblema de reconhecimento e notifique um membro usando o 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;Atribua um emblema de reconhecimento quando um membro alcançar um determinado número de pontos de reputação
Para evitar atribuir o mesmo emblema duas vezes, adicionamos um campo "hasBadge_c" personalizado ao objeto de usuário.
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;
}
}
}
Adicione automaticamente pontos de reputação quando o emblema for atribuído a um membro
Para evitar codificar o número de pontos de reputação atribuídos com o emblema, este exemplo pressupõe que a entidade WorkBadgeDefinition foi personalizada com um campo "ReputationPoints__c" adicional.
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;
}
}
}Atribua um emblema de reconhecimento quando um membro criar determinado número de postagens ou comentários
O objeto ChatterActivity contém os seguintes campos úteis:
- CommentCount
- CommentRecievedCount
- LikeReceivedCount
- PostCount
Esses contadores podem ser usados para atribuir emblemas programaticamente com base em vários limites. Por exemplo, os membros podem obter um emblema sempre que criarem 100 postagens ou sempre que receberem 100 curtidas.
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
}
}
}