Blog Post

Release Notes
10 MIN READ

Khoros Communities 19.12 Release Notes

SuzieH's avatar
SuzieH
Khoros Alumni (Retired)
5 years ago

Khoros Communities 19.12 brings:

New Features

Group Hubs GA

In the 19.8 Release Notes, we announced Early Access for our exciting new Group Hubs feature. Group Hubs is now in General Availability (GA). 

Group Hubs are our next generation to Groups. Therefore, we plan to sunset the legacy Groups feature late 2020. We believe you will find the extended capabilities and improvements to the user experience more than enough motivation to adopt this new way for your community users to interact. 

Group Hubs is enabled by default for all new Khoros Communities customers. Also, Group Hubs will be enabled by default for any customers who do not have Groups and are on Responsive. Any customers with Groups currently enabled must migrate to Group Hubs. Work closely with your Customer Success Manager (CSM) during the migration. See Group to Group Hubs migration for an overview of the migration path. 

Khoros will not initiate Group Hub enablement. After reading through the migration documentation, contact your CSM to begin the process.

Group Hub membership types

Every group hub has a membership type that controls access to the hub. A group hub can be:

  • Open
  • Closed
  • Hidden

In Open group hubs, all community users can browse and kudo all content, reply to posts, and comment on posts. Group hub members can create new content as well as browse, reply, and comment.

Closed group hubs are visible to all users, but only members of the group hub can access content. Non-members do not have read or reply permissions for closed group hubs. Content in closed group hubs appears in the search results to group hub members only. Non-members who try to access a closed group hub are directed to a page explaining that the group hub is closed and that the user must request access. Members can create new content as well as browse and reply to existing content.

Community users access Hidden group hubs either by invitation or by being added to the group hub directly in Community Admin. Hidden group hubs are hidden from non-members in the Community UI and cannot be searched. Non-members attempting to access the URL to a hidden group hub’s Group Hub Page or child nodes are directed to an error page.

Requirements

Group Hubs requires:

  • Community version 19.12+
  • A Responsive skin
  • Private Messages version 2+

Note: The Private Messages feature is required to send invitations to group hubs and to receive notifications that requests to join have been approved. In addition to Private Messages being enabled for the community, the community member receiving the invitation and receiving the approval notification must explicitly opt-in to receive private messages in My Settings > Preferences > Private Messenger.

Important! Group Hubs provides new components. Two of these components, Group Hubs and My Group Hubs are not included on any pages by default. We recommend adding the Group Hubs component to the Community Page and/or the Category Page. We recommend placing the My Group Hubs page on the View Profile Page and/or the Community Page. See Group hub components to learn more about how these components work. See to learn how to add a component to a page.   

Group Hub Analytics

With this release, Group Hub analytics are available in Community Analytics (formerly Lithium Social Intelligence). You can view metrics related to Group Hub activities on your Community using Group Hub analytics. 

The Community Analytics page now displays all the board types aligned under the All Apps  tab. A new tab called Group Hubs is listed under the CONTENT tab.

The metrics provided here are similar to the existing ones in Community Analytics. Additionally, information related to membership details like subscriptions added and removed to group hubs, number of members joined or left the group hub, invites sent and accepted are provided. 

Group Hub APIs

Community API v2 supports Read actions via LiQL queries to the Grouphubs and Memberships  collections. Create, Update, and Delete actions will be supported in the upcoming Community release 20.1. 

Update: The Memberships collection has deprecated with release 20.1. We recommend against creating any customizations using the Memberships collection. See the 20.1 Khoros Communities release notes for the new membership APIs. We are so sorry. We are making updates to the Membership API once again. Please wait until 20.3 when we will release the final updates. 

Group Hub integration with Khoros Care

Group Hubs content flowing into Khoros Care will be supported in the upcoming Community 20.1. 

Group Hubs documentation

Find Group Hubs documentation in the Group Hubs knowledge base. We recommend the following articles for an overview:

Private Messages v3 GA

In the 19.12 Release, we're announcing the GA of Private Messages v3.

With the GA Release, we have added these features:

  • Changes in Mobile View
  • Option to copy/paste a comma-separated username list in the Send To field
  • Search within private messages
  • Upload files as attachments
  • API support for threaded private messages

Note: With the release of Group Hubs, when a group hub name is added to the Send To field, all the members having membership with the group hub are added. 

Changes in Mobile View

We have introduced a new design for Private Messages UI in Mobile View.  All functionalities remain the same.

Messages grouped by conversation in threaded format

 

Expanded view of a conversation

 

 

 

Option to copy/paste comma-separated username list in the Send To field

With this release, you can now paste a list of comma-separated usernames. This feature is useful when you have a list of users whom you want to send messages on a regular basis. You can copy/paste the list of user names in the Send to field and the usernames are automatically derived. 

Any invalid Usernames are removed from the list and the rest are added. An error message is displayed stating which Username was removed.

Search within Private Messages

To help you find messages in a crowded inbox, we have introduced search functionality. This is available in both desktop and mobile views. Just type the text you are looking for in the search bar. 

You can also choose from where you want to pull the message to narrow down your search. Click the Close (X) icon to navigate back to the Inbox.

Note: Searches are not case sensitive and search for the exact match.

Upload files as attachments

You can now upload files as attachments to your private messages. Members must have the Upload file attachments to Private Messages  permission to add attachments to private messages.

You can find this permission under Admin > Users > Permissions.

With these permissions set, you can also drag-and-drop/upload file attachments when composing private messages:

API support for threaded private messages

In the 19.12 release, we have added API support for Private Messages feature version 3. 

Threaded private messages (Private Messages v3) uses new Community API v2 objects:

  • notes_thread - represents a private message thread
  • threaded_note - represents a message in a private message thread
  • private_messages_view - represents the view of the private message mailbox: inbox or outbox

The Private Messages v3 APIs are independent of the inbox_note and outbox_note objects. Customizations that include inbox_note and outbox_note should continue to work after upgrading to Private Messages v3, but inbox_note and outbox_note do not support the threaded message UI.

The Community API v2 enables you to:

  • Create a threaded message between one sender and one recipient
  • Create a new note in an existing thread
  • Create a threaded  message to multiple users (non-broadcast)
  • Create a threaded message (broadcast)
  • Reply to a private message (single recipient)
  • Reply to a private message (multiple recipients)
  • Retrieve private messages on a private message thread
  • Retrieve private notes threads for a user
  • Mark private message threads as read or unread
  • Delete private message threads 

See the following guides in the Developer Documentation Portal for more information:

Enhancements to Search Subscriptions (GA)

Search Subscriptions trigger notifications when a post containing a set of keywords created primarily by the community admin or moderator is posted to the community. Some communities use top-level categories to partition their community by some criteria (for example, different languages).

The current Search Subscription feature sends notifications to members regardless of the top-level category. That is, the member is notified even if the subscribed keyword is posted in a different top-level category. This is also the case when the top-level categories are of different languages. To reduce the notification noise, this enhancement restricts the scope of notifications to the top-level category that the member most recently saved the search subscription.

In the below example, the member belongs to Portugal top-level category, but logged into Argentina top-level category. If he/she hits SAVE, he/she moves from Portugal top-level category to Argentina. The member is notified only when apples, oranges are posted in Argentina top-level category and not when posted in Portugal. A message is displayed as highlighted below. 

Email notifications contain the post text and the link to the post, so that you know why you are notified. The notification also has the option to reply via email and have it posted to the thread.

Even if the post contains the search text appearing multiple times, only one notification is sent. If the text appears in the Subject of a reply to a post, then notification is not sent.

Note: To enable this feature, open a Support ticket.

Learn more about Search Subscriptions.

API Updates

Community API v1

Get the count of unread messages in a board or category

To deliver on this idea from kandulmadhu, we have added the following endpoints to Community API v1 to retrieve the count of unread messages in a board or category for the current user:

/boards/id/[id]/messages/unread/count
/categories/id/[id]/messages/unread/count

Pass the ID of the board or the category in the endpoint path.

cURL examples (Session Key authentication)

 

 

 

 

 

 

 

 

curl -X GET \
  'https://[COMMUNITY DOMAIN]/restapi/vc/boards/id/[BOARD ID]/messages/unread/count?restapi.response_format=json' \
  -H 'li-api-session-key: [SESSION KEY]'

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

curl -X GET \
  'https://[COMMUNITY DOMAIN]/restapi/vc/categories/id/[CATEGORY ID]/messages/unread/count?restapi.response_format=json' \
  -H 'li-api-session-key: [SESSION KEY]'

 

 

 

 

 

 

 

 

Note: If using OAuth, pass Authorization and client-id in the header as described in the The Community API v1 call.

Response example

 

 

 

 

 

 

 

 

{
    "response": {
        "status": "success",
        "value": {
            "type": "int",
            "$": 14
        }
    }
}

 

 

 

 

 

 

 

 

Community API v2

Private Message API (threaded private messages)

We've added the notes_thread and threaded_note objects and CRUD support for Private Messages feature version 3. See Threaded private message API support in the Developer Documentation Portal for full details. See 

Return promoted topics first in a LiQL response

We've added the is_promoted field and the include_promoted constraint to support returning Promoted topics at the top of LiQL responses.

When is_promoted is true in a response from the messages collection, the topic has been promoted in search results in Community Admin > Content > Promoted Search. The is_promoted field can be used in a SELECT statement.

When include_promoted is set to true in the WHERE clause of a query to the messages collection, 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 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.

Example query 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

You Found It. We Fixed It.

  • We have improved the performance when returning badge counts.
  • We have improved security against Cross-Site Scripting (XSS) when submitting an attachment as part of a topic or reply.
  • We have fixed an issue where customers were seeing JavaScript errors like the following when landing on Forum Page or loading the Message Editor:
  • TypeError: aa is undefinedlia-scripts-body-min.js:formatted:42636.
  • Issues with customers experiencing a Cloudfront timeout error for requests taking longer than 60 seconds have been resolved.
  • Subscription notifications are now being sent properly after Blog and TKB articles are published after being saved multiple times as a draft.
  • We have fixed an issue where the @mention drop-down list was not showing the correct results even when the exact username was entered in the UI. @mentions is now working as expected.
  • TinyMCE with Editor v2 no longer adds an unwanted "http://" to the URL when creating an anchor within the same page.
  • Performance issues with label-based searches when hierarchical labels is enabled have been resolved.
  • We have fixed a bug with Alt-Text on images where the Alt-Text was set to the image file name if no Alt-Text was specifically set on an image using the alt attribute of the <li-image> element, even if the image had a caption. Now, the image caption is set as the Alt-Text unless a user manually overrides the alt attribute in the HTML tab in the Editor. If no caption is set, and there is no alt attribute defined, the Alt-Text will default to the image file name.
  • Community error pages now include CSP or X-Frame-Options headers.
  • Due to inconsistencies with Search subscription notifications, we no longer allow customers to create search subscriptions with search terms entered on multiple lines. For example, a user can no longer enter:

Peaches

Apples

Pears

This fix helps ensure that the Community app recognizes and interprets the subscription correctly and that customers receive Search subscription notifications as intended. 

  • The notification after the successful nomination now says "Success! This topic was nominated as an article to the <board title>. View Dashboard." instead of "Success! This topic was nominated as an article to the <board ID>. View Dashboard."
  • Customers reported losing the ability to copy/paste images into the Editor from the clipboard with Community release 19.9. We have fixed this issue.
  • We have resolved "Resource not found" errors encountered when inserting an image with the Image Uploader and then editing the uploaded image.
  • Relative dates are now translated into Russian correctly.
  • Image links to images uploaded to Community and rejected via moderation now correctly show an 'unavailable' image instead of the rejected image.
  • Selecting Options > Print in a TKB comment now takes you to the Print Page as expected. 
  • Floated topics that were unfloated and then floated again at a later date now appear at the top of the message list as expected, instead of retaining its original float timestamp. 
Updated 6 months ago
Version 8.0
  • JosephA's avatar
    JosephA
    Khoros Alumni (Retired)

    Toby , The analytics for Idea boards will look exactly like the screenshot provided above under the section 'Group-Hub Analytics'. Login to Community Analytics. Go to Community Analytics > Content > Group-Hubs. Drill-down to the relevant idea board and you can find the metrics as shown in the analytics screenshot provided above.

  • AshaC,

     

    I was trying to copy and paste from a CSV file I made of an export from Care, that didn't seem to work. The names were inserted as plain text. 

    When I tried to send a PM to a Group Hub, I was getting no results. 

    We are having design issues with PM 3.0, so we are having to revert back to 2.0. I will be able to get back to some testing once 20.1 roles out for us tonight. 

  • JosephA - thank you.

    Is there a way to see the actual report as it is exported?
    I am trying to determine what is provided and if I need to set up my own idea report for Groups via API.
    Thank you,

    Toby

  • I receive a message that we are only able to have one recipient allowed when trying to send a message to two users.  Our settings have up to six users that can be added to a private message at a time.

    Also, how do you send a broadcast (1 to many) vs creating a group message?


    I do not see search results in the To and From filters when searching for private messages.  Is anyone else experiencing this issue?

    I also do not see an option to mark one thread/message as read or unread or to delete only one message.  Was v3 expected to only be able to mark all messages as read/unread or to delete all messages instead of individual messages?

  • Hi,

    Can you please help me with creating a new note in an existing thread using API v1?

    I am currently using the following API:

    /restapi/vc/postoffice/notes/send?restapi.session_key=<sessionKey>&notes.recipient=/users/id/xxxx&notes.subject="this is subject"&notes.note=this is body

    The above API creates a new thread note, but I want to send the note in an existing thread by sending only the body of the message.

    How can I achieve this?


    Thanks in advance...