2016-03-01 94 views
0

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

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

我可以推断,如果我设置save_to_history为1,聊天对话框将自动创建并且消息将被存储在后端。但我无法弄清楚如何我应该指定一个在C#SDK,在这种方法的签名

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) 

导致extraParam只是一个字符串。我已经挖成反汇编代码经过一番调查了解,在内部使用此参数为XML,所以我尝试这两个选项

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

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

但是,这些工作的。 有人有想法我应该如何指定extraParam?

问候

回答

0

问题只是我忘了打电话给连接我发送消息之前。 这里是发送消息

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

而且一切正常,并创建对话框。 希望这会帮助别人。