ASP.NET - Ayuda para almacenar respuesta de interfaz

<<>>
 
Vista:
sin imagen de perfil

Ayuda para almacenar respuesta de interfaz

Publicado por Francisco (2 intervenciones) el 12/04/2024 23:45:55
Buenas tardes a todos de antemano agradezco su ayuda. Me encuentro desarrollando un sistema de envió de mensajes con la API de WhatsApp Busines donde utilizo varias interfaces para poder lograr el envío.

Como primer paso creo una lista para inyectarla a una interfaz con un metodo llamado "BodaPrimerEnvio" donde se realizarán todos los procedimientos para el envío, adjunto el código continuación:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public async Task<bool> BodaPrimerEnvio(List<ModelBodaPrimerEnvioList>lists)
{
    try
    {
        await using(var scope =  _serviceProvider.CreateAsyncScope())
        {
            foreach(var invitado in  lists)
            {
                var InvitadoId = invitado.InvitadoId;
                var Celular = invitado.Celular;
                var NombreDestinatario = invitado.NombreDestinatario;
                var NombreRemitente = invitado.NombreRemitente;
                CultureInfo.CurrentCulture = new CultureInfo("es-ES");
                CultureInfo.CurrentUICulture = new CultureInfo("es-ES");
                var FechaEvento = invitado.FechaEvento.ToLongDateString();
                var UrlImagen = invitado.UrlImagen;
                var UrlInvitacion = invitado.UrlInvitacion;
                var Template = invitado.Template;
                var TemplateBoda = _SendUtils.boda_primer_envio(InvitadoId, Celular, NombreDestinatario, NombreRemitente, FechaEvento, Template, UrlImagen, UrlInvitacion);
                var EnviarMensaje = await _wABA.send( TemplateBoda);
            }
 
        }
    }
    catch(Exception e)
    {
 
    }
 
    return true;
}

Como pueden observar por medio de un foreach inyecto hacia una interfaz final con un método llamado "Send", donde se lleva a cabo el envío del mensaje por medio de POST hacia la API de WhatsApp Business, esta interfaz está registrada como singelton, después retorno como string la respuesta de la API ya que esta contiene un ID de conversación y la intención es actualizar el registro con el Id de conversación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public async Task<string> send(object model)
 
        {
            var data = JsonConvert.SerializeObject(model);
            string endpoint = "https://graph.facebook.com";
            string version = "v18.0";
            string PhoneNumber = "Numero_Telefono";
            string AccessToken = "TOKEN";
 
            using (var httpClient = new HttpClient())
            {
                using (var request = new HttpRequestMessage(new HttpMethod("POST"), $"{endpoint}/{version}/{PhoneNumber}/messages"))
                {
                    request.Headers.TryAddWithoutValidation("Authorization", $"Bearer {AccessToken}");
 
 
                    request.Content = new StringContent(data);
                    request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
 
                    var response = await httpClient.SendAsync(request);
                    var contents = await response.Content.ReadAsStringAsync();
 
                    if (response.IsSuccessStatusCode)
                    {
                         _logger.LogInformation(contents);
                        return contents;
                    }
                    _logger.LogInformation(contents);
                    return contents;
 
 
                }
            }
 
        }
    }
}

Hasta el momento no he logrado poder recuperar la respuesta de la interfaz final dentro del foreach para almacenar el ID de conversación, de la única manera que lo he logrado es modificar la interfaz para que sea sincrona y no asincrona, la interfaz principal que contiene el foreach está registrada como scoped y esta no tiene inyectado el contexto de la base de datos, no se si sea posible de esta manera actualizar los registros una vez que logre recuperar la respuesta o crear una api que solo almacene la información. La verdad es que soy principiante en .NET pero hago lo que puedo para mantener un orden y hacer las cosas de lo mejor posible, agradeceria me pudieran orientar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder