Finally below is working for me. Is it the right way of usage? Does it make any performance issue for large database?
CSharp Code
public static void LaunchOscovaBot()
{
var websiteUrl = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);
var oscovaBot = new OscovaBot();
string constr = ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString;
oscovaBot.Dialogs.Add(new MyTestDialog());
oscovaBot.CreateRecognizer("start", new Regex(@"(?<!/)(/(?:start))(?(?<=\w)\b)", RegexOptions.IgnoreCase));
//BELOW IS MY THREE DB COLUMNS
var NameParser = oscovaBot.CreateRecognizer("Name");
var DeptParser = oscovaBot.CreateRecognizer("Dept");
var TitleParser = oscovaBot.CreateRecognizer("Title");
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT Name,Dept,Title FROM [Employees].[dbo].[tbl_Employees]", con))
{
con.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
NameParser.Entries.Add(reader["Name"].ToString());
DeptParser.Entries.Add(reader["Dept"].ToString());
TitleParser.Entries.Add(reader["Title"].ToString());
}
reader.Close();
}
}
}
oscovaBot.Trainer.StartTraining();
_oscovaBotChannel = new WidgetChannel<OscovaBot>(oscovaBot)
{
ServiceUrl = websiteUrl + "/BotService.aspx",
ResourceUrl = websiteUrl + "/BotResource",
};
}
}
CSharp Code
[Expression("Find emp @Name in @Dept who is @Title")]
public void FindEmployee(Context context, Result result)
{
var empname = result.Entities.OfType("Name");
var dept = result.Entities.OfType("Dept");
var title = result.Entities.OfType("Title");
//.................
}