We've Moved! Please visit our new and improved forum over at our new portal: https://portal.plumvoice.com/hc/en-us/community/topics

Property 'recordcall' not recording part of the call

Questions and answers about IVR programming for Plum DEV

Moderators: admin, support

Post Reply
dwollberg
Posts: 15
Joined: Thu Mar 07, 2019 3:03 pm

Property 'recordcall' not recording part of the call

Post by dwollberg »

I am having a problem in which part of my IVR flow is not being recorded as expected. Here is the (extremely) simplified structure of my application:

AppRoot.php:

Code: Select all

<?php
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
?>
<vxml version="2.1">
	<property name="recordcallappend" value="false"/>
	<property name="recordcall" value="true"/>

	<!-- Other global stuff -->
</vxml>
CallStart.xml (application entry point):

Code: Select all

<vxml version="2.1" application="AppRoot.php">
	<form>
		<block>
			<prompt>
				Hello.
			</prompt>
		</block>

		<subdialog src="API.xml#startCall" fetchaudio="https://myaudiofile">
			<filled>
				<goto next="Page1.xml"/>
			</filled>
		</subdialog>
	</form>
</vxml>
Page1.xml:

Code: Select all

<vxml version="2.1" application="AppRoot.php">
	<form>
		<block>
			<prompt>
				This is audio on the first page.
			</prompt>
			<goto next="Page2.xml"/>
		</block>
	</form>
</vxml>
Page2.xml:

Code: Select all

<vxml version="2.1" application="AppRoot.php">
	<form>
		<block>
			<prompt>
				This is audio on the second page.
			</prompt>
		</block>
	</form>
</vxml>

Though the prompts all play correctly to the caller, the recording goes a little more like this:
  • This is audio on the first page.
    This is audio on the second page.
And it does not record the audio in CallStart.xml ("Hello." and the fetchaudio on the subdialog).

I would expect that setting recordcall = true in the AppRoot would turn on recording immediately, and only turn it off once I added a

Code: Select all

<property name="recordcall" value="false" />
at document or form scope (which I do to split recordings later in the flow (not pictured here)). I also have a number of subdialog calls to my APIs throughout the application, though I am not sure this is relevant, so I didn't add any of that. I can add more code here if I need to elaborate.


I have tried a few things, like adding the recordcall = true property in CallStart.xml, Page1.xml, and/or Page2.xml, and removing it from the AppRoot. The results when I do so are similar, in that I am always 'missing' part of the recording.

I would like to know more details you may have on the recordcall property and how it may be affected by document transitions.

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: Property 'recordcall' not recording part of the call

Post by support »

Hello,

We believe the problem to be that the value for the property, "recordcallappend", found in the AppRoot.php, is set to "false", and should instead, be set to "true". If this property is set to true when call recording transitions from disabled to enabled, any previous call recorded audio will be appended to instead of being overwritten.

Please refer to the documentation here:
https://www.plumvoice.com/docs/dev/voic ... llappend?s

Please let us know if you have any further questions.


Regards,
Plum Support

dwollberg
Posts: 15
Joined: Thu Mar 07, 2019 3:03 pm

Re: Property 'recordcall' not recording part of the call

Post by dwollberg »

Thank you for the reply.

I changed this setting to "true", and now it does record the beginning missing prompts. So we are partially there.

I didn't mention this in the OP, but this setting is disabled because I 'split' the recordings into multiple files in the following manner:
  • Start recording at beginning of call
    Stop recording
    Save recording to file
    Start recording again
    Save recording to file at end of call
If I have this set to "append", as far as I understand it, the recording would be appended to the callrecording variable, rather than the callrecording being overridden with the second recording. Splitting the recordings in this manner has worked well so far.

The solution I just attempted was to set the recordcallappend="false" at the same time I turn the recording back on to start the second recording. This actually worked, and now it records both parts of the call almost completely. Here is a more accurate version of Page2.xml:

Code: Select all

<vxml version="2.1" application="AppRoot.php">
	<form>
		<block>
			<prompt>
				This is audio on the second page.
			</prompt>
			<goto next="#StopRecording"/>
		</block>
	</form>
	<form id="StopRecording">
		<property name="recordcall" value="false" />
		<subdialog src="../SaveCallRecording.php" namelist="callrecording recordingfilename" method="post">
			<filled>
				<goto next="#Transfer" />
			</filled>
		</subdialog>
	</form>
	<form id="Transfer">
		<property name="recordcallappend" value="false"/>
		<property name="recordcall" value="true" />
		<transfer dest="3334445555">
			...
		</transfer>
	</form>
</vxml>
So that is working now. One more part that still isn't getting recorded: the fetchaudio on CallStart.xml. I play this audio here to disguise the wait time on that API request, but I would like if it were also recorded. Is it possible for that to be recorded, as well?

Thanks again!

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: Property 'recordcall' not recording part of the call

Post by support »

Hello,

We believe this problem can be solved by using the <record> tag, instead of the "recordcall" property, as this should allow you to record audio files as well. We recommend wrapping the code you want to record like such: <record name="myrecording"> * insert code here * </record>.

Please refer to the documentation here: https://www.plumvoice.com/docs/dev/voic ... s:record?s.

Please let us know if you have any further questions.

Regards,
Plum Support

dwollberg
Posts: 15
Joined: Thu Mar 07, 2019 3:03 pm

Re: Property 'recordcall' not recording part of the call

Post by dwollberg »

Thanks for the response.

We do utilize the <record> tag, where appropriate. However, I am looking to record the entire call (including complicated IVR prompts, etc), so the <record> tag is not what I am looking for here. Also, I cannot put a <subdialog> in a <record>.

The place where the call is not being recorded is during fetchaudio on a <subdialog>. Here is a more complete snippit of the said subdialog call and its containing form:

Code: Select all

<form id="logCallStart">
	<block>
		<prompt bargein="false">
			<audio src="https://welcome.wav">
				welcome
			</audio>
		</prompt>
	</block>

	<subdialog name="logCallStartResult" src="/IVR/API.xml#startCall" maxage="0" maxstale="0" fetchaudio="https://myaudiofile.wav">
		<filled>
			<!--do stuff-->
			<goto next="/IVR/NextPage.xml#firstForm"/>
		</filled>
	</subdialog>
</form>
From the above, I hear the "welcome.wav" but not the "myaudiofile.wav" in the recording.

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: Property 'recordcall' not recording part of the call

Post by support »

Hello,

Our engineers are still working towards a resolution.
We will keep you updated on this issue.

Regards,
Plum Support

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: Property 'recordcall' not recording part of the call

Post by support »

Hello,

To further investigate this issue we would like to know what the use case is for this situation.
In most cases this audio is just used as hold music, because it only plays when the fetch does not occur quickly.
Is this how you are using it? If so, why would you like this audio to be recorded?
If not, how are you trying to use the audio?
The answers to these questions will help us guide you to the best practice for your use case.

Regards,
Plum Support

dwollberg
Posts: 15
Joined: Thu Mar 07, 2019 3:03 pm

Re: Property 'recordcall' not recording part of the call

Post by dwollberg »

Thank you for your response. Our business leaders and QA team have a requirement that the audio recordings of the entire call sound exactly like the actual call (all sounds and whitespace included). I already noticed that whitespace seems to be truncated (i.e. if there is an extra long fetch in the middle of the call that takes 5 seconds, i may only hear 1 second of whitespace in the recording). We like these recordings to accurately represent the call flow so we can detect issues when listening to call samples.

I use this fetch audio in one location to disguise an API call. In my case, I play one of the introductory audio files (a ~2 second jingle) that I need to play for every call (I have fetchaudiominimum and fetchaudiodelay set appropriately so it plays the file immediately and in its entirety).

If it's not possible to record this, I can move that audio to play elsewhere so it will be recorded. But I am confused why it wouldn't just record everything when I have global call recording turned on. Maybe you can explain more clearly how Plum's implementation of recording works, why parts seem to be excluded, and why the recording does not mirror exactly what happened on the call.

support
Posts: 3632
Joined: Mon Jun 02, 2003 3:47 pm
Location: Boston, MA
Contact:

Re: Property 'recordcall' not recording part of the call

Post by support »

Hello,

Thank you for the detailed explanation. Unfortunately, our platform is currently configured to automatically truncate the whitespaces within recordings to help keep file sizes manageable. We have never received a request like your specific use case before with a need to keep all whitespaces within the recording. We could look into implementing this option as a feature request but it will require an update to our platform and will need to be evaluated by our team. We can let you know an estimated timeline once they have had a chance to look into the necessary updates.
In the short term, to view an exact representation of the call flow we recommend analyzing the call logs.
These logs contain all the data on exactly what happened within the call.
We apologize for this inconvenience and will keep you updated on this request.

Regards,
Plum Support

Post Reply