C# Artalk XMPP库问题

C# Artalk XMPP库问题,c#,xmpp,C#,Xmpp,我在C#应用程序中使用了nuget包。我能够从用户帐户发送消息userA@domain.com到用户帐户userB@domain.com通过我们局域网上的Ignite OpenFire服务器。非ShowStopper的消息存在几个小问题: 如果我试图提供一个主题,那么在客户机中它的前缀是“subject:”。这不是问题,但我想知道这是远程客户端还是服务器 消息正文被包装在方括号中,称为[测试消息正文]。这不是一个大问题,但我宁愿避免它,以保留正在发送的消息,以便进行可能的自动处理。这是远程客

我在C#应用程序中使用了nuget包。我能够从用户帐户发送消息
userA@domain.com
到用户帐户
userB@domain.com
通过我们局域网上的Ignite OpenFire服务器。非ShowStopper的消息存在几个小问题:

  • 如果我试图提供一个主题,那么在客户机中它的前缀是“subject:”。这不是问题,但我想知道这是远程客户端还是服务器

  • 消息正文被包装在方括号中,称为[测试消息正文]。这不是一个大问题,但我宁愿避免它,以保留正在发送的消息,以便进行可能的自动处理。这是远程客户端还是服务器

  • 若消息体包含XML,则它已成功发送,但从未收到。XMPP协议不允许发送XML吗?或者它是服务器还是远程客户端

编辑:

由于我询问了上面的项目符号,我尝试在消息体上使用
System.Security.SecurityElement.Escape()
,并将其包装在
中,并保留了其XML。这个问题仍然存在

  • userB
    还将所有成功传递的邮件复制回
    userA
    。如果
    userA
    不是交互式的,这没关系,但是如果它也是一个真实的人,那么它可能会很烦人。这是服务器还是远程客户端的问题,有没有办法避免?我知道远程用户的客户端不会通过Jabber客户端发送给他们的常规聊天消息来实现这一点
接下来,我有
userB@domain.com
invite
userA@domain.com
到聊天室
conference.domain。com@conference.domain.com
并尝试向该聊天室发送消息,仍然来自
userA@domain.com
。会议室未收到任何邮件,发送过程中也未引发异常

ArtalkXmppClient xmpp;
xmpp = new ArtalkXmppClient("domain.com", "userA@domain.com", "secret", 5222, true);

try
{
    var msg = new Message(
        "conference.domain.com@conference.domain.com",
        "test message body",
        "conference subject", // conference allows participants to change subject
        null,
        MessageType.Groupchat, 
        CultureInfo.CurrentCulture);

    if (!xmpp.Connected)
    {
        xmpp.Connect("myapp");
    }

    xmpp.SendMessage(msg);

    return true;
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}

该问题的群聊部分的解决方案是在尝试发送到服务器之前在服务器上预先创建群,并使用
MessageType.chat

最后一部分是违反直觉的,如果我在测试期间没有忘记在配置中启用群组聊天,我将永远无法理解它。当使用
MessageType.GroupChat
Chat
以外的任何类型时,它根本不起作用

此外,主题必须为
null
,否则主题将更改,但不会传递任何消息。主题的变化必须单独发送,不带正文的单独消息

我注意到的唯一一个副作用是,与人与人之间的聊天相反,使用群聊时,消息似乎被转义了。我不确定他们逃避了什么,而不是面对面聊天,但这是可以接受的