Count unique users in a thread
Hi all. I recently got the request to have some indication of howbig a reported issue is, directly on a topic page. As you know, a thread can have a hundred replies, but it might only be five users and some mods going back and forth. So, I put this very simple component together; not to get an exact count, but to get some indication of the gravity of a situation. It basically takes a maximum of 500 (configurable) replies and counts the number of unique users. You can easily wrap it in a conditional that will only make it run for specific roles, you could also add some code to use the cache and not have it run every time the page loads, that way the impact shouldn't be too big, but I thought I'd just share the basic premise. <#assign msg_id = page.context.message.uniqueId/> <#assign limit = 500/> <#assign query = restadmin('2.0','/search?q=' + 'SELECT author.id FROM messages WHERE parent.id = "${msg_id}" LIMIT ${limit}'?url)/> <#assign user_ids = []/> <#list query.data.items as q> <#if (user_ids?seq_index_of(q.author.id) < 0)> <#assign user_ids = user_ids + [q.author.id]/> </#if> </#list> <#assign id_count = user_ids?size?number + 1/> <#if (id_count >= limit)> <#assign id_count = id_count + "+"/> </#if> <span class="cust-unique-users-count">Unique users in this thread: ${id_count}</span>396Views1like13CommentsHow do I get the total amount of post in the Community?
Hi, I'm trying to find out how I can retrieve the total amount of post on the community. I tried a lot of methods, but I get very different results. 1./restapi/vc/metrics/name/posts 2.Admin -> Metrics -> Overall post 3. LSI Content -> All categories -> Community structure -> Posts (I can only get 6 months of data per run) 4.api/2.0/search?q=select"count(*)" from "messages" Can someone tell me what the correct way is? Thanks in advanced, AmarAmarDoekhie5 months agoHelper288Views0likes7CommentsChange header logo link?
Where would I change the href in the header logo link? I cannot find anywhere to edit this code. Currently it defaults to "/" but i'd like it to point elsewhere: <div class="custom-community-header-logo"> <h1> <a href="/" style="background: url('<logo-image>') no-repeat 50% / contain;"></a> </h1> </div>Solvedbrentcam5 months agoAdept358Views1like7Commentsquery with date field
trying to find out posts between two dates in "message" i have something like https://mycommunity/api/2.0/search?q=SELECT%20post_time,%20post_time_friendly%20FROM%20messages%20WHERE%20ipost_timeBETWEEN TWO dates so, the query is pretty much SELECT post_time, post_time_friendly FROM messages Where [post_time between two date] i am open to use either post_time or post_time_friendly But my question is how to fit in the 2 dates. I tried different ways but none works anyone can help? thanksSolvedsoftech5 months agoGuide329Views1like8CommentsWhat is FreeMarker user.generateLinkUserToken(<string>)?
user.generateLinkUserToken(<string>) is a not documented method on the custom global user context object the FreeMarker implementation of Khoros provides. calling it with any string argument returns a token like "A7bd_xYIOp6xn6A9dt42rpGqfVDnczYuSKDblZ42ewHydRTKqCE5iluHu_7P0QTdxIU47Mq8t7eGNrN7GbUzLpkKcaNPNI5osNHfgsw0ihY-I6q0XKkHJa_EN_Rh9FmHZRb1WfjE8KxWqvTm9Y4n33B7H4RTStTa3fgty_mn2sMw5fyGE-uJhG5ZUy5UcTjSB7j_wAH1rr9wb2WUtqwMPygZa6pBtD3qV5fm44KfQ4wCIT9s3ymrdP5FVt4iwswPxaQAQS-rsCdmjAPnAQbnuZfGQXQZXsJnv1cMF_DicpY3lk" but the question is, what is it useful for (for example generating lia-action-token which are used for oob Khoros form submissions) and what is the string argument supposed to be? I have a feeling only Khoros devs might be able to answer this question, therefore taggingLarryIso you can forward this to the appropriate person.luk5 months agoBoss394Views1like4CommentsOnly 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 agoContributor61Views0likes0CommentsAdobe AEM integration with Khoros ( For Comments )
Hi Team, This is regardingAdobe AEM integration with Khoros. We have a requirement like, We need to create the pages in AEM. But, Comments ( User generated content ) should be stored in Khoros. When I create a page in AEM , it should create one specific comments thread in Khoros as well. Users ( Customers ) Should be able to read/create /update/delete comment on the page ( which is in AEM) but , comments should be stored in Khoros. When ever I create a new page , it should create one unique comments thread in Khoros. Any suggestions please.273Views1like5CommentsBlock New Replies - API?
Hello everyone. I am new to development for the community that I manage and am looking for guidance on solving a process that we are attempting to accomplish. In summary, we have a mature community of over 12 years with a large number of threads that are considered dated. Once we set up the parameters to isolate these threads we'd like to block new replies. To my knowledge there is no way out of the box to accomplish this in bulk and one by one is simply not reasonable. I believe that API calls would be my solution here and I have no idea where to begin. Any help would be truly appreciated. We are current on community version24.2 (24.2-release r2404161404) and havenot updated to Aurora yet.Solved162Views1like3Commentshttp.client.request is caching the response being received from the third-party API. Not required.
http.client.request is caching the response being received from the third-party API for about 5 seconds( approx ,the actual value can be different ). (Ex: <#assign translatedResp = http.client.request("https","${url}","${endpoint}"). parameter("key","${apiKey}").header("Content-Type","application/json").body("${bodyObjString}", "application/json").post()/> ) The use-case I am looking at is using one particular endpoint to make separate calls with different parameters one after the other. But, I am not able to do so since the endpoint is returning the same response even after the call made is different, with different parameters. If I do set a delay of about 5 seconds after every call, it is able to respond back the fresh response, but it is not optimal to have this much delay. How do I set the output/response to not be cached at all?Solved146Views0likes2CommentsHas anyone built a Multi-Faceted Leaderboard (or does one exist OOTB)?
Like, "Top Users over past 30 days" that accounts for multiple factors (maybe replies are worth 2 points, kudos 1 point, etc.) I don't believe anything like this exists OOTB. Can anyone confirm, or has anyone built something like this before?keithkelly5 months agoLeader153Views1like3CommentsIntegrating Community with Google Translate
Hi We are exploring integrating google translate into our community. So, I had a couple of questions. Google uses Oauth 2.0 as detailed herehttps://developers.google.com/identity/protocols/oauth2/service-account#httprest which I am completely unfamiliar with. So, I have been slowly working my way through these instructions to request the access token from google. I'm up to generating the signature which google says requires RSA SHA256 algorithm. In the Khoros documentation I found thisdigest.hmac("algorithm","key","message") (khoros.com)and it looks like I can use HMAC SHA256. Again, all of this is Greek to me😀 but a little searching tells me HMAC and RSA are two different things. So, does anyone know if RSA is possible with Khoros? I can't find anything about it in the documentation. Also, has anyone else done this kind of integration specifically with google translate? If so, can you share how to do this authentication? Thanks!SolvedAkenefick5 months agoGenius242Views0likes4CommentsWebhook with Skilljar to automate badge granting
Hey community! I'm trying to set up a webhook from Skilljar to Khoros that would trigger when a Skilljar user completes a Skilljar certification. Ideally when this trigger happens in Skilljar, a Khoros Community badge would be granted on a user's corresponding Khoros profile to show that they've earned their certification. I believe I may technically need to set up a custom role to grant the badge, so technically the webhook would trigger a role grant, and then the role grant would grant the badge. If anyone has ever set something like this up before, please let me know!115Views2likes1CommentReceiving Upstream Error on trying to connect with the Khoros API
I am trying to connect an external app to use Khoros API, the app uses OAuth 2.0 flow. It seems like it passes the first step authorization and gets the auth code back but errors out in the middle with API upstream error. Any ideas why this error might occur?92Views0likes1CommentPagination in Search API v2
Hi, I'm using Search API v2 to get users detail and below is my python script. import requests url = "https://[COMMUNITY DOMAIN]/api/2.0/search?q=SELECT%20distinct%20id%20FROM%20users%20where%20last_visit_time%20%3E%3D%202024-02-01T00%3A00%3A00%20order by%20id%20asc" headers = {'Authorization': '<access_token>'} response = requests.get(url, headers=headers) I successfully fetched the results using the Search API v2 to obtain user details. Furthermore, I received the next_cursor token for pagination. However, when attempting pagination using this token, I encountered an issue where subsequent requests with the cursor parameter appended to the URL or passed as a parameter yielded the same results as the initial API call. 1. adding cursor parameter to the url itself. url = "https://[COMMUNITY DOMAIN]/api/2.0/search?q=SELECT%20distinct%20id%20FROM%20users%20where%20last_visit_time%20%3E%3D%202024-02-01T00%3A00%3A00%20order by%20id%20asc&cursor=<next_cursor>" 2. pass next_cursor as parameter request.get(url,headers, params={'cursor':<next_cursor>}) Could someone assist me in resolving this issue, or perhaps suggest an alternative approach to retrieving all the records?prasath5 months agoHelper160Views0likes2CommentsShow avatar in e-mail
I'm trying to show avatars in e-mail like the person giving likes or doing an action. I found that${kudos.actor.avatar.url}gets me an url in the e-mail but it's an url without extensionlike .jpg or .png and so this gives a bad link in the e-mail I receive. Anybody knows how to use this correctly or get a different url? The url i get now is: [domain]/t5/image/serverpage/image-id/428i51F875D0BED8F616/image-dimensions/200x200/image-coordinates/0%2C0%2C400%2C400?v=v2wkennis6 months agoGuide198Views0likes5CommentsInvalid characters for Analytics downloaded topics for other languages
All downloaded CSV content topics for other languages has invalid characters in Community Analytics. Can this be fixed? As per support and engineering this is an issue with MS Excel as it works fine with Google sheets. I am surprised to know that Khoros coding is not compatible with MS Excel. Curious to know how local language teams use these exports? Do they all follow that tedious process of converting the MS excel files manually?Parvez_AL6 months agoAdvisor83Views0likes3CommentsLab / Idea / Unconference Meetup?
I have a couple things on my community backlog that probably require some level of customization - I tend to be looking for stuff in Atlas that already has some traction or headway AND I see lots of "under consideration" ideas AND I see lots of "Did anybody make an XYZ widget in their community..." questions BUT what I haven't yet found (beyond this forum itself) is an available time and place for Devs to get together on their own and either attack a specific common problem OR talk together through a top of mind issue. It could be anything from a KhorosLed affair or even just an Unconferencewe put on ourselves. Would be REALLY great if there was a vanilla lab stood up to do actual live-action work that participants could then try to leverage in their own environments later. Am I just not finding this yet? Do we need to bootstrap something? BlakeH- has this come up before?1.1KViews10likes26Commentshow to parse json file in the assets?
Hello everyone, I am trying to get json file content in the component to be passed as a parameter to macro, so how can this be achieved? PS. the file exists in the studio assets I tried <#assign doc=asset.get("/html/assets/products.json") > however this didn't work? Thanks in advance, Shery436Views1like2CommentsIncrease the "My Group Hubs" list to more than 5?
I'm hoping there's an admin setting, or a "count" attribute to add to the component call. If not, I'd like to create a custom component, but looking through the grouphub object reference, I don't see a constraint to return only "my" group hubs. Is there a way to either: Increase the # of items shown in the list, or select foo, bar, baz from grouphubs where I'm a member Any help would be super-appreciated!keithkelly6 months agoLeader273Views2likes7CommentsCan We Truncate Subscription Email Post Body?
Problem: User reads an email subscription message body, which prevents them from checking out the actual thread. Negatives: metrics don't count, formatting (e.g., strikethroughs) don't show, etc. Desire: Truncate message body w/ ellipsis. "A flux capacitor will help by eliminating the rotary sonar eff... [continue reading]" Is this possible?keithkelly6 months agoLeader238Views0likes7CommentsWhy am I sometimes getting 'Validation exception for id' error using LiQL for users?
Here is the error message: Exception: Validation exception for id in WHERE clause: id <= 490884 Here is my request: [...]api/2.0/search?q=SELECT login, id, first_name, last_name, email, join_date FROM users WHERE node.id = 'grouphub:30' AND id <= '500000' LIMIT 1000 CURSOR 'xyz' We have a Python script that pages through, using the cursor, 1000 at a time. This error comes up for only some id's. Is there any fix for this? Or any idea why this is going wrong?nataliesta6 months agoContributor98Views1like2CommentsCan someone explain how to filter by last_publish_time
I am trying to write a custom component that involves filtering by last_publish_time (we're trying to grab posts from the past 7 days). But I'm having a difficult time understanding what number to use for last_publish_time. In this LiQL dochttps://developer.khoros.com/khoroscommunitydevdocs/docs/messages#last_publish_time-1they use seemingly arbitrary and huge numbers that I can't make sense of. But in this dochttps://developer.khoros.com/khoroscommunitydevdocs/docs/get-messages-posted-or-edited-in-a-specified-range-of-timeit references using "n days" when using this in a filter. Can anyone explain how to calculate the number to use? Ideally we'd like something like SELECT * FROM messages WHERE last_publish_time <= 7 days Obviously that doesn't work, just an example of what I'm trying to figure out 😉 Thanks!SolvedNatkinson6 months agoGenius624Views0likes2Commentsshow last edited date on TKB articles
Hi all, I have been struggling with a requirement we have for our TKB. OOO, Khoros shows the creation date for TKB articles. We regularly update our TKB articles and as such we want to show last edited date on TKB articles. Has anyone done the same and can guide me in the right direction? I have been trying to update thetheme-lib.utility-macros to show the last_post_time but that does not seem to work. Any ideas would be appreciated. Thanks,. Erik210Views1like5CommentsGroup Hub - Adding "Start a conversation" button
Is it possible (or how hard would it be) to create a button that starts a conversation in the Group Hub's forum? I can hardcode it like so: <a href="/t5/forums/postpage/board-id/BetaGHforum-board" class="lia-button lia-button-primary">Start a Discussion</a> But that's not ideal. We're using Group Hubs that only contain a forum (no TKB, blog, or ideas), so clicking the "Forum" button feels like an unnecessary step.keithkelly6 months agoLeader742Views0likes6CommentsHow to add ProfilePage Structured Data markup
Google just announced the availability of a new Profile Page structured data markup. This is intended to make Profile data of creators (like community members) available for richer search results and insight. Alongside the announcement they also added support for testing this new markup in Google Search Console. Here's the Freemarker code to create JSON linked data payload to be added to a Khoros Classic community's View Profile Page <#-- This component will add structured markup in form of JSON-LD. To be placed anywhere within ViewProfilePage --> <#if page.name == 'ViewProfilePage'> <#assign userInfoQuery = "select kudos_received.sum(weight), kudos_given.sum(weight), messages.count(*), rank.name from users where id = '${page.context.user.id}'"/> <#assign userInfo = rest("2.0", "/search?q=" + userInfoQuery?url("UTF-8") + "&restapi.response_style=view").data.items /> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "ProfilePage", "dateCreated": "${page.context.user.registrationTime}", "mainEntity": { "@type": "Person", "name": "${page.context.user.login}", "identifier": "${page.context.user.id}", "agentInteractionStatistic": [{ "@type": "InteractionCounter", "interactionType": "https://schema.org/LikeAction", "userInteractionCount": ${userInfo[0].kudos_given.sum.weight} },{ "@type": "InteractionCounter", "interactionType": "https://schema.org/WriteAction", "userInteractionCount": ${userInfo[0].messages.count} }], "description": "${userInfo[0].rank.name}", "image": "${page.context.user.avatar.sizes.name.print.url}" } } </script> </#if> I've created a dedicated component so I can add it to the ViewProfilePage layout as JSON-LD script payload can go anywhere. Some decision I took to map Khoros profile data: User registration timestamp gets mapped to entity dateCreated property Khoros user id becomes the identifier There doesn't seem to be an equivalent to "likes received" in the ProfilePage spec, so I only mapped the "Kudos given" profile metric to the LikeAction property I'm using the user's rank name to the description property since user bio gets populated super rarely. That might be different in your community so you could change that. I hope this code is useful and would love to hear if you think my interpretation of the ProfilePage spec fits. Please share back if you are making improvements to the script.190Views4likes3CommentsTo hide the default user name appearing in browser tab of view profile page.
Hi, Can any one suggest me how i can hide the default user name which appears in browser tab while loading view profile page. Please find the screen shot "actual_behaviour.png" for more details. We wantto change the default username in the tab. Thanks & Regards, Vishwajit307Views0likes8CommentsCaching node variant - inconsistent results
Hi, We have a category on our community that contains 5 child TKBs. I've built a menu so that on the category page, it shows the 5 TKBs, clicking on the first one will take you to the first article in that TKB (via a redirect). Once in the TKB, the menu will display all of the articles for that specific TKB. The problem I have, when using liaMarkupCache and "node" variation, the sub-menu doesn't populate on that first page of the TKB. It's like it's caching the result from the category page, despite different coreNode.id's for each. I assume the redirect is messing with things somehow, but not sure how? The TKB page shows the same coreNode.id as its children, so I assume the "node" variation would still work. Any help appreciated.Kev_B6 months agoAdvisor167Views0likes2CommentsNeed the API calls usage metrics per user
Hi Developers, I am looking for the restapi data set that can provide the V1 API calls usage metrics per user that is we can filter out on the basis of user id. I have referred to the documentation here:https://developer.khoros.com/khoroscommunitydevdocs/docs/api-1-metricsbut was not able to find the class name and path name that can help us to get the metrics for a specific user. For example, I am looking for something like:/restapi/vc/metrics/name/restapi.call.user/id/[User ID]/count?date_start=2021-05-01T00:01-05:00&date_end=2021-05-31T23:59-05:00&xslt=json.xsl Any help will be much appreciated. Thanks in advance REST APIKhoros CommunitiesBulk Data APISolvedhim_varma6 months agoAdvisor169Views0likes2CommentsMigration From Vanilla Forum to Khoros Community
Hi Team, We are migrating from vanilla forum discussions to the Khoros community platform and need assistance with migrating essential data, including discussion and comment details. The data we possess comprises Discussion IDs, Topic Names, Discussion Bodies, Creation Dates, Comment IDs, Comment Bodies, and Comment Insertion Dates. We are seeking guidance on the recommended approach for migrating this data into Khoros.Could you please provide documentation, APIs, or scripts that would facilitate this migration process? Note: All users associated with this data already have sso accounts established within the Khoros platform.prasath6 months agoHelper180Views0likes3CommentsDoes <@liaMarkupCache> cache the ajax calls in a component?
For example, if you're calling an endpoint and you want to cache the response (JSON) from that endpoint, will this cache it? <@liaMarkupCache ttl="100000" variation="node" anonymousOnly="false" /> <@liaAddScript> (function($) { $(document).ready(function() { $.get( "${my_endpoint_url}" ).done(function( data ) { let dt = new Date().toLocaleString() console.log(dt, data); }).fail(function() { console.log('fail'); }) }); })(LITHIUM.jQuery); </@liaAddScript>isxtn7 months agoAdvisor142Views0likes2CommentsSporadic Success Using Khoros API
Hi, I have created an automated process to update labels on our Community. I get an authentication token with no issues and use our API urlhttps://community.ourcommunity.com/restapi/v1/messages/id/10289/editand send the new labels comma separated through the payload. The strange thing is that only a handful of updates come back with success and most come back with Permission Denied and a 303 error. I have seen others mention the area and that had to do with permissions, but I'm using an admin user who has all the permissions and can produce a authentication key, so I know that is not the issue. I have not been able to find a reason for the error as all of the calls are exactly the same other than the message ID and the labels being sent. Any advice on how to resolve this issue is greatly appreciated.dmenke7 months agoMentor105Views0likes1CommentGetting a copy of API documentation
What's the chances of getting a copy of the entire API documentation so that it could be utilized in an OpenAI GPT? On one hand, someone could scrape the entire site to do this anyways... but on the other hand, it would be amazing if Khoros just could just provide a copy of it like many platforms do to make this very easy. Also curious if the Khoros team is using it internally at all for your own internal purposes? I don't go an hour without using it at this point, thus me asking. Please?156Views4likes2CommentsHow to delete a user by API call?
Hi all, I'm aware there's already a thread on this topic, but it seems outdated since it is stated that: "it is not possible to delete users in the platform". However, as far as I know, there is a "Delete user" feature provided by the admin console that can be used by an administrator in order to delete a user. I'm going to integrate a back-end application (Java based) with the RESTful API provided by Lithium. I need to programmatically remove a user from the community. I've found the API call that is used to add a new userbutI can't find the API call that is used to delete a user. So, which API do I have to call in order to delete a user programmatically? Thanks in advance AmatoAmato7 months agoContributor193Views0likes2CommentsHow to delete users by call API?
Iwant to delete a userby call API , but return error message . My API source code: {removed for security reasons} Return error code: <response status="error"> − <error code="501"> <message>Unknown path element at node 'user'.</message> </error> </response> Ihope this helps thanks. Message Edited by TreyW on 04-28-2009 01:48 PMRoger7 months agoContributor1.4KViews0likes4CommentsDoes moving content update any date field?
Hi there, I'm looking to use the API to get a list of root messages from the platform (depth=0). However there are a lot of messages (nearly 3m) so getting a full inventory every time is impractical; what I'm looking to do is get an initial full list and then update that list with a delta of messages that have been either created since the last pull or edited somehow. The field that I've been using to pull the delta is conversation.last_posting_activity_time. However, it now appears that I've got a bunch of content showing the wrong board, because when moving a message from one board to the next that particular date field is not updated. Question: is there any date field that gets updated when a message is moved? Or put differently: how could I get a list of messages that have been moved from one board to another since a given timestamp? Thanks for any help! Edit: PS: it would be helpful to spell out on this page what exactly updates the last_publish_time field: does updating a product assocation/user tag/label attached to the message update this field? How about moving the message to a different board? The reason I went with conversation.last_posting_activity_time is that it is the more recent of: the last post time (equivalent to the conversation.last_post_time constraint) the last time the topic message was published (the last time a non-draft edit was made) Which means I can also use it to update some summary metrics attached to a message (e.g. reply count). So, does moving a message not count as a "non-draft edit"? It should, shouldn't it?Solved169Views0likes2CommentsAPI v2 Pagination Error
Hi, I'm new to the Khoros community and I'm attempting to retrieve users data from February 2023 until the present using pagination with cursor which has around 1.6 million records. The pagination method is generally effective, but at some point, I encountered two different failure with the error messages while running the script at different times. Note: I'm getting this error after 10/13 iteration. Error: 403 Client Error: Forbidden for url: https://[Domain]/api/2.0/search?q=SELECT%20id,%20sso_id,%20email,%20banned,%20deleted,%20last_visit_time%20FROM%20users%20WHERE%20last_visit_time%20%3E%202023-02-01T00:00:00%20order%20by%20id%20ASC%20limit%2010000%20CURSOR%20'<cursor_value>' Error: 504 Server Error: Gateway Time-out for url: https://[Domain]/api/2.0/search?q=SELECT%20id,%20sso_id,%20email,%20banned,%20deleted,%20last_visit_time%20FROM%20users%20WHERE%20last_visit_time%20%3E%202023-02-01T00:00:00%20order%20by%20id%20ASC%20limit%2010000%20CURSOR%20'<cursor_value>' Additionally, I'm curious if there are any limitations on the number of API calls allowed per day. I'd appreciate any assistance in resolving this issue. Below is the script I'm using. first_url = "https://[COMMUNITY DOMAIN]/api/2.0/search?q=SELECT id, sso_id, email, banned, deleted, last_visit_time FROM users WHERE last_visit_time > 2023-02-01T00:00:00 order by id ASC limit 10000" def fetch_data(url, headers): user_response = requests.get(url, headers=headers) user_response.raise_for_status() response = user_response.json() # print(response) print('Response message: ' + str(response['data']['size'])) print('Response status: ' + str(response['status'])) # print('Response message: ' + str(response['message'])) return response['data'] final_df = pd.DataFrame() def process_data(data): # Process the fetched data here global final_df# Access the global final_df # print(data) df = pd.DataFrame(data) final_df = pd.concat([final_df, df], ignore_index=True) # print('df size', final_df.shape[0]) def paginate(url, headers): while True: data = fetch_data(url, headers) process_data(data['items']) # Check if there's a next cursor in the response if 'next_cursor' in data: # Set the next cursor for the next page request url = first_url + f" CURSOR '{data['next_cursor']}'" print('### Next URL ###', url) # time.sleep(10) else: # No more pages available, break the loop break paginate(first_url, headers)prasath7 months agoHelper462Views0likes9CommentsHow to get a list of deleted messages?
Hi there, I've looked through the documentation and forums and think I have my answer, but I want to double-check. I'm trying to keep a list of messages on Khoros by periodically pulling the latest via LiQL queries. However, I'm starting to have messages that were subsequently deleted, and I haven't been able to find a way to get a list of deleted messages - is this possible? A flag to put into the LIQL statement contraint like "deleted=True" or something would be great. Thanks for any help, LeeSolved178Views0likes3CommentsAPI 2.0 error 605, api.request body size limitation
Hi, I am scripting the creation of articles using the API 2.0 and multipart FORM POST that contains a rather lengthy HTML table of data in the message body, along with 2 file attachments. I am running up against what appears to be a size limit in the API: {"status":"error","message":"The api.request parameter, or the value passed in for the api.request parameter, is not valid.","data":{"type":"error_data","code":605,"developer_message":"This value must be shorter than 100,000 characters in length.","more_info":""},"metadata":{}}++ echo Is there a way around this? FWIW here is how I am constructing the request and sending it: apirequest="apirequest.json" cat <<EOF > "${apirequest}" { "data":{ "type":"message", "subject":"$SUBJECT", "body":"$MSGBODY", "board":{ "type":"board", "id":"test-kb" }, "attachments":{ "list_item_type":"attachment", "items":[ { "type":"attachment", "field":"attachment1", "filename":"$ADDRESSEDFN" }, { "type":"attachment", "field":"attachment2", "filename":"$KNOWNFN" } ] } } } EOF set -x RESP=&(curl -X POST https://communities.sas.com/api/2.0/messages/ -H "content-type: multipart/form-data" -H "li-api-session-key: $SESSIONKEY" -F "api.request=<$apirequest" -F "attachment1=@$ADDRESSED" -F "attachment2=@$KNOWN") echo $RESP Note that I can post the same message body with API 1.0 with no problem using the "message.body" parameter. It does not have issue with the size, but I could not determine how to do the multi-part FORM with the attachments using API 1.0, so that is why I am trying API 2.0.Solvedbrengl7 months agoContributor164Views1like2CommentsSimple Request (😂) Can I make a Message List that shows messages started by Customers?
Searching these forums, it seems this may be hard. But it also feels like it should be a fundamental capability: select * from messages where depth=0 and [that were started by customers] "started by customers" could be determined by email domain is NOT example.com author does NOT have role "Employee" Is there ANY way to accomplish this?keithkelly7 months agoLeader95Views1like1Comment- v-vemami7 months agoHelper406Views0likes2Comments
Is a Studio cheat sheet available?
Good day Titans, I am creating a New Members Group within my community with resources to onboard new customers and make their initial experience positive and productive. I would like to have a content widget with 5 different topics, each containing curated content and destination URLs. Think "choose your own adventure." This group will curate and earmark content to educate new customers and make it easy for them to find relevant information. My ask: Is there a Studio cheat sheet that will clearly explain all the possible components? I would like to have a knowledge base and forum on the same page andcreate something like this without the need for members to toggle between Forum and Knowledge Base within a content widget. Not sure I can do this without customization and debating if I should wait until our Aurora upgrade to implement. Thank you for your tips & suggestions. Cheers, TobyToby7 months agoExecutive344Views1like8CommentsChange users language preference with REST API
I found this article: http://lithosphere.lithium.com/t5/support-knowledge-base/Changing-quot-uneditable-quot-profile-settings/ta-p/104911 But the first step in this article says to login to a user account which has “Make REST API calls with modify access” permissions set to GRANT or ALLOW GRANT. In order for this to work, would this require all users to have this permission turned on? And wouldn't this allow any user to set any value to any users profile, and perhaps have the ability to do anything with the REST API? I’m concerned this will open a huge security risk. I found another article that allows language switching for non-logged in users, and this is working great. I just need a solution to do the same thing for users that are logged in. http://lithosphere.lithium.com/t5/product-support-board/How-to-sett-the-correct-language-option-for-Lithium-s-help-for/m-p/63048/highlight/true#M3052 Any help would be appreciated. Let me know your thoughts, thanks!heavenerp7 months agoLeader366Views0likes5CommentsAdding bookmarks link to user navigation dropdown.
Hello team. I have a requirement where we need to add the Bookmarks option community-wide to the usernavigation dropdown so that it can be made more accessible to the user. Currently, we have achieved this functionality by using JS by appending an element with the URL in it but I wish to know if there is an OOB way to add theBookmarks option in the usernavigation dropdown. I checked it is an OOB component which is being used there for rendering the list so is there any setting through which we can add the desired option? Attaching the SC of the desired location as a reference. Please let me know if there is a way. Thanks in advance.pp_017 months agoMentor157Views1like3Comments