2017-06-19 11 views
0

私は現在値をキャプチャし、外部APIを切ったこれらの値を送信し、バック外部APIからJSONデータを取得し、ベースカードの添付ファイルを作成する簡単なC#のformflowボットを開発していますに値を渡します返された結果に次のように私は、APIや店舗へ電話をかけるC#BotFramework FormFlowは、外部API

.OnCompletion(async (context, profileForm) => 
       { 
        var reply = context.MakeMessage(); 

        var carsFromApi = await GetCarsAsync("/api/values"); 
        reply.AttachmentLayout = AttachmentLayoutTypes.Carousel; 
        reply.Attachments = GetCards(carsFromApi); 

        await context.PostAsync(reply); 

        // Tell the user that the form is complete 
       }) 

(テスト目的のために)私はAPIに任意の値を渡していないですそれをシンプルに保つために、OnCompletionデリゲートに外部APIへの呼び出しを作っています私はF10を押し、である次の行に移動する場合は、次のコードスニペットである私はその踏み入れる「carsFromApi」の結果、

private static async Task<List<Car>> GetCarsAsync(string path) 
     { 
      List<Car> car = new List<Car>(); 
      HttpResponseMessage response = await client.GetAsync(path); 
      if (response.IsSuccessStatusCode) 
      { 
       car = await response.Content.ReadAsAsync<List<Car>>(); 
      } 

      return await response.Content.ReadAsAsync<List<Car>>(); 
     } 

は問題がある「reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;」。車 "carsFromApi"を保存したローカル変数は、現在nullです。これはすべてが落ちる部分です。 "reply.Attachmentsの=のGetCards(carsFromApi);" 私はこの "carsFromApi" を通過カント私はプライベート変数にデータを格納しようとしましたが、それもnullのようです。外部APIは現在、静的テキストのリストを返すだけなので、動作しています。何か案は?前もって感謝します。あなたはそれを記述しているものに基づいて

+0

がGetCarsAsync方法があれば(response.IsSuccessStatusCode)パスで終了することをよろしいですOnCompletionデリゲートで、代わりにそののFormを呼び出すときに指定し​​方法で要求をして試すことができます? –

+0

こんにちは、コメントありがとうございました、問題は、応答ステータスコードとありました。私はこれを答えにすることができるように返信を投稿できますか?私はHttpClientをエラーのための質問を開く必要がありますと思う:「このインスタンスはすでに1つまたは複数の要求を開始したプロパティのみが最初の要求を送信する前に修正することができます。」カードの添付ファイルがユーザーに表示された後にこれは私のFormFlowフォームのコンストラクタで発生し、この例外を修正する方法がわかりません。 –

+0

完了。私はいくつかの推奨事項を追加しました。例外に関しては、私がかなり共通の問題であると確信しているので、投稿する前にフォーラムを見てください。 –

答えて

0

はあなたのコードがif (response.IsSuccessStatusCode)の経路を通って存在されていないことに聞こえます。例外が疑われたり、何かが間違っていたりすると、その点に達しているかどうかを確認してください。

また、あなたは

関連する問題