私はこれを何年もデバッグしようとしてきました。しかし、それを会議に送信することはできません。通常のチャットでの送信は機能します。しかし、会議ではありません。これが私のコードです。
_connection.Send(new agsXMPP.protocol.client.Message(new Jid(CurrentContactWindow.Jid), MessageType.chat, Txt_Message.Text));
このコードを使用して、通常のチャットで jid を取得します。
void XmppCon_OnMessage(object sender, agsXMPP.protocol.client.Message msg)
{
if (msg.Body != null)
{
if (msg.Type == MessageType.groupchat)
{
System.Windows.Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate()
{
_groupMessageView.Add(new GroupMessageView() { Name = msg.From, Message = msg.Body, IsMe = false, DateCreated = DateTime.Now });
});
ConstructChatView(false);
}
else
{//this is for normal chat
var emailMatches = new Regex(@"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", RegexOptions.IgnoreCase).Matches(new Jid(msg.From.ToString()));
var fromJid = emailMatches.Count > 0 ? emailMatches[0].ToString() : "";
var message = new Nesv.vChat.Domain.Models.Message()
{
GroupName = fromJid,
From = fromJid,
Body = msg.Body,
IsFromMe = false
};
UpdateMessageOnWindow(message);
}
}
if (msg.Type == MessageType.normal)
{
try
{
var conference = (Conference)msg.LastNode;
var chatroom = conference.Chatroom;
var mucManager = new MucManager(_connection);
mucManager.JoinRoom(chatroom, _connection.Username, true);
//Get users
_connection.PresenceGrabber.Add(chatroom, new PresenceCB(PresenceCallback), null);
System.Windows.Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate()
{//this is for conference/groupchat
_contactView.Add(new ContactView() { Jid = msg.From, Name = chatroom.User, isGroupChat = true });
});
// mucManager.
// sample send message
//_connection.Send(new agsXMPP.protocol.client.Message(chatroom, MessageType.groupchat, "XOXOXOXOXOX"));
}
catch { }
}
PrintEvent(msg.Body);
}
何か案は?ありがとう!