Recent Discussions
Will adding/changing a custom tag trigger a Community event?
When using the About custom tags(NOT user facing normal tagsβ ) feature of Classic community: will a custom tag being added trigger a community event as defined in the Subscribe to Community events API documentation article?109Views0likes0CommentsSubscription for Moderation Approved Event
Hello, Is there any subscription related to the moderation approved event, similar to the message event subscription we already have? We have a requirement where a specific set of code should be executed when a message is approved from moderation. Thanks in advance.137Views1like0Comments2) Which Way is FRT Calculated? (topic or reply?). **EDIT: Appears to be Topic?? Details added:
In Community Analytics, is First Response Time calculated like: Select all TOPICS started in January, and calculate their FRT, ..or.. Select all FIRST REPLIES posted in January, and calculate their FRT --- **UPDATE:** History: A year ago, we noticed avg_thread_response_time seems to be returning "total thread response time." So, my brilliant coworker Kenton wrote a hardcore freemarker function to calculate the average. And it OFTEN aligns w/ Community Analytics: I mean, that's dang good. But leaves a few questions that led to a bit of a WTF moment. (friendly WTF moment.. just trying to wrap my head around the FRT stuff): Why are some boards really far off? (so, I investigated...) ... Looking into our internal Policy forum - System Average Response Time (minutes) Community Analytics 1,366 Kenton's Whizbang FRT Function 5,426 Community Analytics Export: (SS below) 5,426 π§ Here's the CSV export from Community Analytics: The yellow stuff verifies Kenton's "Only get July's Topics" approach, which starts by getting all TOPICS in that date range: <#local topics_query = "select replies, post_time from messages where board.id = '${board_id}' AND depth = 0 and replies.count(*) > 0 and post_time > ${start} and post_time < ${end} limit 5000" /> And don't forget, this aligns with almost every other CA stat...π Let's talk about theBlue Box (old topics that received replies during this time period): I propose those in the blue box(where replies == 1) should be factored into the Average FRT... BUT, that would INCREASE the Average FRT to 26,617. See? Let's update the table: System Average Response Time (minutes) Community Analytics 1,366 Kenton's Whizbang FRT Function 5,426 Community Analytics Export: (July topics only) 5,426 Community Analytics Export: (Including blue where replies == 1) 26,617 π€¦ Where is Community Analytics getting 1,366 from? (I feel like I'm missing something obvious). Unsettled, I tried a theory that got me CLOSE but not exact like previous calculations... πTHEORY: Maybe CA is excluding the extremes? I tried a lot of exclusion scenarios, and the closest I got was this: Exclude everything above 10,000 mins, and Exclude everything below 20 mins This got me pretty close - . 1,344 minutes is close to 1,366 minutes, but is very unconvincing. Back to the table: System Average Response Time (minutes) Community Analytics 1,366 Kenton's Whizbang FRT Function 5,426 Community Analytics Export: (July topics only) 5,426 Community Analytics Export: (Including blue where replies == 1) 26,617 Community Analytics Export: (but ignoring under 20mins and above 10k) 1,344 π So what's right? I vote 26,617 is accurate. It's the only one that truly considers all first replies. Doesn't the "Topics" approach create a situation where many first replies are never considered? Those in the blue box weren't considered in their respective months b/c they didn't have replies. And they are certainly not being considered now. -- even if I retrospectively run the report from April 2023, I get an Average FRT of 743 minutes, which is clearly not considering that 678,620 minute response time ... But, I think the 5,426 is more relevant for day-to-day reporting and decision making. While it's technically inaccurate (e.g, because it leaves out topics that are asked in March but answered in April), it avoids the extreme outliers that slip through the cracks and skew the picture. What do you think? Is there like some simple button I'm forgetting to push? π€ͺkeithkelly2 months agoLeader104Views0likes0Comments1) is AVG_thread_response_time actually TOTAL thread response time? π¬ π±
I speculated about this a year ago, but this week my intrigue was brought back to life. ...so I did some testing... Using: /restapi/vc/boards/id/PolicyInternal/metrics/name/avg_thread_response_time, Iβm getting 64851 minutes for July 1st β 26th: ?date_start=2024-07-01T00:00:00&date_end=2024-07-26T23:59:59 = 64851 minutes That seems way off baseβ¦. To test, I split that in half: ?date_start=2024-07-01T00:00:00&date_end=2024-07-13T23:59:59 = 28847 minutes ?date_start=2024-07-14T00:00:00&date_end=2024-07-26T23:59:59 = 36004 minutes π₯β¦ π₯ β¦ π₯ 28847 + 36004 = 64851 Is anybody (or nobody) else running into this? Is this luck? Am I using the metrics API wrong?keithkelly2 months agoLeader149Views0likes0CommentsGuidance on Removing URL Fragments in Khoros Community Classic
Hello everyone, Google recently provided feedback indicating that using fragments in URLs is not considered a best practice. As a result, I've been asked if we can eliminate fragments on the server side. For example, consider the following URL: https://community.khoros.com/t5/Khoros-Communities-Aurora/Analytics-Support-for-3rd-party-tools-eg-Google-Analytics-Custom/m-p/763108#M246 While Aurora does not use fragments, which is great, I am curious about potential mitigation strategies for those still using Classic. As far as I understand, and I admit I'm not a developer, the only way to address this issue is on the client side via the Page Initialization Script. Is there a possibility to handle this on the server side, perhaps through Khoros Professional Services? Additionally, I have concerns about the impact of removing fragments. If we were to implement a solution, would it prevent users from linking to specific replies? While this may improve SEO, it could also affect core functionality. Any thoughts/feedback is welcome as I'm a bit stumped heretyw2 months agoBoss85Views0likes0CommentsCreate URL for Private Message to Multiple Recipients
Hi I can use this URLhttps://community.khoros.com/t5/notes/composepage/note-to-user-id/106204 to open a private message page with one recipient already selected. Is there a way out of the box to do this for multiple recipients using a list of user ids (or any identifier username is fine as well)? Also, would it be possible to have the broadcast message checkbox already checked as well? Lastly, is there a list somewhere of URL parameters that can be used with this URL? Thanks!Akenefick3 months agoGenius89Views0likes0Commentsremove comments from Q&A
Hi, We are exploring the Q&A option to see if it fits our needs. When I check the out-of-the-box QA question page (qaq-p) in studio, I can see that the main content is all non-contract compontens. <add to="main-content"> <component id="question-view"/> <component id="solutions-with-toggle"/> <component id="answer-list-with-toggle"/> </add> Does anybody know if these non-contract components take parameters to tweak them further? eg. hide the comments section disable the answer button remove the custom tagging ... Thanks77Views0likes0CommentsOnly 2 weeks data?
We are making a call to the Analytics API / Published Posts. curl -s --request POST --url 'https://api.spredfast.com/v2/analytics/export/posts?header=true&delimiter=%2C' -H 'accept: application/json' -H 'content-type: application/json' -H 'Authorization: Bearer $khorosAPIKey' --data '{"query": {"start":"2023-01-01","fields":[$Include_Fields]}}' No matter what I do I only get data going back 2 weeks. This is with or without a start/stop date Any idea why? We have been using Khoros since 2023marc45 months agoContributor61Views0likes0CommentsHow to add Event / Occasion Structured Data markup
Event Structured Data markupon your community's OccasionPage in your blog "makes it easier for people to discover and attend events through Google Search results and other Google products, like Google Maps.". Here's some working code to add a simple JSON linked data set to be used on the OccasionPage. Ideally, you would drop this in a custom component which you add to the page layout. Since it's not rendering I would recommend adding it somewhere towards the end of the page, e. g. in the footer. <#-- This component will add structured markup in form of JSON linked data for OccasionPage (Event). See doc at https://developers.google.com/search/docs/appearance/structured-data/event --> <#assign occasionQuery = "SELECT occasion_data.start_time, occasion_data.end_time, occasion_data.status, occasion_data.featured_guests FROM messages WHERE id = '${page.context.thread.topicMessage.uniqueId}'"/> <#assign occasionInfo = rest("2.0", "/search?q=" + occasionQuery?url("UTF-8") + "&restapi.response_style=view").data.items /> <#attempt> <#assign images = (liql('SELECT original_href,width FROM images WHERE messages.id = "${page.context.message.uniqueId}"').data.items) /> <#recover> <#if DEBUG?? && DEBUG> ${query} ${.error} </#if> </#attempt> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Event", "name": "${page.context.message.subject}", "startDate": "${occasionInfo[0].occasion_data.start_time?datetime} GMT${occasionInfo[0].occasion_data.start_time?datetime?string('Z')}", "endDate": "${occasionInfo[0].occasion_data.end_time?datetime} GMT${occasionInfo[0].occasion_data.end_time?datetime?string('Z')}", "eventStatus": "https://schema.org/EventScheduled", "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode", "location": { "@type": "VirtualLocation", "url": "${page.context.thread.webUi.url}" }, <#if images?? && (images?size gt 0) > <#attempt> "image": "${http.request.serverName}${images[0].original_href}", <#recover> "image": "${http.request.serverName}${asset.get("/html/assets/community-default-image.png")}", </#attempt> </#if> "description": "${page.context.message.bodyRaw}", "offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD", "availability": "https://schema.org/InStock", "validFrom": "${page.context.message.postDate?datetime} GMT${page.context.message.postDate?datetime?string('Z')}", "url": "${page.context.thread.webUi.url}" }, "organizer": [{ "@type": "Person", "name": "${page.context.thread.topicMessage.author.login}", "url": "${page.context.thread.topicMessage.author.webUi.url}" }] } </script> Some comments: If no image is found with the Event message then a default community placeholder cover image is expected at/html/assets/community-default-image.png I'm assuming all events are virtual ones. If that's not the case for your community you might want to check against occasion_data.is_live_stream Google's markup definition also includes more variants foreventStatus if the event got moved from in person to virtual, cancelled etc. I couldn't find a good equivalent in Khoros Event data so every event is just marked up as EventScheduled (with a future or past start_time) π Event guests should probably be included in the markup as "performers", but I gave up listing the content of the occasion_data.featured_guests hash. Maybe you can make it work and share back the improved code?75Views2likes0Comments