How to obtain the actual audio of the call

It's not clear to me how I can use the .NET SDK to actually fetch the actual audio (.wav? .mp4? .whatever) for a given conversation?

Can someone point me in the right direction?

Use one of the RecordingApi methods to get recording metadata, such as GetConversationRecordings. The MediaUris property contains URIs that you can use to download the recordings. Note that these APIs may return a 202 response when the recording isn't ready for export yet. You'll need to wait some amount of time and try again (try 5-10 seconds) until you get a response with data.

Where do I obtain the recording ID? I have the conversationID, but I can't seem to find where the recordingID may be. I just upgraded to v2 of the .NET SDK,, (where the hell is a breaking changes / whats new document? The nodejs upgrade script is useless.)

Where do I obtain the recording ID?

GET /api/v2/conversations/{conversationId}/recordings

where the hell is a breaking changes / whats new document

The nodejs upgrade script is useless

Do you have any useful feedback?

Thanks for the info.

So I got mediaUri's returned from the conversation, however what I am discovering is that link expires after a while? So my original intent was to provide a link to the recording in a report, but if that link expires then I can't actually do that.

I get the following XML returned back when I try to access an expired media uri:

 <Error>
	<Code>AccessDenied</Code>
	<Message>Request has expired</Message>
	<X-Amz-Expires>3600</X-Amz-Expires>
	<Expires>2017-10-26T19:45:09Z</Expires>
	<ServerTime>2017-10-26T20:36:48Z</ServerTime>
	<RequestId>E0DBABF0750E2343</RequestId>
	<HostId>kxgwfC3ZmXKAsorlApGGuju9F4acBRKF57tkyDyY12VFcNrujyrfJc/mHSBZWuGNoKFsAQ9Q92g=</HostId>
</Error>

Is there any documentation that describes the behavior of this API specific to retention of the media?

The expiry time of that URL doesn't appear to be publicly documented, but it's 1 hour. If you're not planning to use the recording right away, there are two basic approaches to your problem:

Cache the recordings locally

Your application could download the recordings and store them on a server on your network somewhere. This would give you full control over how long recordings are available and how they are accessed. However, it would also require you to build the hosting solution for the files as well as implement any necessary permissions to control access to those files.

Direct users to the PureCloud UI to access recordings

You can manually build URLs to access the recordings for a given conversation. The URL to access those recordings is https://apps.mypurecloud.com/directory/#/engage/admin/interactions/{{conversationId}} where {{conversationId}} is replaced with the GUID of the conversation for which you wish to view the recordings. This has the benefit of using PureCloud's existing security to control access to the recordings since the users will have to be logged in to PureCloud to access these URLs.

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.