Blog Post

Release Notes
14 MIN READ

Khoros Communities 19.10 Release Notes

JohnD's avatar
JohnD
Khoros Alumni (Retired)
6 years ago

New Features

Private Messages v3 (EA)

In the 19.9 Release, we announced the EA availability of Private Messages v3. For the 19.10 Release, we added new functionality:

  • Support for file attachments
  • Multi-user private messages
  • API support for threaded private messages

Support for file attachments

Private Messages v3 now supports the ability to add file attachments. This ability is not granted to all users by default. Members must have the Upload file attachments to Private Messages  permission to add attachments to private messages. We recommend granting this permission only to admins, moderators, and advanced users.

Prerequisite: To use file attachments in Private Messages v3, you must also be using Editor v2.1 or v2.2. Learn more about Editor feature versions.  

To grant this permission:

  1. Sign in to the community as an Admin.
  2. Go to Admin > Users > Permissions.
  3. Select the user or role you want to grant this permission.
  4. Scroll down to Private Messages section.
  5. Grant the Upload file attachments to Private Messages permission.
  6. Click Save.

Members with this permission can drag-and-drop/upload file attachments when composing private messages:

Tip: To review or change the types of attachments members can upload, go to Community Admin > System > File Attachments.

Multi-user private messages

In 19.9, Private Messages v3 supported broadcast private messages, where a single message can be sent to multiple recipients, and each recipient could reply in an independent thread to the author. For the 19.10 release, we’ve added the ability to send multi-user private messages. 

In multi-user private messages, the author sends a single message to multiple (up to 50) recipients. In this scenario, recipients can only Reply All.

Private Message permissions

Private Messages v3 includes several new permissions:

  • Use Multi-user message: Enables members to send many-to-many private messages. The number of members who can be included in a multi-user message is set under Admin > Features > Private Messages > Maximum number of users who can be included in a multi-user private message.
  • Use Broadcast message: Enables members to send one-to-many private messages. Since broadcast messages are sent to each recipient as an individual message, there is no restriction on the number of people you can send a broadcast message to.
  • Upload file attachments to Private Messages: Enables members to attach files to private messages.

For members who have permission to send both multi-user and broadcast private messages, the Create New Message page defaults to sending multi-user message when the author adds more than one recipient in the Send to field. To send a message as a broadcast message, select the Send as Broadcast Message option:

Learn more about user permissions.

For members who have neither the multi-user or broadcast permission, the Send as a Broadcast Message checkbox doesn’t appear. If the person tries to add more than one name in the Send to field, an “Only 1 recipient allowed” error message is displayed.

For members who have only the broadcast permission, the Send as a Broadcast Message checkbox is disabled and automatically checked if the authors add more than one recipient in the Send to field.

For members who have only the multi-user permission, the Send as a Broadcast Message checkbox does not display.

API support for threaded private messages

In the 19.10 release, we have added API support for Private Messages v3. 

Note: API documentation is provided in a PDF file as part of the EA program.

The API includes new notes_thread and threaded_note objects. These APIs support:

  • Creating a new one-to-one, one-to-many, and many-to-many (broadcast) threaded private messages
  • Creating a new note in an existing threaded private message
  • Retrieving messages from a private message thread
  • Retrieving private message threads for a user
  • Marking private message messages and threads as read or unread
  • Deleting private message and threads

Content Archive (EA)

Active communities, especially large enterprise ones, tend to have a lot of content. Over time, these communities can become cluttered with outdated, misleading, or obsolete content, making it more difficult for users to find the content they need. To keep content and conversations fresh and relevant, good content hygiene is important. Admins and moderators should regularly review site content and archive content that is no longer accurate, timely, or relevant.

Up to now, content archiving on Khoros Communities was done by moving content to private “archive” boards (or via a customization). In 19.10, we are providing early access to our new Content Archive feature. 

NOTEContent Archival is available for GA for all communities in version 20.3 and above

When Content Archive feature is enabled, members with permission can:

  • Archive forum, blog, and TKB content
  • Provide links to updated or related content in place of the archived content
  • Access all archived content from a new Archive page
  • Unarchive or permanently delete content from the Archive

Who has access?

Admins and moderators have access to this feature automatically with 19.10 upgrade. While available to all communities, you must manually turn on the Content Archive feature from Admin > Mod Tools > Content Archive to use it.

Learn more about the Content Archive feature.

Community Syndication: Message List (EA)

We're excited to announce Early Access to our latest Community Syndication component: Message List. Message List enables you to create a read-only list of publicly accessible posts from your Community and display it on an external website. For example, you could create a list of messages from forums within a category that have a particular label applied. You could highlight blog articles that reference a specific product and put that on a product page. Mix and match from the following to define your unique message list:

  • Location in the community structure
  • Discussion style type
  • Label
  • Product name
  • Username or Rank

We're sure you can many ways to take advantage of the options and flexibility this new component provides. 

Let's take a look at how it works.

In Community Admin, you define your Message List component using our configuration page in Community Admin > Content > Community Syndication.

This configuration pulls the latest forum messages from a category.

Under the configuration area, you'll click a Get Code button to generate the JavaScript and Markup to place on a page on your external site. 

After you add the code to your page, you'll see a component that shows the latest forum topics from that category. Users visiting your marketing and dot com sites can see the messages. Clicking on a message opens the message in the Community.  

How do I sign up for Message List Early Access?

Want to learn more? Send a private message in Atlas to RayC. He will enable the Community Syndication Message List component in your stage environment and help you get started.

Community Plugin SDK version 1.9.0 

We have released SDK version 1.9.0. This new version provides support for submitting avatar collections to an existing theme or a new avatar theme. 

Note: Submitting a new avatar theme requires a Support ticket to load the new theme into your Community instance configuration. Submitting new avatars into the current avatar theme on your community does not require Support enablement. 

To update your SDK project and SDK plugin the latest version of the Community Plugin SDK, open a terminal and run the following commands: 

npm update -g lithium-sdk
li update-project

After li update-project finishes, you'll see a new avatars directory under <sdk-project-name>/res/. The avatars directory contains a README file.

Avatar support in the Community Plugin SDK

We have added support for avatar collections to the Community Plugin SDK. See suggested avatar sizes and file types in Upload an avatar. Avatar support in the SDK requires SDK version 1.9.0 and Community release 19.10. 

Determine whether you want to add your new avatar collection under a new avatar theme or add a new avatar collection to your current theme. 

Community allows for only one avatar theme at a time. You can create and add a custom avatar theme. Adding a new avatar theme requires a Support ticket to load the new theme in your stage environment. Once Khoros Support loads the avatar theme, you will not be able to access a previous avatar theme unless you file a Support ticket to reload that previous theme. 

Avatars are placed in this path: <sdk-project-name>/res/avatars/<avatar-theme-name>/<avatar-collection-name>/

For example, the path to a 'khorosAvatars' avatar collection in the Candy avatar theme would look something like this:

mySDK/res/avatars/candy/khorosAvatars/

To export custom avatar themes and collections from the Studio into the plugin SDK, run li export-studio-plugin --points "avatar" --force

To clear custom avatars from the Studio plugin, run li clear-studio-plugin --points "avatar" --force.

Add a new avatar collection to your current theme

To add a new avatar collection to your current theme:

  1. Verify the current theme name in Studio. 
    1. Sign-in to Community and go to Studio > Community Style > Asset Library > Avatars.
    2. Your theme name appears on the left side of the tab near the New Collection button. In this example, the current avatar theme is Candy.
  2. In your SDK plugin, create the following a directory for your avatar theme that contains a directory for your avatar collection under <sdk-project-name>/res/avatars/.
    Example  <sdk-project-name>/res/avatars/<avatar-theme-name>/<avatar-collection-name>/
  3. Add your avatar collection images in /<avatar-collection-name>
  4. Submit your SDK plugin using one of the following commands:
    li submit-plugin
    li submit-plugin --force
    .
    (See full instructions in Deploying the SDK plugin to stage.) 

After successful submission of your plugin, you can view the new avatar collection in Studio > Community Style > Asset Library > Avatars. You will see the SDK icon next to the collection, indicating that the collection e here you can see the collection exists in the Community SDK plugin, not the Studio plugin. 

As with other Community plugin points, you can override images in the avatar collection in Studio and also revert Studio overrides. See Override an item in the SDK plugin and Revert to the SDK version of an item for instructions.

Add a new avatar collection to a new avatar theme
To add a new avatar collection to a new avatar theme:

  1. In your SDK plugin, create the following a directory for your avatar theme that contains a directory for your avatar collection under <sdk-project-name>/res/avatars/.
    Example  <sdk-project-name>/res/avatars/<avatar-theme-name>/<avatar-collection-name>/ 
  2. Add your avatar collection images in /<avatar-collection-name>
  3. Submit your SDK plugin using one of the following commands:
    li submit-plugin
    li submit-plugin --force.

    (See full instructions in Deploying the SDK plugin to stage.) 
  4. Open a ticket with Khoros Support. Provide your new avatar theme name and request that they load the new avatar theme into your Community instance. 

After your Support ticket is complete, you can view the new avatar theme and collection in Studio > Community Style > Asset Library. You will see the SDK icon next to the collection, indicating that the collection e here you can see the collection exists in the Community SDK plugin, not the Studio plugin. 

As with other Community plugin points, you can override images in the avatar collection in Studio and also revert Studio overrides. See Override an item in the SDK plugin and Revert to the SDK version of an item for instructions.

Updates to allowed HTML tags in Text editor

As part of some improvements to support table and number/bullet list plugins, we have modified the HTML permissions such that all HTML levels now have access to these tags and attributes:

  • ol
  • ul
  • table: cellspacing, cellpadding, border, width, height
  • tr: width, height
  • td: width, height

Learn more about allowed HTML Tags in the Community text editor.

Default sort orders in LiQL queries

We gave notice in the 19.9 Release Notes that we would be applying default sort orders in the ORDER BY block of LiQL queries without a sort order defined in order to improve performance. Default sort orders will be applied to the following collections. 

  • Messages
  • Users
  • Nodes
  • Boards
  • Categories
  • Group_Hubs

Review the 19.9 release notes for full details.

Salesforce Cases included in Community Search results

Most of the components associated with the Khoros-Salesforce CRM integration are built-in to existing search components. However, you can choose to add a Salesforce Federated search component to your community search page.

The CRM Knowledge Article Search component displays search results from the CRM Knowledge Base that match your search criteria. This enables you to provide a widget on your page that pulls in and displays search results from your Salesforce CRM (Classic or Lightning) on your Search results page as well as in auto suggestions and recommendations.

Prior to 19.10, this component returned only Salesforce Knowledge Articles in your community search results. With 19.10, this component also includes results for any Salesforce Cases created via the Community Case Portal.

Salesforce cases are displayed in the results with a suitcase icon:

Learn how to set up the Salesforce search component for your Community integration.

Community Analytics

Coming the week of November 4

Community Analytics include several new metrics:

  • TKB Helpfulness
  • Partial Registrations

TKB Helpfulness 

Khoros Community TKBs include the ability to collect “helpfulness” data on individual TKB articles via voting buttons. You can now view the number of helpful and unhelpful votes for TKBs articles in Community Analytics. (These new columns have also been added to the end of the CSV export of this report.)

To view TKB helpfulness metrics:

  1. Sign in to the Community.
  2. In the Community dashboard area, click Community Analytics.
  3. Go to CONTENT > TKBs.
    The count of helpful and unhelpful votes are displayed as part of the Top 50 Knowledge Base article list:

Note: If the columns do not display, open the gear menu, click Manage Columns, and select those columns from the list.

Learn more about gathering feedback on TKB articles and how to configure the TKB helpfulness feature.

Partial Registrations

Community managers need to understand how many customers are not completing the registration workflow for their community. An increase in incomplete/abandoned registrations could indicate problems in the overall workflow or potential bugs. Often, visitors abandon the registration flow when they need to enter additional profile information.

You can now view the number of abandoned registrations from Community Analytics.

To view the number of partial registrations:

  1. Sign in to the Community.
  2. In the Community dashboard area, click Community Analytics.
  3. Go to MEMBERS > Members.

Partial registrations are displayed in the top status bar and in the new Partial Registrations table:

Sunset of API Proxy for Community API

With the release of 19.10, we have now sunset the API Proxy when used to authenticate calls to the Community API over HTTP with OAuth 2.0 authorization grant flow. This change primarily affects customers who have used OAuth 2.0 to authenticate calls to the Community API. We have also deprecated the GET /validate/oauth endpoint used to validate the OAuth access token and replacing it with the new GET /validateToken endpoint.

Instead of going through the API Proxy service, all Community API calls are now routed directly to Community servers. Because we are no longer going through the API Proxy, calls authenticated with OAuth 2.0 no longer use the API Proxy URL structure.

  • Customers who do not currently use OAuth 2.0 for API authentication but who choose to use it with 19.4 release or later must use the updated API URL structure described in our latest OAuth 2.0 authorization grant flow guide. (We have also updated our API v1 and API v2 guides that describe the Community API URL format and our guide for obtaining API keys.)

  • Customers who have made Community REST API calls authenticated with OAuth since 19 April 2019 must migrate calls that use the API Proxy URL to use the new URL structure. 

See full details and an FAQ in this blog post.

New API URL for Community API v1

The Community API v1 call URL for all calls to the Community API now looks like this:

https:/[COMMUNITY DOMAIN]/restapi/vc/[OBJECT PATH][METHOD PATH]

where

  • COMMUNITY DOMAIN  is the host URL of the community
  • OBJECT PATH is the path to the object you want to work with
  • METHOD PATH is the method to call

Example

https://community.khoros.com/restapi/vc/boards/id/productIdeas/threads/latest

New API URL for Community API v2

The Community API v2 call URL for all calls to the Community API now looks like this:

https://[COMMUNITY DOMAIN]/api/[VERSION]/[RESOURCE]

Where:

  • COMMUNITY DOMAIN is the host URL of the community
  • VERSION is the version of the Community API: Always 2.0
  • RESOURCE is the API v2 resource to work with

Example

This is the API URL structure for an API call to the Khoros Community:

https://community.khoros.com/api/2.0/[RESOURCE]

API Updates

We've made the following updates to Community API v2

Retrieve promoted topics first in LiQL query results

You can now return included promoted topics at the top of the response by setting the include_promoted constraint to true in a LiQL query to the messages collection

Example

SELECT subject, id, author, view href FROM messages WHERE subject MATCHES 'dogs' AND include_promoted = true ORDER BY post_time DESC LIMIT 5


When true, any topics defined in Community Admin > Content > Promoted Search appear first in the result set followed by the organic search results (search results regardless of promoted items). For any given search, a maximum of two promoted topics are returned in in the response.

Promoted topics are included in the response in addition to the number of items specified by LIMIT in your query. For example, if you set LIMIT to 5 and two promoted items exist, the results set will include 7 items. This matches the experience of the Community UI, which includes promoted items at the top of search results and also again in the response.

The ORDER BY clause defines the order of the organic search results, whereas the Priority of promoted search items (set in in Community Admin) dictates the order of the promoted results.

See About Promoted Search and Create Promoted Search rules to learn more about the Promoted Search feature.

New sort options on Kudos collection

We have added the ability to sort the kudos collection by kudo id and time fields. 

By default, queries to the kudos collection are sorted by the most recent time that a kudo was given. 

Let's look at this example query:

SELECT id, user.id, time FROM kudos WHERE message.id = '195'

If multiple kudos have the same timestamp, you could get duplicates in your result set because the system randomly orders kudos with the same timestamp. This means you could see duplicates when using pagination.

Sorting queries to the kudos by id protects against duplicates. 

SELECT id, user.id, time FROM kudos WHERE message.id = '195' ORDER BY id DESC

You can also use multiple sorts in the ORDER BY clause 

SELECT id, user.id, time FROM kudos WHERE message.id = '195' ORDER BY time DESC, id DESC

New sort options on Tags collection

You can now sort the tags collection by the text and time fields in the ORDER BY clause. Sorting by text enables you to sort results alphabetically or by the time that a tag was applied in either ascending or descending order.

SELECT id FROM tags ORDER BY text DESC
SELECT id FROM tags ORDER BY time DESC

You Found It. We Fixed It.

  • Previously, when using  LITHIUM.Components.renderInPlace(componentId, data, ajaxOptions, clientId) to render the forums.widget.message-view-two component, the message would render properly, but clicking "Accept as Solution" or "Subscribe" would send the user to a "unexpected error" page. This issue has been fixed, and the error no longer displays. The action was still taken and recorded, so no changes in behavior or metrics.
  • We have fixed the issue where users could use some third-party tools for “force join” community members to certain groups.
  • We have fixed the issue where images were not getting properly transformed on submission when using the pullquote custom plugin. This issue resulted in the image being transformed into data so large it prevented users from being able to submit their message due to the character count exceeding 200,000 characters. This transformation issue has been addressed and now the images render properly.
  • Previously, CSV exports of community search results were getting truncated to a number of rows below the stated threshold. This has been fixed, and now all rows up to the set limit are exported.
  • We have fixed the issue where signed-in members who landed on a 404 error page were being shown as signed out of the community at in the page header, despite still being signed in.
  • Community Analytics was not properly displaying all metrics related to Accepted Solutions in all reports. This issue has been fixed.
Updated 7 months ago
Version 6.0

15 Comments

  • Just FYI I found a bug when 19.10 was installed on our site.   In a Forum node, the tag cloud component no longer works and displays "An unexpected error has occurred"    Support says "this is indeed a bug with the component. It is already in development to be deployed and is waiting for deployment confirmation, so I don't suspect it will be too long before this is fixed."    The component works fine in other node types.

  • Support rolled out a fix for the tag cloud bug last night to our production site which fixed it.  FYI. 

  • SumantMa great to hear you are planning to add archiving rules. I inherited a 10+ year old community with multiple boards that were not maintained. Being able to automate archiving posts that have no replies, are over a certain age, are not marked as solutions and are not getting views would be a huge help.

  • SumantMa's avatar
    SumantMa
    Khoros Alumni (Retired)
    5 years ago

    Thanks GlennD . The factors you mentioned for archiving would be covered under the criteria-based archiving functionality in future iterations.