【问题标题】:Quickblox chat setting save_to_history to true in Xamarin C# SDKXamarin C# SDK 中的 Quickblox 聊天设置 save_to_history 为 true
【发布时间】:2016-03-01 08:38:55
【问题描述】:

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

使用 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> ";

但这些都不起作用。 有人知道我应该如何指定 extraParam 吗?

问候

【问题讨论】:

    标签: c# xamarin sdk quickblox


    【解决方案1】:

    问题只是我在发送消息之前忘记调用 connect。 这是发送消息的方法

    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);
    

    一切正常,并创建了对话框。 希望这会对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多