Запрос SQL Azure БД (VM) в бот LUIS - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть проект BotFramework, который я построил с помощью Azure со встроенным LUIS API для языковой обработки. В моем файле BasicLuisDialog.cs я хочу добавить призыв к действию, чтобы один из LuisIntents был запросом к базе данных SQL, который принимает запростекст, введенный пользователем в бот, запросите это имя в базе данных SQL, а затем верните сведения об этом человеке.

В настоящее время я добавил это в файл BasicLuisDialog.cs под намерением, к которому я хочу запросить запрос:

 [LuisIntent("Who_is_Employee")]
    public async Task Who_is_EmployeeIntent(IDialogContext context, LuisResult result)
    {
        EntityRecommendation recommendation;
        if(result.TryFindEntity("employee_name", out recommendation))
        {
            string role = EmployeeService.FindEmployee(recommendation.Entity);
            await context.PostAsync(" " + role);
        }

Я создал EmployeeService.cs

using LuisBot.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace LuisBot.Service
{
    public class EmployeeService
    {
        public static string FindEmployee(string name)
        {
            string title = null;
            using(EmployeeDb db = new EmployeeDb())
            {
               var rec = db.vw_Everyone.Where(c => c.givenName ==     name).FirstOrDefault();
            title = rec.title;

        }

        return title;
    }
}

}

Я создал EmployeeDb.cs:

namespace LuisBot.Model
{
using System;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;

public partial class EmployeeDb : DbContext
{
    public EmployeeDb()
        : base("name=EmployeeDb")
    {
    }

    public virtual DbSet<vw_Everyone> vw_Everyone { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
    }
}
}

И представление SQL, которое называется vw.Everyone.cs:

namespace LuisBot.Model
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;

public partial class vw_Everyone
{
    [StringLength(256)]
    public string mail { get; set; }

    [StringLength(256)]
    public string SN { get; set; }

    [StringLength(256)]
    public string givenName { get; set; }

    [StringLength(256)]
    public string mobile { get; set; }

    [StringLength(256)]
    public string telephoneNumber { get; set; }

    [StringLength(256)]
    public string title { get; set; }

    [StringLength(256)]
    public string department { get; set; }

    [StringLength(256)]
    public string sectors { get; set; }

    [StringLength(256)]
    public string region { get; set; }

    [StringLength(256)]
    public string physicalDeliveryOfficeName { get; set; }

    [StringLength(256)]
    public string company { get; set; }

    public int? userAccountControl { get; set; }

    [StringLength(4000)]
    public string sAMAccountName { get; set; }

    [StringLength(256)]
    public string ADsPath { get; set; }

    [StringLength(513)]
    public string CN { get; set; }

    [StringLength(4)]
    public string ipPhone { get; set; }

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Location { get; set; }
    }
}

(Извините, если мой коднемного не отформатирован, я новичок в программировании и StackFlow)

Этот код, который я думал, будет работать, но не запрашивает базу данных SQL и не возвращает мне информацию, которую я хочу, я просто что-то делаю неправильноне могу понять, что.

1 Ответ

0 голосов
/ 04 октября 2018

@ Марк Хокинс-Вуд Похоже, что в вашем BasicLuisDialog.cs вы делаете что-то, только если ваш LuisResult содержит employee_name сущность. Вы уверены, что ваши результаты действительно содержат такую ​​сущность?

Вы можете проверить, включив оператор else, чтобы предпринять какое-либо действие, если в ваших результатах Luis нет сущности employee_name:

EntityRecommendation recommendation;
        if (result.TryFindEntity("employee_name", out recommendation))
        {
            string role = EmployeeService.FindEmployee(recommendation.Entity);
            await context.PostAsync(" " + role);
        }
        else
        {
            await context.PostAsync("no employee_name");
        }
...