c# - mensajes - enviar sms gratis asp net
Cómo obtener el texto del mensaje desde la página de mensaje Xmpp usando Quickblox Xamarin nuget (2)
Usando Xamarin, instalé QuickBlox Nuget (1.2.7): https://www.nuget.org/packages/Quickblox.Sdk/
y usando este tutorial: http://quickblox.com/developers/Sample-chat-xamarin este tutorial probablemente esté desactualizado, ya que algunos de los fragmentos de código no funcionan de la caja y se necesitan algunos cambios en los nombres y funciones de las clases por hacer, pero es la mejor fuente que pude encontrar para Xamarin y QuicBlox.
Estoy tratando de enviar y recibir mensajes y tener algunas dificultades. Si bien puedo enviar mensajes con éxito y verlos en el historial de chat usando el panel de administración, no pude encontrar una manera de recibirlos con el texto del mensaje.
El mensaje recibido con ID de mensaje, ID de remitente, etc., pero el campo messageText siempre es nulo. Cuando uso getMessagesAsync para obtener el mensaje activamente (por su id o como parte del historial del diálogo de chat) recibo un mensaje con texto. Entonces, el texto está allí, se llama al evento pero el texto permanece nulo ...
Probé diferentes formas de enviar y recibir mensajes, usando:
Enviar mensajes : ambos funcionaron, el mensaje se envió y se puede ver usando el panel de administración:
1.
quickbloxClient.ChatXmppClient.SendMessage(...)
2.
privateChatManager.SendMessage (messageText);
Recibir mensajes : solo funciona el ChatXmppClient, el mensaje recibido con todos sus detalles, pero el campo de texto del mensaje es nulo:
1.
quickbloxClient.ChatXmppClient.MessageReceived += MessageReceived;
public async void MessageReceived (object sender, MessageEventArgs messageEventArgs)
{
if (messageEventArgs.MessageType == Xmpp.Im.MessageType.Chat && messageEventArgs.Message != null)
{
var message = messageEventArgs.Message; // contains message''s details
var text = messageEventArgs.Message.messageText; // null
}
}
/// received (the event fired) with message details but without message text (null)
2.
privateChatManager.MessageReceived += MessageReceived;
/// the event doesn''t get called
Cualquier ayuda sería apreciada.
Código de solución: envío -
var extraParamsList = new List<System.Xml.Linq.XElement> ();
extraParamsList.Add (new System.Xml.Linq.XElement ((System.Xml.Linq.XName)"save_to_history", 1));
extraParamsList.Add (new System.Xml.Linq.XElement ((System.Xml.Linq.XName)"send_to_chat", 1));
extraParamsList.Add (new System.Xml.Linq.XElement ((System.Xml.Linq.XName)"message_text", messageTextEncoded));
var extraParams = new System.Xml.Linq.XElement ((System.Xml.Linq.XName)EXTRA_PARAMS, extraParamsList.ToArray ());
quickbloxClient.ChatXmppClient.SendMessage (recieverId, messageText, extraParams, dialogId, null, Xmpp.Im.MessageType.Chat);
Recepción -
var messageText = string.Empty;
/// In case there are more needed fields
foreach (var element in responseMessage.ExtraParameters.Elements ())
{
var name = element.Name.LocalName;
var value = element.Value;
if (!string.IsNullOrWhiteSpace (name) && !string.IsNullOrWhiteSpace (value))
{
switch (name)
{
case "message_text":
messageText = value
default:
break;
}
}
}
Sé que llego tarde para responder, pero espero que pueda ayudar a alguien más. Estaba enfrentando un problema similar con mi aplicación. Después de muchos esfuerzos, llegué a saber que había algo mal con Quickblox Nuget que estaba usando , que era 1.2.7 . Lo bajé a 1.2.2 en todos los proyectos (es decir, PCL, droide e ios) y luego reconstruí mi proyecto y el bingo. Funcionó