Quickblox 聊天设置在 Xamarin C# SDK 中save_to_history为 true

本文关键字:save to history true SDK 设置 聊天 Xamarin Quickblox | 更新日期: 2023-09-27 18:36:55

我正在使用Quickblox C# SDK。我想将消息发送到特定对话框。在 Xamarin 特定文档中没有很好的记录。我决定访问 REST API 文档。因为我可以从那里学到

通过使用 Chat 2.0,您不会自动存储消息。此外,如果不将消息保存到历史记录,则不会创建/更新对话框实体。

我可以推断如果我将save_to_history设置为 1,将自动创建聊天对话框,并将消息存储在后端。但是,我不知道应该如何在 C# SDK 中指定,导致此方法签名extraParam

public void SendMessage(int userId, string body, string extraParams, string dialogId, string subject = null, Quickblox.Sdk.Modules.ChatXmppModule.Models.MessageType messageType = Quickblox.Sdk.Modules.ChatXmppModule.Models.MessageType.Chat)

只是一个字符串。我已经深入研究了反汇编的代码,经过一些调查后,我明白这个参数在内部用作 XML,所以我尝试了这两个选项

var extraParams = "<extraParams> " +
                      "<save_to_history>1</save_to_history> " +
                  "</extraParams>";

而且

var extraParams = "<save_to_history>1</save_to_history> ";

但这些都没有奏效。有人知道我应该如何指定额外的参数吗?

问候

Quickblox 聊天设置在 Xamarin C# SDK 中save_to_history为 true

问题只是我在发送消息之前忘记呼叫连接。这是发送消息的方法

public async Task SendMessageAsync(IUser sender, IChatMessage message, string channelID, CancellationToken token)
    {
        await loginIfRequired(sender, token);
        var jsonMessage = JsonConvert.SerializeObject(message);
        var recipientID = await getQuickbloxUserId(message.RecipientID, token);
        var extraParams = "<extraParams> " +
                            "<save_to_history>1</save_to_history> " +
                          "</extraParams>";
        _quickblox.ChatXmppClient.SendMessage(recipientID, jsonMessage, extraParams, channelID);
    }

我打电话的loginIfRequired里面

_quickblox.ChatXmppClient.Connect(_currentUserID.Value, password);

一切正常,对话框已创建。希望这会帮助某人。