Как связать данные, извлеченные из базы данных SQL в методе действия, с намерением Луиса и отобразить данные, используя намерение Луиса
Я хочу соединить данные, извлеченные из базы данных SQL в методе активности, с намерением Луиса и отобразить данные, используя намерение Луиса. Что я должен добавить в своем намерении Луиса в SimpleLUISDialog.cs, чтобы отобразить данные в базе данных после того, как я введу в хранилище высказываний в намерении Луиса?
А метод активности в MessagesController.cs определяется MessagesController. Нужно ли мне менять код в методе активности для того, чтобы он работал? Контекст ожидания.PostAsync($""); в намерении Луиса должны быть заменены, так как мне нужно получить ответ из базы данных SQL. поэтому мне нужно вызвать метод ShowCutOffPoint в намерении Луиса. Спасибо.
Это метод действия в SimpleLUISDialog.cs
private async Task ShowCutOffPoint(IDialogContext context,
IMessageActivity msg, Activity activity)
{
// This method will take an Activity and return a response
// that will conatin the current High Scores
// Connect to the database
Models.BotDataEntities2 DB = new Models.BotDataEntities2();
var text = activity.Text;
if (!Int32.TryParse(text, out int number))
{
//reply that there is no number;
return;
}
// Get the top 5 high scores since yesterday
var Courses = (from UserLog in DB.NYPCourses
where (UserLog.Course != null) && (UserLog.CutOffPoint == number)
select UserLog)
.OrderBy(x => x.Course)
.ToList();
// Create a response
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("Course Information:\n\n");
// Loop through each high score
foreach (var Course in Courses)
{
// Add the High Score to the response
sb.Append(String.Format("School: {0}/ Course: {1}/ Course Code: {2}/ Cut Off Point: {3})\n\n"
, Course.School
, Course.Course
, Course.CourseCode
, Course.CutOffPoint));
}
await context.PostAsync(sb.ToString());
context.Wait(this.MessageReceived);
}
Намерение Луиса в SimpleLUISDialog.cs
[LuisIntent("CutOffPoint")]
public async Task CutOffPoint(IDialogContext context, IAwaitable<IMessageActivity> message, LuisResult result)
{
var msg = await message;
await ShowCutOffPoint(msg);
}
1 ответ
Просто переместите ShowCutOffPoint
метод из MessagesController
к SimpleLUISDialog
,
Затем обновите подпись вашего CutOffPoint
Метод включения деятельности:
[LuisIntent("CutOffPoint")]
public async Task CutOffPoint(IDialogContext context, IAwaitable<IMessageActivity> message, LuisResult result)
{
var msg = await message;
await ShowCutOffPoint(msg)
}
Наконец, замените все ConnectorClient
связанный код
// Create a reply message
Activity replyToConversation = activity.CreateReply();
replyToConversation.Recipient = activity.From;
replyToConversation.Type = "message";
// Set the text containg the High Scores as the response
replyToConversation.Text = sb.ToString();
// Create a ConnectorClient and use it to send the reply message
var connector = new ConnectorClient(new Uri(activity.ServiceUrl));
// Send the reply
connector.Conversations.SendToConversationAsync(replyToConversation);
с
await context.PostAsync(sb.ToString());
context.Wait(this.MessageReceived);