Buenos días, no soy experto pero uso con frecuencia métodos asíncronos del SDK de .net, compartí el código que esta fallando y capas que te pueda ayudar.
Saludos
a continuación una app de consola que cumple la función de descargar todos los tipos de grabaciones que puede tener una interacción, podes filtrar por el tipo que necesites o almacenar por carpetas según el tipo. Desconozco si se puede realizar de otra forma mas optima pero es la que puede realizar con le SDK de .NET
using PureCloudPlatform.Client.V2.Api;
using PureCloudPlatform.Client.V2.Client;
using PureCloudPlatform.Client.V2.Extensions;
using PureCloudPlatform.Client.V2.Model;
using System;
using System.Net;
namespace DownloadCall
{
internal class Program
{
static void Main(string[] args)
{
DownloadCall();
Console.ReadLine();
}
private async static void DownloadCall()
{
WebClient myWebClient = new WebClient();
Configuration.Default.ConfigFilePath = "congif.ini";
var accessTokenInfo = Configuration.Default.ApiClient.PostToken("YOU_CLIENT_ID",
"YOU_CLIENT_SECRET");
var ClienteApi = new RecordingApi();
var Recordings = await ClienteApi.GetConversationRecordingmetadataAsync("50bb186f-8be7-46fe-bb69-cc5fb19832be");
if (Recordings != null)
{
foreach (var Recording in Recordings)
{
if (Recording.FileState == RecordingMetadata.FileStateEnum.Available)
{
var records = await ClienteApi.GetConversationRecordingAsync(Recording.ConversationId, Recording.Id, "mp3", "eml", "zip", "zip", true);
while (records == null)
{
records = await ClienteApi.GetConversationRecordingAsync(Recording.ConversationId, Recording.Id, "mp3", "eml", "zip", "zip", true);
}
foreach (var URLs in records.MediaUris)
{
var filename = Recording.ConversationId + "_" + Recording.Id + "_" + Recording.Media;
switch (Recording.Media)
{
case "voice":
filename = filename + ".mp3";
break;
case "email":
filename = filename + ".eml";
break;
case "screen":
filename = filename + "webm";
break;
default:
filename = filename + ".zip";
break;
}
myWebClient.DownloadFile(URLs.Value.MediaUri, filename);
}
}
}
}
}
}
}
En el siguiente link esta también un ejemplo para realizar descargas de forma masiva. Talvez se pueda adaptar a la necesitada de tu cliente ejecutando una vez al día la descarga de todas las llamadas del día anterior.