We are looking to gamify our Knowledge Base. Specifically we want to recognize all the user that are contributing to our Knowledge Base articles. This will essentially promote users to contribute and share great information. It will not only recognize the user who nominates a post to be a Knowledge Base article, but also anyone who comments useful information to be included. We have recognized that there is often more than one user who participates (see image)
The problem we are facing is that there does not seem to be an API for us to easily automate this process. When setting up our Knowledge Base we were led to believe that this would be an option but we cannot seem to get it to work.
Obviously there is some API that we are missing if Lithium provides our community the ability to see the "Top Contributors" for each section of our Knowledge Base (see image).
The question really is how do we call on the number of contributions and automate that to initiate a badge when they hit certain amount of contributions.
Any help would be great. This will really help to ensure the community participation on TKB articles and give those users recognition when they are authoring the right kind of posts. All fantastic gamification reasons!
@ComcastJessie - If you say about top contribution which one following do you mean?
1. Posting the most numbers of replies in the knowledgebase.
2. Highest Kuoded author.
As lithium does show the highest kuoded author as top contributor SS below. Which is also for some specific time e.g one month, one year etc.
I assume you want to get the users who posted highest numbers of replies in the knowledgebase. According to that, you want to give them a badge.
For both approaches, you just need to get if the user has reached to the given number and assign them a different role e.g
Fetch the number of replies
SELECT count(*) from messages where depth > 0 AND author.id = '<author.id>'
If a user has reached to the number of selected replies, you can assign them a role
For the badge assignment rule, you can select that role as badge requirement. Once the user will get that role, a new badge will be automatically assigned.
<#if repliesCount > 10>
<!-- assign role 1 -->
<#elseif repliesCount > 20>
<!-- assign role 2 -->
<#elseif repliesCount > 50>
<!-- so on -->
Sorry for the confusion. We do not want to badge the user with the most replies on a TKB article or the user with the most kudos. We would like to only acknowledge the users that are specifically listed as a contributor on a TKB article.
In our community all registered users have the ability to post and reply. Only our Experts (Superusers) and Official Employees have the ability to nominate a post to be "turned" into a TKB article. When authoring said TKB article (only done by Community Admins) we like to acknowledge all users involved in this process by manually adding them as "Contributors" on said TKB (see image). This list of Contributors can include the original poster, the user with the marked "Solution" on that post, the user who recognized that the post would make a good TKB and nominated it, and the Community Admin that helps author.
We believe it is important to recognize these users for participating in the community in the right ways and want to do so in an incremental fashion. This means the first time they are added as a contributor, they would receive their first TKB contributor badge. Once they have been added to 5 articles as a contributor, they would receive the 5 TKB contributor badge, and so on (see image).
We know that in our TKB section there is already a widget counting the users that are being added as contributors to TKB articles because it keeps a full list of all contributors for that area of our TKB (see image).
Again, we want to be able to automatically award badges to users who have hit those incremental milestones by being added to a TKB as a contributor a certain number of times.
Thanks in advance for any help you can provide.
Thanks for the clarification on this. I couldn't find any API which can get you the count of the TKBs where a user is being added as contributors.
Something similar API I found is,
SELECT count(*) FROM messages WHERE participants.id = '<user-id>' AND depth = 0
However, it was returning all the TKBs where a user has posted a reply which might be different from your need.
I suggest you should post an idea here and request a rest API call e.g
SELECT count(*) FROM messages WHERE contributor.id = '<user-id>' AND depth = 0
Or create a workaround which stores the number of times a user has been added as a contributor.