2016-09-14 132 views
-1

我工作的機器人技術,在我的項目之一,我用機器人狀態的概念,讓機器人的數據和設置新的數據在這裏我使用狀態的客戶對象像下面這樣無法反序列化的響應 - GetUserDataAsync

//var stateClient = new StateClient(new Uri("http://localhost:9000/")); 
    var stateClient = new StateClient(new Uri("https://skype.botframework.com")); 

我LoginController.cs寫的這是代碼

   if (stateClient != null) 
       { 
        var getData = await stateClient.BotState.GetUserDataAsync(Constants.Constants.botId, activity.From.Id);// 29:1_12CsCTqilHlQTG9KI8YmvCKd - zwzekm2IDKR7xN8EVE3gjtfNQYp1aOzuC9Rs_t 
        //var getData = await client.B.GetUserDataAsync(Constants.Constants.botId, userid); 
        getData.Data = ar.Serialize(); 
        var foo = await stateClient.BotState.SetUserDataAsync(Constants.Constants.botId, activity.From.Id, getData); 
        //var foo = await client.Bots.SetUserDataAsync(Constants.Constants.botId, userid, getData); 
       } 

上面的代碼將在機器人仿真工作順利無一例外。但是當我加入機器人Skype的然後就開始在那個時候我得到異常聊天「無法反序列化響應」執行這一行

var getData = await stateClient.BotState.GetUserDataAsync(Constants.Constants.botId, activity.From.Id); 

請告訴我該怎麼解決這個問題了。

+0

您嘗試序列化的數據的大小是多少?機器人狀態服務僅用於存儲少量狀態數據(總共<64k)而非大型對象。如果要存儲較大的項目,可以將散列值放入UserData中,然後在單獨的存儲服務(如Azure存儲)或本地緩存中進行查找。 (請確認是否是這個問題,謝謝) – Lars

+0

我在這裏得到上面的異常var getData = await stateClient.BotState.GetUserDataAsync(Constants.Constants.botId,activity.From.Id);我試圖序列化10K數據。 – pradeep

+0

您是否嘗試過使用助手來創建您的狀態客戶端:StateClient stateClient = activity.GetStateClient(); – Lars

回答

0

您可能需要使用https://state.botframework.com作爲StateClient的端點,而不是skype.botframework.com。

+0

我已經嘗試了上面的url,那麼我也得到了上面的異常 – pradeep

+0

告訴我上面的url適用於所有頻道喜歡組我和鬆弛渠道等..... – pradeep

+0

我嘗試與上述網址在那個時候我得到了「錯誤的請求異常」我認爲Skype的服務網址就像https://skype.botframework .COM – pradeep