2017-12-08 6 views
-1

私はボットフレームワークを使ってビジュアルC#でボットアプリケーションを作成し、Azureで公開しました。私のデータベースはAzureにもあります。私は、CompanyId、TenantId、SiteId、Bandidをボットで与え、データベースからCompanyNameとAddressとして返信します。これはTestData.csクラスで書かれています。 私もTestAPIControllerを添付して、データベースからボットアプリケーションにデータを取得したいと思います。私のRootDialog.csをコード化するには?ビジュアルC#でボットアプリケーションからAzureで公開されているデータベースからデータを取得する方法

public class TestAPIController : ApiController 
{ 

    [HttpGet] 
    public IHttpActionResult Get(string TenantId, string CompanyId, string SiteId, string BandId) 
    { 
     TestData TestData = new TestData(); 
     var TestBusiness = TestData.Select(TenantId, CompanyId, SiteId, BandId); 

     return Ok(TestBusiness); 
    } 

}  

public class TestData :DBConnection 
{ 

    public List<TestBusiness> Select(string TenantId, string CompanyId, string SiteId, string BandId) 
    { 
     List<TestBusiness> list = new List<TestBusiness>(); 
     this.StoredProcedure = "RESQBOTGetCompanywiseData"; 
     AddParameter("TenantId", TenantId); 
     AddParameter("CompanyId", CompanyId); 
     AddParameter("SiteId", SiteId); 
     AddParameter("BandId", BandId); 
     DataTable dt = this.ExecuteSelect(); 
     foreach (DataRow dr in dt.Select()) 
     { 
      TestBusiness item = new TestBusiness(); 
      item.CompanyName = dr["CompanyName"].ToString(); 
      item.Address = dr["Address"].ToString(); 
      list.Add(item); 
     } 
     return list; 


    } 
} 
+0

あなたは情報を持っていますか? –

答えて

0

はあなたがWEBAPIを呼び出してデータを取得することができますHttpClientの使用をしなければならない以下の例のコード

using(var client = newHttpClient()) 
{ 
    client.BaseAddress = newUri("http://localhost:55587/"); 
    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add 
       (newMediaTypeWithQualityHeaderValue("application/json")); 
    //GET Method 
    HttpResponseMessage response = 
       await client.GetAsync("GetAllRows/1/1/1/1"); 
    if (response.IsSuccessStatusCode) 
    { 
    } 
} 

ある あなたはまた、次のようにあなたのウェブAPIでルートを設定する必要が

、このメソッドを呼び出すときにすべてのパラメータを渡します。

[Route("GetAllRows/{TenantId}/{CompanyId}/{SiteId}/{BandId}")] 
public IHttpActionResult Get(string TenantId, string CompanyId, 
        string SiteId, string BandId) 
{ 
} 

また、ルート属性baこの記事をフォロー

public static void Register(HttpConfiguration config) 
     { 
      config.MapHttpAttributeRoutes(); 

     } 

をルーティングのsed:RootDialog.csでhttps://dzone.com/articles/web-api-with-httpclient-or-consume-web-api-from-co

+0

あなたの説明のために@Pranayありがとうございます。私はルートを設定し、ルート用のウェブAPIも設定します。どうすれば私のコード(どのコントローラーまたはダイアログファイル)の中でuser()をコーディングする場所であるのか、また "application/json"のパスは何かを説明できますか? –

+0

@KoshilaDilrukshi - こんにちは...あなたがwebappiでの使用と呼ばれるクラスを作成し、 "application/json"以外のモデルフォルダにクラスを作成したい場合は、json形式で応答を返すように指定する方法です –

+0

誤ってuser()ではなく、あなたのコードに関連する(var client = newHttpClient())を使用しているはずです。説明してください、私のコードで()を使って書く場所はどこですか? –

0

を、私はそのTestAPIControllerのインスタンスオブジェクトを作成しました。次に、それを呼び出して入力をパラメータとして渡します。私は、データベースの最初のデータにあるデータを表示します。

TestAPIController Test = new TestAPIController(); 
returnData = Test.Get(TenantId, CompanyId, SiteId, BandId); 

string companyName = returnData[0].CompanyName.ToString(); 
string address= returnData[0].Address.ToString(); 

await context.PostAsync("Company Name = "+ companyName + " and It's address is "+ address); 
関連する問題