پروژه ربات بلادرنگ (Real Time) با استفاده از Microsoft Bot Framework

دوشنبه 28 تیر 1395

در این مقاله یاد خواهید گرفت که یک برنامه ربات ساده بلادرنگ(Real Time) با استفاده از Microsoft Bot Framework ایجاد کنید .که یک ربات مربوط به سهام می باشد. ما در اینجا از Finance API یاهو استفاده کرده ایم. و به این صورت کار میکند که ما یک کلمه سمبل(Symbole) به عنوان پیام ارسال می کنیم و این ربات ،ارزش سهام فعلی آن شرکتی که سمبل یا نماد آن را ارسال کرده ایم را به ما بر می گرداند.

پروژه ربات بلادرنگ (Real Time) با استفاده از Microsoft Bot Framework

در مقاله ی قبلی (ایجاد یک ربات ساده با استفاده از Microsoft Bot Framework) ، ما توضیح دادیم که چگونه یک برنامه ربات ساده با استفاده از MicroSoft Bot Framework   ، ایجاد کنید.

مرحله 1:

ابتدا یک برنامه ربات ایجاد کنید.

مرحله 2:

یک کلاس در پروژه خود ایجاد کنید و آن را نامگذاری کنید، ما در اینجا کلاس را به اسم Yahoo Bot نامگذاری کرده ایم ، و کدهای زیر را در داخل این کلاس می نویسیم.

1.	using System;  
2.	using System.Collections.Generic;  
3.	using System.Linq;  
4.	using System.Net;  
5.	using System.Threading.Tasks;  
6.	using System.Web;  
7.	  
8.	namespace StockBot2  
9.	{  
10.	    public class YahooBot  
11.	    {  
12.	        public static async Task<double?> GetStockRateAsync(string StockSymbol)  
13.	        {  
14.	            try  
15.	            {  
16.	                string ServiceURL = $"http://finance.yahoo.com/d/quotes.csv?s={StockSymbol}&f=sl1d1nd";  
17.	                string ResultInCSV;  
18.	                using (WebClient client = new WebClient())  
19.	                {  
20.	                    ResultInCSV = await client.DownloadStringTaskAsync(ServiceURL).ConfigureAwait(false);  
21.	                }  
22.	                var FirstLine = ResultInCSV.Split('\n')[0];  
23.	                var Price = FirstLine.Split(',')[1];  
24.	                if (Price != null && Price.Length >= 0)  
25.	                {  
26.	                    double result;  
27.	                    if (double.TryParse(Price, out result))  
28.	                    {  
29.	                        return result;  
30.	                    }  
31.	                }  
32.	                return null;  
33.	            }  
34.	            catch (WebException ex)  
35.	            {  
36.	                //handle your exception here  
37.	                throw ex;  
38.	            }  
39.	        }  
40.	    }  
41.	}  

در کد بالا ،شما می توانید تابعی به اسم GetStockRateAsync   ببینید  که StockSymbol را به صورت پارامتر می گیرد . ما Finance API یاهو را فراخوانی می کنیم که ما آن کلمه سمبل(Symbol) را پاس می دهیم و آن یک فایل CSV ازنرخ سهام بازار به ما برمی گرداند.ما فایل CSV را با کاما جدا می کنیم زیرا فایل CSV به معنای جداشدن مقادیر با کاما(Cama Seprated Value) می باشد  . بنابراین ما با کاما (,) تقسیم بندی می کنیم و قیمت فعلی سهام را دریافت می کنیم، سپس ما این قیمت را به double تبدیل میکنیم زیرا قطعا نرخ سهام، از نوع double میباشد و قیمت فعلی را برمی‎گرداند.

مرحله 3:

حال ما در MessagesController یک کلاس ایجاد می کنیم که تابع بالا را فراخوانی کند .ما تابع GetStock  را در کلاس MessageController ایجاد می کنیم .

کد تابع GetStock :

1.	private async Task<string> GetStock(string StockSymbol)  
2.	{  
3.	    double? dblStockValue = await YahooBot.GetStockRateAsync(StockSymbol);  
4.	    if(dblStockValue==null)  
5.	    {  
6.	        return string.Format("This \"{0}\" is not an valid stock symbol",StockSymbol);  
7.	    }  
8.	    else  
9.	    {  
10.	        return string.Format("Stock : {0}\n Price : {1}",StockSymbol,dblStockValue);  
11.	    }  
12.	  
13.	}  

در کد بالا شما میبینید که ما تابع GetStockRateAsync  رافراخوانی کرده ایم که به ما یک مقدار double nullable ، برمی گرداند.ما چک می کنیم که آیا مقدار سهام null می باشد یا خیر.

باتوجه به  مقدار وارد شده ، ما یک عبارت(String) مناسب برمی گردانیم.

مرحله 4:

تابع GetStock را از PostAction  ی که در MessagesController می باشد ، فراخوانی می کنیم.

کد PostAction  در :MessagesController

1.	public async Task<Message> Post([FromBody]Message message)  
2.	{  
3.	    if (message.Type == "Message")  
4.	    {  
5.	        string StockRateString = await GetStock(message.Text);  
6.	  
7.	        // return our reply to the user  
8.	        return message.CreateReplyMessage(StockRateString);  
9.	    }  
10.	    else  
11.	    {  
12.	        return HandleSystemMessage(message);  
13.	    }  
14.	}  

در کد بالا شما می توانید ببینید وقتی که کاربر پیامی را ارسال می کند هیچ اتفاقی نمی افتد مگر آنکه کلمه سمبل (Symbol) را ارسال کند ، در این صورت تابع GetStock فراخوانی می شود و یک پیام مناسب به عنوان پاسخ به شما برمی گرداند.

مرحله 5:

برنامه را اجرا کنید و در Bot Framework Simulator ، شبیه سازی کنید.

خروجی:

صفحه ی شبیه ساز اولیه

اگر یک نماد یا سمبل نا معتبر ارسال کنیم.

برای سهام  Microsoft :

برای سهام Google :

سهام Apple:

نتیجه گیری : در این مقاله ما یک برنامه ربات ساده ایجاد کردیم که سمبل یا نماد سهام را به عنوان ورودی می گیرد و به صورت خودکار نرخ سهام شرکت مربوطه را  به صورت  پیام ، به شما برمی گرداند.

آموزش سی شارپ

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 2k بازدید
  • 3 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید