詳細情報:
API を使用したレコグニションバッジの付与のサンプルコード
API を使用したプログラムで、Experience Cloud サイトメンバーにレコグニションバッジを付与できます。
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;メンバーの評価ポイントが指定した数値に達したらレコグニションバッジを割り当てる
同じバッジが 2 回割り当てられるのを避けるために、ユーザーオブジェクトにカスタム hasBadge_c 項目が追加されました。
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;
}
}
}
バッジがメンバーに割り当てられたら評価ポイントを自動的に追加する
バッジに割り当てられる評価ポイント数をハードコード化するのを避けるために、この例では WorkBadgeDefinition エンティティに ReputationPoints__c 項目を追加してカスタマイズされていることを前提としています。
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;
}
}
}指定した数の投稿またはコメントをメンバーが作成したらレコグニションバッジを割り当てる
ChatterActivity オブジェクトには次の有用な項目が含まれます。
- CommentCount
- CommentRecievedCount
- LikeReceivedCount
- PostCount
これらのカウンターは、さまざまなしきい値に基づいて、プログラムでバッジを割り当てるために使用されます。たとえば、メンバーは、100 件の投稿を作成した場合、または 100 個のいいね! を受け取った場合に、バッジを取得できます。
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
}
}
}