2016-09-14 6 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); 
       } 

で書いたコードです。私はその後、

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

この行を実行した後、私は例外の応答をデシリアライズできません '取得しています、その時点でチャットを始めSKYPEするボットを追加したときにはどのようにそれを解決する私に教えてください。

+0

シリアル化しようとしているデータのサイズは? Bot State Serviceは、ラージオブジェクトではなく、少量の状態データ(合計64k未満)を格納するためのものです。より大きな項目を格納したい場合は、UserDataにハッシュを入れて、別のストレージサービス(Azure Storage)またはローカルキャッシュのいずれかでルックアップを実行できます。 (これが問題だったかどうかを確認してください) – Lars

+0

上記の例外が発生します。var getData = stateClient.BotState.GetUserDataAsync(Constants.Constants.botId、activity.From.Id);を待ちます。私は10Kのデータをシリアル化しようとしています。 – pradeep

+0

ヘルパーを使用して状態クライアントを作成しようとしましたか?StateClient stateClient = activity.GetStateClient(); – Lars

答えて

0

https://state.botframework.comを、skype.botframework.comではなくStateClientのエンドポイントとして使用する必要があります。

+0

私は上記のURLですでに試してみましたが、その後も同じ例外があります – pradeep

+0

私に上記のURLを教えてください私のグループやスラックチャンネルなどのすべてのチャンネルに適用されます..... – pradeep

+0

私は上記のURLで私は "悪いリクエスト例外"を得た私はスカイプのサービスURLはhttps://skype.botframeworkのようだと思った.com – pradeep

関連する問題