2016-03-01 96 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); 

而且一切正常,並創建對話框。 希望這會幫助別人。