Recent Activity
What is Going On with Dev Docs in 2023?
3 MIN READOur Khoros Developer Documentation Portal has undergone some big changes in 2022. We started the year with a new navigation experience, code recipes, use cases, and an expanded Brand Messenger SDK. Much of our focus in 2022 was on creating exciting new products and services that will see tremendous growth in 2023. Part of this focus was on behind-the-scenes work overhauling how we produce and manage developer documentation with next-generation technologies in mind. As the list of supported programming languages, libraries, and tools grows, our methods of delivering clear documentation are also evolving. Our Team I couldn't start this post without acknowledging the tremendous work Javid Hussain (@JavidH) put in. Javid has worked hand-in-hand with the engineering teams, creating detailed documentation for our latest features. He has been an integral part of our team. In his first full year here, he significantly impacted the quality and consistency of our documentation for Khoros Communities, Flow, Care, and Marketing products. A lot of the accomplishments of the dev docs team this year would not have been possible without Javid. Thank you. Community The most exciting thing we've been working on is the developer experience around our upcoming new Khoros Community experience. Because Khoros Community Aurora introduces so many new technologies to our platform, we've been working hard to build out new documentation and ways to share information to help our developer community hit the ground running as new features are released. GraphQL, for example, allows us to explore a different approach to documenting our API. This includes an interactive query explorer that enables you to build and test query requests directly from the Dev Docs Portal against a live demo instance of Aurora. We are also working hand-in-hand with our product teams to bring more developer-oriented features and content into our user interface, enabling you to spend less development time setting up your Community and more time building exciting custom experiences for your users. Brand Messenger Brand Messenger has grown by leaps and bounds over the past year, and it is expected to do even more going into 2023. New features and capabilities are being introduced at an accelerated pace, and because of this, we gave it its own dedicated Dev Docs Portal. The world-class Web and Mobile SDKs made possible by our incredible engineering teams at Khoros connect users to brands in more ways than ever before. As we continue adding new features to Brand Messenger, our documentation will include a library of use cases, recipes, and solutions for virtually any situation. Developer Blog Another area we want to focus on more in 2023 is this Developer Blog. We've had a lot of positive responses to our "How We Built It" series, centered mainly around how different features of Atlas were created. Here are some of the blog posts we create…519Views
Sign in to react to this post0Comments
How We Built It: User Profile Hover Card
6 MIN READOverview User Profile Hover Card is used to display user information such as pronouns, roles, number of posts, kudos, and solutions. With the User Profile Hover Card, you see user information while viewing any article in your community by hovering your mouse cursor over either their avatar or the user name. Note: The User Profile Hover Card will not be displayed in the user profile. A JavaScript function will be attached to certain elements on the page that makes an AJAX call to the server when the mousenter event is triggered. This AJAX call request will return all the information necessary to display a hovercard with the user profile information. You can create a Profile Hover Card using these three steps covered in this guide. Building an endpoint Creating a custom javascript function Adding a javascript function to a quilt to display the user information Here is an image of the User Profile Hover Card in Atlas Community: Building the endpoint Create a new endpoint in Studio named profile-card (Studio > Endpoints > New Endpoint). Here is the overall structure of our code. After some initialization code and setting up some variables, we have two main steps outlined in the comments. <#compress> <#-- Set up number format and import some functions you will use later on --> <#setting number_format="0.######"/> <#include "theme-lib.common-functions" /> <#-- The user whose profile information we would like to display --> <#assign userId = getRequestField("userId", "-1", true)?number /> <#assign unqId = getRequestField("unqId", "")?string /> <#assign badgeSize = 5 /> <#if userId gt 0 && validEndpointRequest(false, true,false)> <#-- Step 1. Make REST call for the data required for the component --> <#-- . . . see below code snippet . . . --> <#-- Step 2. Render the actual card markup --> <#-- . . . see below code snippet . . . --> </#if> </#compress> Step 1 To fetch the user’s profile information, we just need to write a LiQL request and make the request assigned to a variable. <#assign userQry = "SELECT login, view_href, rank.name, rank.color, user_badges FROM users WHERE id='${userId}'" /> <#assign userProfileData = executeLiQLQuery(userQry) /> Step 2 In step 2, we will use the data we just fetched to create some variables and return the markup required for the hovercard. <#if userProfileData?size gt 0> <#assign userProfileData = userProfileData[0] /> <div> <section> <span><span id="cardTitle-${unqId}"><a href="${userProfileData.view_href}">${(userProfileData.login)!""}</a></span> <span id="…718Views
Sign in to react to this post0Comments
How We Built It: Pronouns in User Profiles
6 MIN READA while back, Atlas added the ability for users to add personal pronouns to their user profile. You can read about this enhancement in Atlas Proudly Adds Pronouns Option to Profile. Today, we take a technical dive into how we added a Pronouns field on the Atlas user profile and registration page using a custom field setting and a custom component. Note: Customizations in your community might conflict with the implementation that we describe in this article. For example, if your community has removed the "Personal Information" tab in My Settings > Personal, you will not be able to add the pronouns to the Personal Information tab exactly as described here. Pronoun field on the User Registration page Pronoun field in the Personal Information tab Customization overview Create your Support ticket Create a redirect component Update attribute mappings in Community Admin (SSO-only) Use pronouns in customizations Pronoun field on the User Registration page Here is how the Pronoun field appears on the User Registration page. Pronoun field in the Personal Information tab Here is how the Pronoun field appears on the Personal Information tab under My Settings > Personal. We created a custom component to add an Update who can see your private info link under the field that redirects the user to the My Settings > Preferences > Privacy page to modify their pronoun privacy preference. We show the code for this link in Create a redirect component. Note: If your community had the Personal Information section removed from My Settings > Personal, you will need to consider asking Support to restore the Personal Information tab with just the Pronoun field or implement some other method for users to edit their personal pronouns through the community user interface. Customization overview Let's take a quick look at the customization as it was implemented on Atlas. You'll need Khoros Support to perform some back-end tasks and you'll also need to build a simple custom component. Important: Our implementation uses a non-SSO registration flow. If you're interested in trying this customization in an SSO community, be sure to read the next section for caveats and considerations. Developer/Community Manager tasks: Create a custom component that creates a redirect link to the user's Privacy Settings page so that they can control who can see their personal pronouns. File a Support ticket requesting back-end configurations Khoros Support tasks: Create a custom field setting where users can enter and modify their personal pronouns. Add the new field to the required page forms. Once the custom field is in place, you'll be able to access it via the Community REST API in FreeMarker customizations. NOTE TO KHOROS SUPPORT STAFF: See Add a custom pronoun field setting to the user profile for instructions relating to these enablement and configuration tasks. SSO …568Views
Sign in to react to this post0Comments
A Python Library for Khoros Community
5 MIN READPhoto by Hitesh Choudhary on Unsplash One of my favorite things about working at Khoros and writing about our products is that I get to witness the Khoros mission play out in real-life situations. This happens often in chat experiences I know are powered by Modern Chat and the Khoros Automation Framework, and I also see it in brand outreach via social media. But one of the most rewarding examples is when I see something exemplifying the power of Community – connecting, helping, and sharing with the intention of making life easier. Community is more than a product. It's a mindset. Today we're highlighting a contribution by a developer who embodies the Community spirit. He built an open-source Python SDK for Khoros Community and we want to share it with other Community customers. Other developers working with Khoros Community have already contributed to his project. I got a chance to chat with this developer over Zoom to learn more about his Khoros journey and the Python library. Note: The Python library discussed in this article is not part of Khoros's official Community platform, has not been tested by Khoros, and is not supported by Khoros. Q&A What does the Python library provide? I've tried to keep the library flexible to support different work patterns. I built it to be as generic or detailed as a user needs it to be. For example, you could use the khoros.messages.create function to create a message or simply use khoros.get if you just want a shortcut for a GET request. At a high level, the project package is comprised of Primary modules, including the Core object and module and Supporting modules. The Core object/module object is your hub. You'll Instantiate the Core object by passing Khoros credentials. The Core module is a collection of core functions and tools to work with the Khoros Community APIs. Other Primary modules: handle interactions with the Community REST APIs facilitate authenticating to Khoros Community environments enable API queries using the LiQL syntax provide functions to work with various Community API objects and structures (e.g. community, categories, nodes, and tenants) facilitate working with SAML assertions retrieve Community Plugin SDK details (SDK and dependency versions, installation state) The library's Supporting modules: contain classes supporting error and exceptions handling provide tools and utilities like dictionary conversion, timestamp formatting, and environment variable retrieval/update help with their Community Plugin SDK set up and publishing support helper file import and parsing to facilitate ease of use and configuration setting for the package perform unit testing What are some of the more popular modules? Probably the Objects module. The functions to create and update users and roles are heavily used. Publishing messages on behalf of other users also gets a lot of use. Other functions simplify cumbersome processes like cre…635Views
Sign in to react to this post0Comments
Atlas Developer Network Updates
2 MIN READPhoto by Paul Skorupskas on Unsplash The Atlas team is announcing updates to the Atlas community navigation. But what does that mean to the users visiting the Developer Network and users who are trying to access the Dev Docs from Atlas? New Atlas Menu The main Atlas navigation menu has a whole new look and feel that enables easier browsing and discovery with fewer clicks. When you look t the main Atlas menu, you'll see that we've renamed the Dev Network category to "Developers" and that we've consolidated the separate menu items for developer documentation into a single Developer Documentation item that redirects to developer.khoros.com. Developer Category Page When you click on the Developer option in the main Atlas navigation, you'll see an updated Developer category page. Here, we also consolidated the product card options into one card so that there is a single click to get to developer.khoros.com. We also added components to display Latest Dev Blog posts Latest solutions in the Developer Discussion forum Latest topics in the Developer Discussion forum Developer category kudos leaderboard We're working on minor adjustments to move this content 'above the fold' when you come to the Developer category page. Finally, we up-leveled a component to the right side rail to display a shortcut to developer.khoros.com from the Learning category page for each product solution (e.g., Atlas > Communities > Learning and Atlas > Care > Learning). What's next? Look for an updated landing page on developer.khoros.com in the December/January timeframe. We're simplifying the navigation to get you where you want to go in fewer steps, as well as making some look and feel improvements for better readability and moving our page quality feedback widget to a more discoverable position. (I'll give a quick shout-out to Readme.io our Dev Doc Portal hosting platform while I've got your attention. They have been a great partner to our small Dev Doc team by providing a flexible back-end system that enables us to focus on content. Thanks, ReadMe!)373Views
Sign in to react to this post0Comments
Two Community Virtual Developer Training Sessions are Open for Enrollment
1 MIN READThe December, 2021 and February, 2022 Community Virtual Developer Training sessions are open for enrollment to all qualified developers. The training event page offers more details on the training format, topics covered, prerequisites, and fees.372Views
Sign in to react to this post0Comments
A Chatbot for the Dev Doc Portal
2 MIN READIf you came to the Developer Documentation Portal lately, you might have noticed a chatbot icon in the lower right corner of the page. We shared in a previous Dev Blog post how TravisB and others built Maia, Khoros's virtual assistant, using Khoros Flow, Modern Chat, and the Khoros Automation Framework API. Up to now, users have engaged with Maia on Atlas and Khoros.com. Now, Maia also graces the pages of developer.khoros.com. Why Maia? First of all, we like to use the Dev Doc Portal to highlight Khoros products and features whenever we can. And Maia is cool -- it is a single chatbot that handles multiple chat flows across multiple websites using Khoros technology. But really, we added Maia to create a better user experience. Here's what Maia can do for you on developer.khoros.com: Register on Atlas File a Support ticket Go to Atlas resources like Product Coaching, Knowledge Bases, and Product Idea boards Connect with a chat agent to help find a resource or get other help with Atlas Connect with a sales agent Schedule a demo Learn about Khoros solutions Find the latest content from Khoros including release notes, product & Khoros insights blogs, podcasts & webinars Learn about our Khoros Titans user group program Get started with Maia To get started with Maia, just open the chatbot and enter "hi". From there, just follow Maia's prompts. Check out this post for Maia tips and tricks. Gratitude I want to give a special shout-out to PradeepK for helping us get Maia on the Dev Doc Portal as one of his first projects here at Khoros and to TravisB or working out the right flows for our Developer customers. Couldn't have done this without you two! Final Thoughts Let us know what you think about the new addition to developer.khoros.com in the comments section below. We hope Maia makes your life a little bit easier.428Views
Sign in to react to this post0Comments
Can Technical Writers Exist in an Agile Dev Team?
4 MIN READTechnical writers are an important part of any software development team working on projects or products with customer-facing components. Whether you're creating a simple UI-based tool for customers without any technical experience or an API with complex parameters that pose a challenge to even the most experienced developers, a technical writer bridges the information gap between your development team and the end-user. So, how do you integrate a technical writer into your agile development environment? What role(s) does a technical writer perform within your organization's development team? In this post, we will cover some tips for doing just that! Scrum and Planning Meetings Technical writers are often considered outsiders within an engineering environment. They are typically outnumbered by engineers and frequently work with multiple engineering groups at the same time. This makes it easy to see them as an outside entity rather than a member of the scrum team. However, this perception doesn't take into account the many hats a technical writer wears. A technical writer is like an embedded reporter, writing stories about the projects the scrum team(s) are working on. Those stories benefit from having detailed knowledge of not only what the project is about, but what decisions went into its creation. Knowing why it made more sense to create a feature with one set of parameters over another helps the writer to explain the benefits (and potential snags) to the audience. Consider including technical writers in scrum meetings, as well as in planning sessions where new projects are conceptualized. This will not only provide much-needed context to the writer but save your team time explaining these details later on. Location One common mistake organizations make in their office layouts is to group technical writers in with marketing, design, etc., and sit them with those teams, away from the engineering department. In an in-person working environment, you should consider sitting your technical writers with the engineers. Separating them physically prevents the writers from hearing and absorbing the day-to-day discussions that happen, often resulting in missed opportunities for documenting changes as they occur. Development Environments It's important for technical writers to have access to the same level of development/testing environment as the engineering teams. Even if it's a local deployment of a nightly build, being able to explore and see the code in advance of the documentation being required gives writers a head start on their work. The amount of time the writer has to use and document the upcoming release, the better the documentation. This also allows technical writers to fill another important role that they often do: testing. In order to document a new feature, writers test their documented steps. This enables them to not only discover bugs in their documentation but often to uncover bugs in …569Views
Sign in to react to this post0Comments
How We Built the KB Audit Flow Part 2: Audit Checkbox (Updated)
6 MIN READThe KB Audit Flow requires two components to work. The first is an audit checkbox that enables members with specific roles to mark a KB article as "audited" from the front end. This checkbox includes the initial check and confirmation. The second component is the 'Last Reviewed' Information component which displays the date and time of the last audit of the KB article. That component is displayed for all visitors, regardless of their role(s). It does, however, check the member's roles to determine whether or not to additionally display the audit checkbox featured in this post. In this post, we will create a new audit checkbox component. Note: These instructions cover the method for creating the component using the Community Plugin SDK. For an easier UI-based approach, we recommend using Studio to create the component. The content of the file below remains the same. We highly recommend reading the other two posts in this series to get a better understanding of the other components and prerequisites required for this component to function properly. How We Built the KB Audit Flow Pt. 1 How We Built the KB Audit Flow Pt. 3: Review Date Display Create a Custom Endpoint A custom endpoint enables the audit checkbox component to send the "last reviewed" timestamp to Khoros, updating the date and time the article was last audited. To create this custom endpoint: Navigate to Studio > Endpoints Select the New Endpoint button Enter last-reviewed-date in the title field Select Save Enter the following in the View Content field: <#assign msg_id = http.request.parameters.name.get("msg_id", "")?string /> <#assign date_time = http.request.parameters.name.get("date_time", "")?string /> <#if msg_id != ""> <#assign lastReviewedDateResponse = restadmin("/messages/id/${msg_id}/metadata/key/custom.message_last_reviewed_date/set?value=${date_time}") /> </#if> Select Save This creates a new custom endpoint which passes the message identifier and datetime to Khoros. It is utilized by the Audit checkbox component we are creating next. Create LastReviewed-Audited-checkbox.ftl file The process for creating the checkbox component is pretty straightforward. To start, create the LastReviewed-Audited-checkbox.ftl file as a component. For example: /res/components/LastReviewed-Audited-checkbox.ftl. Here are the contents of that file: <style> .audited-component-checkbox{ margin-top: -20px; margin-bottom: 35px; } label.lia-form-label.audited-label-set { padding-top: 4px; font-weight: bold !important; float:left; } .litho-audited-checkbox-style{ float: left; } .lia-form-label-wrapper.audited-label-float{ float: left; } .lia-inline-confirm.confirm-label-float{ float: right; margin-top: 4px; margin-left: 12px; } a.litho-tkb-audited-deny { cursor: pointer; } a.litho-tkb-audited-approve…619Views
Sign in to react to this post0Comments
Content Workflow API Updates are Here
3 MIN READKhoros' Content Workflow feature in Khoros Communities enables you to create a comprehensive content workflow process including authors, editors, and publishers that each play an important role in crafting, editing, and publishing TKB and blog posts for your community. This includes not only the crafting of new content but also to enable users to nominate, approve, and promote forum messages to TKB articles. With Khoros Communities 21.1, we have introduced these features to Communities API v2. The additions are available during message creation and updates. In this post, we'll uncover a few of the changes to the API, and you can use them to get more out of your Khoros Communities projects. Content Workflow Roles Contextual roles enable you to assign users access to various steps on the content workflow process. These roles break down at the most basic level to: author, editor, and publisher. That said, the permissions break down at a much more granular level. Here is a quick breakdown of the different contextual permissions a user can be assigned: Within the user_context object (related to promoting a forum message to a TKB post): Nomination (First Step) can_nominate - Whether the authenticated user can nominate a forum topic to be converted into a knowledge base article. Approval (Second Step) can_approve - Whether the authenticated user can approve a forum topic's conversion to a knowledge base article. can_reject - Whether the authenticated user can reject the nomination of a forum topic's conversion to a knowledge base article. Promotion (Third Step) can_promote - Whether a user can start a TKB post from a forum message. can_schedule - Whether the user in the current context can schedule the post for publication. Within the message_workflow_context object (related to new blog/TKB posts): Authoring (First Step) can_submit_for_review - Whether the user in the current context can submit the article for review. can_recall - Whether the user in the current context (usually the post's author) can recall the post directly back to the author. Editing/Review (Second Step) can_edit - Whether the user in the current context can edit the post. can_return_to_author - Whether the user in the current context can return the post to the author. can_submit_for_publication - Whether the user in the current context can submit the post for publication. Publishing (Third Step) can_publish - Whether the user in the current context can publish the post. can_return_to_review - Whether the user in the current context can return the post for review. can_schedule - Whether the user in the current context can schedule the publication of the post. Content Workflow Actions We've created a new Content Workflow object, which incorporates directly in the Create and Update Message endpoints. Using this object, you can set and update the status of messages as they pro…439Views
Sign in to react to this post0Comments
You’ve seen all recent content