Legacy Dev Forum Posts

 View Only

Sign Up

.NET SDK doesn't work for the async methods

  • 1.  .NET SDK doesn't work for the async methods

    Posted 06-05-2025 18:07

    Rade_Petrovic | 2024-03-11 16:27:06 UTC | #1

    The client is using https://github.com/MyPureCloud/platform-client-sdk-dotnet to call Genesys API.

    The client was able to log API requests/responses for the sync methods, but for the async methods nothing is logging.

    What could cause this issue?


    Dieguit0 | 2024-03-12 13:15:49 UTC | #2

    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


    Rade_Petrovic | 2024-03-12 15:47:01 UTC | #3

    To be more specific, our client stores interaction recordings on their backend using the SDK above.

    Here is the log example for the sync methods:

    {"date":"2024-03-07T13:22:33.9955867Z","level":"trace","method":"Get","url":" https://api.cac1.pure.cloud/api/v2/conversations/7bf9afe3-7037-48be-9d09-0f43fcb0bc51/recordingmetadata","requestHeaders":{"Accept":"application/json","Authorization":"[REDACTED]"},"responseHeaders":{"Transfer-Encoding":"chunked","Connection":"keep-alive","Date":"Thu, 07 Mar 2024 13:22:33 GMT","ININ-Correlation-Id":"15f47d4c-3137-4828-b952-c37adeec718a","Strict-Transport-Security":"max-age=31536000; includeSubDomains","Cache-Control":"no-store, must-revalidate, no-cache","X-Cache":"Miss from cloudfront","Via":"1.1 [269b0fad85dfd450220cf6573a2d384e.cloudfront.net](http://269b0fad85dfd450220cf6573a2d384e.cloudfront.net/) (CloudFront)","X-Amz-Cf-Pop":"ARN56-P2","X-Amz-Cf-Id":"MVSg-u-XQwvWd1KPUC-mDu7WyPpHayZmqbFdluy7_iICPMVVxBoVGg=="},*"correlationId":"15f47d4c-3137-4828-b952-c37adeec718a"*,"statusCode":200}


    Dieguit0 | 2024-03-13 01:26:03 UTC | #4

    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);
                            }
                            
    
                        }
                    }
                } 
            }
        }
    }

    Dieguit0 | 2024-03-13 23:21:32 UTC | #5

    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.

    https://developer.genesys.cloud/analyticsdatamanagement/recording/recordings-downloader


    system | 2024-04-13 23:22:20 UTC | #6

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


    This post was migrated from the old Developer Forum.

    ref: 25127