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