Как связать данные, извлеченные из базы данных 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);
Другие вопросы по тегам