A place to ask questions, connect with others, and stay in the know
I'm trying to run an IVR stream within the genesys engage environment where I want to record the audio sent to the ASR server so it can be used later. To do this use the VXML property "recordutterance":
<property name="recordutterance" value="true"/>
The following parameter was set within the IVR profile:
You can see how the audio is being saved in the following path:
However, when the VXML tries to access the audio after recording, the variable where the audio should be collected (application.lastresult$.recording) is set to "undefined".
The session execution logs show an error when calling a service to get the audio:
FMThreadQueue.cxx:779 Request failed: uri=http://DEMOSRV:8000/, result= 7Fetch error retrieving audio http://DEMOSRV:8000/ error on url http://DEMOSRV: 8000/Environment/callLogs/TestRecordutterance/2023/08August/07/03/NUAN-29-08-DEMOSRV-GENAMHHEAAAEEPIBAAAAAAAAB-utt001-SAVEWAVEFORM.wav, reason Unable to fetch content, callid 0184024D-10007020
Is it possible that some additional service needs to be lifted?Do I need to configure anything on the ASR server to enable audio recording?Is this the correct way to make a recording with the "recordutterance" property?
Hi.We use Windows servers and the following in the vXML script to start the recording of the ASR session
enable callrec recsrc=mixed type=audio/wav;
The recording will be located under the MCP installation in the callrec\fcr folder.The Nunace wave files are located under C:\ProgramData\Nuance\Enterprise\Nuance\callLogs\MyApp
We also had an fetch error regarding the Nuance wav file. That was solved editing the Apache httpd.conf file. Something like <Directory /> AllowOverride none Require all granted</Directory>
Hi Erik. Thank you for your response.
We've achieved to store recordings using your proposal. However, we need to access these recordings during VXML execution.
Is there any way to access audio recordings files stored in 'callrec' folder so we can send them to a third-party service?
Thank you in advance,
Hi Julen. Good to here that you are able to record the ASR. The wav files will be locked while the ASR is running. When the ASR session is finished, they should be available for moving to another location. We run a script every one hour that moves all the finished wav files to another location and merge the files into a tar file and send it to a third party service.
Is it possible that you explain here how the configurations is done to establish that the system does the recordings.
And are the recordings the whole conversations between customer and agent or is it only the IVR part of the call.
And can you tell what you are doing with the recording?
Thanks in advanced.
With kind regards Marko
Hi Marko, thank you for your interest. I'll try to explain here our scenario, the different solutions that exist and the problems related to each solution.
Scenario: What do I do with the recordings?My goal is to use a third party service to process the audio and get some results. To achieve this I need to make an HTTP request at a specific step of the IVR callflow, send the caller string and an audio file with the customer's voice from a part of the call, send them to the third party service, and process the response to continue my callflow in a way or another.Solutions: How can I extract the audio and send it to a service via HTTP for processing?
Solution 1: Use record block
The first option is to use the record block. This solution allows me to record a part of the call with customer voice and store it in a VXML variable. Using an HTTP request I am able to send it to the third party service and process it. This option does not work for me because according to Gensys Engage documentation:
Also, there is a problem with the generation of the VXML code using record block and I have to edit generated code manually to make it work.
Solution 2: Use recordutterance property
The second option is to use the recordutterance property. As I explained in this thread, I managed to save the audio, but the system does not fill the variables with the content of the audio to be able to send it to the third party service to be processed. That is why I ask for help to know if there is something I have done wrong to solve my problem in this way. This solution fits to me because recording is enabled while audio is gathered from user. Also, is a solution compatible with VoiceXML 2.1 (See section 7).
According to GVP8.1 Reference Manual, "Recording User Utterances While Attempting Recognition" section explains how described approach is possible but we can't make it work.
Regarding this solution, I have following questions:
Solution 3: Use FullCallRecording (FCR)
The third solution is to use StartFCR/EndFCR block to record the audio, as proposed by Erik Norheim. This option records user utterance while gathering audio from user and stores it as an audio file. However, this solution does not provide a VXML variable that holds the audio (as solution 1 and 2 do) so we are not be able to send it via HTTP to the third party service.
We can see how audio file is being stored in callrec folder, however we can't read this file in order to send audio to 3rd party service.
This is our scenario and our current possible solutions. As you see, we're having problems with all of them. Any help would be appreciated.
Can you try to use the backend block? As long as you have the recording file path, send it as a property to the backend block, if the file path is accessible through your application server hosting the voice app, you'll be able to write Java code to read your audio file. I'm not sure what your ASR HTTP endpoint is expecting the audio to be received, is it byte stream/array? If yes you can use Java HTTP methods after reading the file to send it to the ASR.
Let me know how it will be going here.
Check out the Genesys Knowledge Network - your all-in-one access point for Genesys resources
Genesys empowers more than 7,500 organizations in over 100 countries to improve loyalty and business outcomes by creating the best experiences for customers and employees. Through Genesys Cloud, the #1 AI-powered experience orchestration platform, Genesys delivers the future of CX to organizations of all sizes so they can provide empathetic, personalized experience at scale. As the trusted, all-in-one platform born in the cloud, Genesys Cloud accelerates growth for organizations by enabling them to differentiate with the right customer experience at the right time, while driving stronger workforce engagement, efficiency and operational improvements.