Genesys Cloud - Main

 View Only

Discussion Thread View
Expand all | Collapse all

In Queue Audio Prompt Real Time Update

  • 1.  In Queue Audio Prompt Real Time Update

    Posted 02-20-2024 15:46

    Hi all,

    Looking for some advice / insight / help on a problem I am running into with an in queue flow and playing a real time updated prompt to users who are already in the queue.

    Situation is when we have an outage with our services, we are looking for a way to let customers who are already in an in queue flow to hear the message about the outage to help deflect some of the volume we receive during these times. In reviewing the resource center and this thread, it appears as if a dynamically referenced audio prompt should play a real time message (IE replacing blank audio in a prompt with new content, customers should hear that new content who are already in an IQF). What we are running into when testing this is once the audio prompt is updated to anything other than the blank audio, the blank audio is still playing in the prompt rather than the new content. I have tried doing as a call to a common module to play the audio and then sending back to IQF, find user prompt action into play audio and referencing the variable as the prompt name to play,  wrapping the play audio in flush audio, using ToAudio(FindUserPrompt()) expression, but it will not play anything other than the blank audio until I end the call and call back and only then do I hear the new content. 

    Any idea or insights on what I may be doing wrong or another solution to this situation would be appreciated. 


    #ArchitectureandDesign

    ------------------------------
    Jim Mayer
    Colorado Springs Utilities
    ------------------------------


  • 2.  RE: In Queue Audio Prompt Real Time Update

    Posted 02-20-2024 17:06

    The problem you have, I believe, is for new Prompts (or edited Common Modules) to be picked up, the consuming flow (in this case the in-queue flow) must be re-published. When this happens, calls already in the flow continue in the original version of the flow.

    One way to do this might be to dereference the Prompt name. So, rather than specifying the Prompt directly in your Play Audio, use "Expression" and then put something like:

    ToAudio(FindUserPrompt("The_Prompt"))

    as the expression. With any luck, this will cause the system to load the new version immediately.

    HTH



    ------------------------------
    Paul Simpson
    Views expressed are my own and do not necessarily reflect those of my employer.
    ------------------------------



  • 3.  RE: In Queue Audio Prompt Real Time Update

    Posted 02-20-2024 17:39

    Hi Paul, thank you for your reply! 

    I have tried the ToAudio(FindUserPrompt("The_Prompt")) as well as FindUserPrompt action but these are not working in either the IQF, it will play the prompt to new callers who come into the call flow, but not callers who are already in the IQF. From what I have been reading it shouldn't cache the content of the prompt when using either of these options and should play the most current message. 



    ------------------------------
    Jim Mayer
    Colorado Springs Utilities
    ------------------------------



  • 4.  RE: In Queue Audio Prompt Real Time Update

    Posted 02-20-2024 17:45

    Jim,

    In which case, I'm afraid I've got nothing. 😥

    My only other thought would be to have the text of the message stored in a Data Table and then read it in on each iteration of the loop and use TTS to play it. Not what you are after, but it might provide a temporary fix?



    ------------------------------
    Paul Simpson
    Views expressed are my own and do not necessarily reflect those of my employer.
    ------------------------------



  • 5.  RE: In Queue Audio Prompt Real Time Update

    Posted 02-20-2024 17:59

    The find functions & actions cache the objects they look up for the duration of the flow instance.  Some examples:
    1) Call comes into flow1.  Look up prompt X--1st lookup of this prompt in this flow instance, fetch it.  Do some other stuff.  Look up prompt X--hang up, we've already done that, just use what we already retrieved.
    2) Call comes into flow1.  Look up prompt X--1st lookup of this prompt in this flow instance, fetch it.   Transfer to flow2.  Look up prompt X--new instance of this other flow, fetch it.
    3) Call comes into flow1.  Look up prompt X--1st lookup of this prompt in this flow instance, fetch it.   Transfer to flow2.  Transfer back into flow1.  Look up prompt X--new instance of flow1, so fetch it.

    For an inqueue flow, you don't want to transfer away & back in b/c that will move the caller to the end of the queue.  Are you okay with playing TTS to the customer instead of a prompt recording?  If so, use a data table with the string of the TTS to play and look that up instead.  The flow will get the updated value for that.



    ------------------------------
    Melissa Bailey
    Genesys - Employees
    ------------------------------



  • 6.  RE: In Queue Audio Prompt Real Time Update

    Posted 02-20-2024 19:24

    To make sure I am following, FindUserPrompt and ToAudio(FindUserPrompt()) these actions themselves do not cache the prompts, however they cache the prompt for each flow instance when it starts so even if the prompt changes, its running off of the "cached" prompt, right?. So in the case of transfering to get around the "caching", it would have to a flow rather than a common module? 

    What does flush audio do then if not remove the "cached audio"?

    Lets say we wanted to go the route of transfering between flows, one way around that would be setting call priority based on how many times its gone through the "loop" so to speak of transferring back and forth between flows, right? So if its their very first time into the IQF, we would set a variable to 0, and set call priority to that variable. If it wasnt their first time back in the flow, we check the variable, increment it by 1, and then set call priority to that. Would that process work? 



    ------------------------------
    Jim Mayer
    Colorado Springs Utilities
    ------------------------------



  • 7.  RE: In Queue Audio Prompt Real Time Update

    Posted 02-21-2024 07:26

    To make sure I am following, FindUserPrompt and ToAudio(FindUserPrompt()) these actions themselves do not cache the prompts, however they cache the prompt for each flow instance when it starts so even if the prompt changes, its running off of the "cached" prompt, right?
    It's not caching in the same way as https://help.mypurecloud.com/articles/updated-prompt-behavior-call-flow/ which locks in the audio of the prompt in at publish time.  It caches the audio from the 1st lookup of the prompt in the current flow instance.

    So in the case of transfering to get around the "caching", it would have to a flow rather than a common module? 

    The actions of a common module is embedded into the calling flow when it's published, it does not run as a separate flow at runtime.  It will never get you around any limit. https://help.mypurecloud.com/articles/work-with-common-module-flows/

    What does flush audio do then if not remove the "cached audio"?
    You're talking about a different meaning of "audio" and a different type of cache.  The cached audio in this case is not specifically a prompt.  All audio to be played to the customer (TTS and prompts) is buffered (cached) and flushed (played out loud) periodically.  Instead of playing the 1st piece of audio, do some other actions that take some milliseconds, play the 2nd piece,... what happens is queue the 1st piece of audio, do other actions, queue 2nd piece of audio, . . . . play all queued audio at once.
    https://help.mypurecloud.com/articles/audio-buffer-and-flush-in-architect-flows/
    https://help.mypurecloud.com/articles/flush-audio-action/
    https://help.mypurecloud.com/faqs/when-does-architect-force-audio-to-flush/

    Would that process work? 
    In theory but test it out first and make sure you're happy with the results.  I image it could screw with your reporting & analytics; the estimated wait times for the queue will probably be somewhat inaccurate.  You're going to have to use participant data to keep track of the loop increment.  Make sure you really want to add a full minute of priority every time it loops.  

    Honestly the data table is a better idea.  You can even use it to hold the name of the prompt to play.  When you want a different audio recording, create a new prompt, upload the recording, then update the data table row with the new prompt name.



    ------------------------------
    Melissa Bailey
    Genesys - Employees
    ------------------------------



  • 8.  RE: In Queue Audio Prompt Real Time Update

    Posted 12-13-2024 15:09

    "... Are you okay with playing TTS to the customer instead of a prompt recording?  If so, use a data table with the string of the TTS to play and look that up instead.  The flow will get the updated value for that."

    This is the route we ended up going. We're already using TTS for all front-end messages (outage, promo, etc.) and this works perfectly.

    We're able to continue using our bot to update those messages and the messages update immediately for all callers, even those who end up cycling through the queue flows during times of high call volume. 

    Thanks!



    ------------------------------
    R. Brandon Weaver
    Science Applications International Corporation (SAIC)
    ------------------------------



  • 9.  RE: In Queue Audio Prompt Real Time Update
    Best Answer

    Posted 02-21-2024 10:22

    OK, I have an idea, based on what everyone has said....

    1. Create a Data Table for settings. In this table store the name of the Prompt in the Prompt Library.
    2. Create a "silent" prompt and put its name into the Data Table
    3. In your In-Queue Flow, each time around the loop, re-read the value from the Data Table and use it within 
      ToAudio(FindUserPrompt(DataRetrievedFromTable))
    4. When you need to change the message, record it as a new Prompt, then change the value in the Data Table to point to it.

    In this way, since it's a new Prompt, the system should "cache" the new audio when it detects it.

    Let us know if that works.

    HTH



    ------------------------------
    Paul Simpson
    Views expressed are my own and do not necessarily reflect those of my employer.
    ------------------------------



  • 10.  RE: In Queue Audio Prompt Real Time Update

    Posted 02-21-2024 18:04

    Paul, that idea nailed exactly what we were trying to do and it worked, thank you for the help! Tested it multiple times and it will catch the new audio and play that to customers who are already in the IQF. 



    ------------------------------
    Jim Mayer
    Colorado Springs Utilities
    ------------------------------



  • 11.  RE: In Queue Audio Prompt Real Time Update

    Posted 11-21-2024 11:11

    I'm needing to do this as well.

    Jim, could you sort of walk me through what you did here?



    ------------------------------
    R. Brandon Weaver
    Science Applications International Corporation (SAIC)
    ------------------------------



  • 12.  RE: In Queue Audio Prompt Real Time Update

    Posted 11-21-2024 11:18

    For variable prompting, I have always used TTS to allow for quick updates and no need to republish the flow.



    ------------------------------
    Robert Wakefield-Carl
    ttec Digital
    Sr. Director - Innovation Architects
    Robert.WC@ttecdigital.com
    https://www.ttecDigital.com
    https://RobertWC.Blogspot.com
    ------------------------------



  • 13.  RE: In Queue Audio Prompt Real Time Update

    Posted 11-21-2024 11:36

    That's what I'm currently doing. I created a bot that allows users to udpate the TTS of a given prompt. It works great in every scenario except while waiting in queue. If I update the TTS of a prompt that plays in queue, new callers routed into queue will hear the update, but callers who are cycling through the queue will never hear to new update; just continues to repeat the previous TTS.



    ------------------------------
    R. Brandon Weaver
    Science Applications International Corporation (SAIC)
    ------------------------------



  • 14.  RE: In Queue Audio Prompt Real Time Update

    Posted 11-21-2024 11:39
    Edited by Jim Mayer 11-21-2024 13:29

    The only draw back to that approach Robert is that doesnt solve for callers that are already in the In Queue Flow. For our use case, we use the process to help reduce callers waiting when there are outages who may have called and are holding prior to the outage message being put it. The IQF snapshots the voice prompts so changing it will only provide the update to new callers, not currently holding callers. 



    ------------------------------
    Jim Mayer
    ------------------------------



  • 15.  RE: In Queue Audio Prompt Real Time Update

    Posted 11-21-2024 11:37

    Hi Brandon. 

    What I did was follow Paul's steps above. For this to work, you need to create a data table that your in queue flow references to pull the prompt name that needs to be played, and a blank audio prompt that it will be set to for when its not in use. In our case, I have a prompt tilted "BlankAudio" with 100ms of silence, this is the default value on the data table and when the process is not in use so our customers wont notice anything different other than a small blip of silence. When you need to play a new prompt to callers that are already in or are going to be in the in queue flow, you update the row on the data table to the name of the prompt you need to have played instead.

    On the in queue flow, I start it with 5 seconds of hold music so the customer knows they are waiting in the queue, and then call Data Table LookUp, pass through the "Key" for the item you are looking for and store the value in a variable. The 5 seconds of music helps because if you do it right away its all dead air until the action completes, so this is more of a customer experience point. You then have a PlayAudio action set to an expression to do a lookup on the prompt to play, example is ToAudio(FindUserPrompt(Flow.OutagePrompt)). I have mine in a common module to make it easier to implement on multiple in queue flows. 

    Benefit of this is that it plays 100ms of blank audio when not engaged, and when it is engaged it will pick up the new prompt when the IQF loops back to the top for callers already in the IQF. 



    ------------------------------
    Jim Mayer
    ------------------------------



  • 16.  RE: In Queue Audio Prompt Real Time Update

    Posted 11-21-2024 11:46

    Thank you for that thorough walkthrough, Jim!

    Much appreciated.

    It's a shame that simply updating the TTS will not work. I wish Genesys had not designed the audio to cache the way that it does; so that doing a FindUserPrompt doesn't dynamically update the TTS in queue like it does otherwise.

    Thanks again!



    ------------------------------
    R. Brandon Weaver
    Science Applications International Corporation (SAIC)
    ------------------------------



  • 17.  RE: In Queue Audio Prompt Real Time Update

    Posted 11-21-2024 11:58

    Are you saying that if you have a table lookup for the TTS and you do that in the in-queue flow, it will not pick up any changes to the data table and not play the new TTS prompt?  @Jim Hendry or @Peter Stoltenberg, have you seen this or can you test?



    ------------------------------
    Robert Wakefield-Carl
    ttec Digital
    Sr. Director - Innovation Architects
    Robert.WC@ttecdigital.com
    https://www.ttecDigital.com
    https://RobertWC.Blogspot.com
    ------------------------------



  • 18.  RE: In Queue Audio Prompt Real Time Update

    Posted 11-21-2024 12:10

    Robert, no, I haven't tried using a data table for this. Our customers are currently using a digital bot to update the TTS field of their promo prompts.
    But, updates to TTS prompts are not dynamically updated for folks who are already waiting in queue; only for new calls that route to the in-queue flow.
    This is due to how Genesys caches or queues up the audio for a given queue at the get-go, so that any udpates to it are not experienced by folks who have already entered the queue flow.
    Our customers are used to handling this themsleves, without us admins getting involved.
    We'd like to keep it that way since we have numerous customers, each having several prompts that are updated frequently throughout the day.



    ------------------------------
    R. Brandon Weaver
    Science Applications International Corporation (SAIC)
    ------------------------------



  • 19.  RE: In Queue Audio Prompt Real Time Update

    Posted 11-21-2024 14:03

    I've added an idea for this: https://genesyscloud.ideas.aha.io/ideas/SSAAOB-I-230



    ------------------------------
    R. Brandon Weaver
    Science Applications International Corporation (SAIC)
    ------------------------------



  • 20.  RE: In Queue Audio Prompt Real Time Update

    Posted 11-21-2024 18:51

    Yes, caching of prompts has always been an issue.  We moved to using dynamic prompt lookup based on a table lookup years ago for intermittent announcements.



    ------------------------------
    Robert Wakefield-Carl
    ttec Digital
    Sr. Director - Innovation Architects
    Robert.WC@ttecdigital.com
    https://www.ttecDigital.com
    https://RobertWC.Blogspot.com
    ------------------------------



Need Help finding something?

Check out the Genesys Knowledge Network - your all-in-one access point for Genesys resources