Foro

Avatar de Manuel_Pegasus
Manuel_Pegasus
Más integrado que la RDSI
09-01-2025

Envio mensaje MT, Error

Hola, estoy implementando una función para enviar SMS mediante vuestra plataforma, para uno de nuestros clientes que tienen contratado con ustedes dicho servicio.

 

El código es:

 

public async Task Send()
{
// URL de destino del servicio REST
string url = "http://194.224.196.17:9908/restadpt_generico1/smsTextSubmit";

// Crea el objeto con los parámetros a enviar en el cuerpo de la solicitud
var requestBody = new
{
sender = "229XX",
recipients = new[]
{
new { to = "647xxxxxx" }
},
smsText = "Texto de prueba",
earliestDeliveryTime = "None",
expiryDate = "None",
deliveryReport = "None",
deliveryReportURL = "None",
smsClass = "None"
};

// Serializa el objeto a JSON
string json = JsonConvert.SerializeObject(requestBody);

// Crea el contenido de la solicitud con el JSON serializado
var content = new StringContent(json, Encoding.UTF8, "application/json");

// Añadir encabezado de autorización con la cadena Base64
string credentials = "user:password";
string base64Credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(credentials));
client.DefaultRequestHeaders.Add("Authorization", $"Basic {base64Credentials}");

// Realiza la solicitud POST
try
{
HttpResponseMessage response = await client.PostAsync(url, content);

// Asegurarse de que la respuesta es exitosa
if (response.IsSuccessStatusCode)
{
string responseContent = await response.Content.ReadAsStringAsync();
Console.WriteLine("Respuesta exitosa:");
Console.WriteLine(responseContent);
}
else
{
Console.WriteLine($"Error en la solicitud: {response.StatusCode}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Excepción ocurrida: {ex.Message}");
}
}
}

 

El resultado es el siguiente:

Mensaje enviado...
Details: Check Authorization field or contact system administrators
StatusText: 4001
StatusDetails: Improper identification

 

También lo he probado usando el wsdl:

 

public async Task Send()
{

destinatarios.To = new string[] { "647xxxxxx" };


encoding = new System.Text.ASCIIEncoding();
System.Net.ServicePointManager.Expect100Continue = false;
// Indicamos la version del protocolo a utilizar
sms.Version = versionType.Item10;

// Indicamos los datos de autenticacion
// Concatenar el nombre de usuario y la contraseña, separados por un carácter como ':' (opcional)
string combined = usuario + ":" + contraseña;

// Convertir la cadena a un arreglo de bytes
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(combined);

// Codificar en Base64
//string base64Encoded = Convert.ToBase64String(byteArray);

//sms.Authorization = System.Text.Encoding.UTF8.GetBytes(base64Encoded);
sms.Authorization = encoding.GetBytes(usuario + ":" + contraseña);
// Indicamos el remitente
sms.Sender = remitente;
// Indicamos la lista de destinatarios
sms.Recipients = destinatarios;
// Indicamos el texto del SMS
sms.SMSText = texto_sms;
// Indicamos la URL de envío

// Enviamos la peticion y almacenamos la respuesta

respuesta = await cliente.smsTextSubmitAsync(sms);
// Mostramos por pantalla el resultado del envio
Console.Out.WriteLine("Mensaje enviado...");
Console.Out.WriteLine("\tDetails: " + respuesta.SubmitRes.Status.Details);
Console.Out.WriteLine("\tStatusText: " + respuesta.SubmitRes.Status.StatusCode);
Console.Out.WriteLine("\tStatusDetails: " + respuesta.SubmitRes.Status.StatusText);

}

 

Con identico resultado.

 

Creo que el problema puede estar en que se precisa un certificado, el cual no tengo.

¿Es este el problema?, en tal caso, ¿Como puedo obtenerlo?

 

Gracias

 

2 Respuestas

  • Avatar de Manuel_Pegasus
    Manuel_Pegasus
    Más integrado que la RDSI
    10-01-2025

    Hola, ya he conseguido que funcione.

     

    Gracias por todo.

    Saludos

  • Buenas tardes @Manuel_Pegasus. Bienvenid@ a la Comunidad de Telefónica Empresas,

     

    Para poder ayudarte, necesito tu número de CIF, número de teléfono de la gestión y un contacto. Puedes enviarme tus datos por mensaje privado 

     

    Gracias y saludos.    

    Antonio G.

    Telefónica Empresas.