To answer your question, I haven't applied any additional filtering or custom ranking in my process. I've generally relied on the order returned by the Knowledge search results, which I understand are already ranked by relevance. In other words, I treat Flow.searchResults[0] as the best match, followed by [1], [2], and so on.
I would be interested to hear how your testing goes, particularly in cases where multiple articles have similar titles. One thing I've found is that customers don't always know which title is the most relevant, but your numbered selection approach should help keep the conversation concise and focused.
Original Message:
Sent: 06-08-2026 11:47
From: Nicole VanWie
Subject: Custom Knowledge Logic Question
I ended up setting my displayed knowledge to the first 4 matched articles, and I am certain there are better ways to do what I am testing but this is what I put together after your note the other day.
Create a Reusable Task linked as the custom knowledge path with the following objects:
- Use an Update Data object to determine the COUNT(Flow.searchResults and set a Flow.MaxIndex of 4
- If((COUNT(Flow.searchResults)) > 4, 4,(COUNT(Flow.searchResults)))
- Use a switch Object to display the Article Titles according to the Flow.MaxIndex number
- Under each Switch Case, use an Ask Slot to assign the customer's choice to the Switch Case
- If No Articles or Only 1 Article Case 1 & 2:
- Case 1: Flow.MaxIndex = 0: Communicate Slot: I am sorry, I did not find any articles that match your query.
- Case 2: Flow.MaxIndex = 1: Communicate Slot: Here is what I found; Show Knowledge Article: Flow.searchResults[0]
- If 2 or more articles match Case 3 - 5
- Set Slot result, then use Switch Object to Show Knowledge Article customer selected)
- Case 3: Flow.MaxIndex = 2: MakeCommunication("To help me clarify your goal, *choose a number* from the following list." + "*\n1.* " + Flow.searchResults[0].name + "*\n2.* " + Flow.searchResults[1].name + "*\n3.* None of these")
- Case 4: Flow.MaxIndex = 3: MakeCommunication("To help me clarify your goal, *choose a number* from the following list."+ "*\n1.* " + Flow.searchResults[0].name + "*\n2.* " + Flow.searchResults[1].name + "*\n3.* " + Flow.searchResults[2].name + "*\n4.* None of these)
- Case 5: Flow.MaxIndex = 4: MakeCommunication("To help me clarify your goal, *choose a number* from the following list."+ "*\n1.* " + Flow.searchResults[0].name + "*\n2.* " + Flow.searchResults[1].name + "*\n3.* " + Flow.searchResults[2].name + "*\n4.* " + Flow.searchResults[3].name + "*\n5.* "None of these)
- For queries where there was Knowledge Surfaced, use Digital Menu to ask customer if this answered their question with Yes, No or Exit options.
- Use Send Knowledge Feedback based on customer selection.
I assumed that the knowledge articles are ordered by the highest matching to least matching. Do you apply any filtering or ranking in your process? I may need to do some testing today to see if this works but I believe it is much closer to what I wanted to do than where I was before!
------------------------------
Nicole VanWie
UC Engineer
------------------------------
Original Message:
Sent: 06-04-2026 20:03
From: Phaneendra Avatapalli
Subject: Custom Knowledge Logic Question
Glad to hear it helped, Nicole.
Out of curiosity, are you displaying the article titles first and asking the customer to select an article, or are you displaying the article content directly?
I'd also be interested to know how you're determining the top 5 articles from the results. Are you simply taking the first 5 returned by Flow.searchResults, or are you applying any additional filtering or ranking before presenting them to the customer?
Looking forward to hearing how you've implemented it.
------------------------------
Phaneendra
Technical Solutions Consultant
------------------------------
Original Message:
Sent: 06-04-2026 19:57
From: Nicole VanWie
Subject: Custom Knowledge Logic Question
Hey, thanks Phaneendra.
That was exactly what I was looking for, although I am capping my list at 5. But I just tested and it worked exactly like I wanted it to.
Thanks!
Nicole
------------------------------
Nicole VanWie
UC Engineer
------------------------------
Original Message:
Sent: 06-04-2026 19:44
From: Phaneendra Avatapalli
Subject: Custom Knowledge Logic Question
Hi Nicole,
My approach is a little different. I am currently building a POC using paging logic where I take Flow.searchResults, count how many articles were returned, and then display the results in batches of five articles at a time.
For example, if Flow.searchResults returns 18 matching articles, the customer is informed that 18 articles were found. I then display:
Article 1
[Title + Article Answer]
Article 2
[Title + Article Answer]
Article 3
[Title + Article Answer]
Article 4
[Title + Article Answer]
Article 5
[Title + Article Answer]
After each batch of five articles, I ask the customer whether any of the articles resolved their issue or whether they found what they were looking for. If not, the next five articles are displayed and the process repeats until all results have been shown. I am also looking at introducing a cap on the total number of articles displayed, but that part is still being worked through.
Initially, I tried retrieving and displaying the article title separately before the article answer. However, I ran into issues where the title extraction became unreliable once the result set grew larger, even though I was still only displaying five articles at a time. As a workaround, I ended up incorporating the title into the displayed article content itself.
The intention for this POC is to use it during after-hours support periods when live assistance is unavailable, allowing customers to work through relevant self-help knowledge articles before needing to wait for business hours.
I am also using the Knowledge Feedback action to send feedback back to Knowledge Optimizer, which appears to work almost immediately.
I'm interested to hear how others are handling title selection and presentation with Custom Knowledge Logic.