Как создать чат-бот, который будет извлекать данные из базы данных SQL Azure с помощью .NET

Моя основная идея - разработать чат-бота для проверки увольнения сотрудников.

Например, Сотрудник может ввести свой идентификатор или идентификатор электронной почты сотрудника - в соответствии с идентификатором электронной почты я хочу получить данные из базы данных, такие как годовые отпуска и личные отпуска конкретного сотрудника. И выдает результаты пользователю в приглашении ChatBot.

Для этого я попытался подключить свой .NET BotAPP к базе данных Azure SQL, но мне это не удалось.

может ли кто-нибудь помочь мне решить этот вопрос?

Здесь я собираюсь добавить код всех разных файлов

Web.Config

 <appSettings>
<!-- update these with your Microsoft App Id and your Microsoft App Password-->
<add key = "BotId" value = "MY BOT ID" />
<add key = "MicrosoftAppId" value = "My APP ID" />
<add key = "MicrosoftAppPassword" value = "My APP PWD" />
<add key = "StorageConnectionString" value = "MY Database Connection String" />

Global.asax

 public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        Conversation.UpdateContainer(
            builder =>
            {
                builder.RegisterModule(new AzureModule(Assembly.GetExecutingAssembly()));

                // Using Azure Table Storage
                var store = new TableBotDataStore(ConfigurationManager.AppSettings["AzureWebJobsStorage"]); builder.Register(c => store)
                    .Keyed<IBotDataStore<BotData>>(AzureModule.Key_DataStore)
                    .AsSelf()
                    .SingleInstance();

            });
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }

}

MessageController.cs

namespace Microsoft.Bot.Sample.SimpleEchoBot{[BotAuthentication]
public class MessagesController : ApiController
{
    [ResponseType(typeof(void))]
    public virtual async Task<HttpResponseMessage> Post([FromBody] Activity activity)
    {
        // check if activity is of type message
        if (activity != null && activity.GetActivityType() == ActivityTypes.Message)
        {
            await Conversation.SendAsync(activity, () => new EchoDialog());
        }
        else
        {
            HandleSystemMessage(activity);
        }
        return new HttpResponseMessage(System.Net.HttpStatusCode.Accepted);
    }

    private Activity HandleSystemMessage(Activity message)
    {
        if (message.Type == ActivityTypes.DeleteUserData)
        {
        }
        else if (message.Type == ActivityTypes.ConversationUpdate)
        {
        }
        else if (message.Type == ActivityTypes.ContactRelationUpdate)
        {
        }
        else if (message.Type == ActivityTypes.Typing)
        {
        }
        else if (message.Type == ActivityTypes.Ping)
        {
        }

        return null;
    }
}

}

EchoDialog.cs

namespace Microsoft.Bot.Sample.SimpleEchoBot{
[Serializable]
public class EchoDialog : IDialog<object>
{
    protected int count = 1;

    public async Task StartAsync(IDialogContext context)
    {
        context.Wait(MessageReceivedAsync);
    }

    public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
    {
        var message = await argument;

        if (message.Text == "reset")
        {
            PromptDialog.Confirm(
                context,
                AfterResetAsync,
                "Are you sure you want to reset the count?",
                "Didn't get that!",
                promptStyle: PromptStyle.Auto);
        }
        else
        {
            await context.PostAsync($"{this.count++}: You said {message.Text}");
            context.Wait(MessageReceivedAsync);
        }
    }

    public async Task AfterResetAsync(IDialogContext context, IAwaitable<bool> argument)
    {
        var confirm = await argument;
        if (confirm)
        {
            this.count = 1;
            await context.PostAsync("Reset count.");
        }
        else
        {
            await context.PostAsync("Did not reset count.");
        }
        context.Wait(MessageReceivedAsync);
    }

}

}

Имя таблицы: EmployeeLeave EmployeeId Сотрудник Ежегодный отпуск Личный Имя сотрудника СотрудникОфис EmployeeTitle

Теперь, может ли кто-нибудь помочь мне, как я могу получить подробную информацию о конкретном сотруднике?

Пожалуйста, приведите минимальный пример того, что вы пробовали до сих пор и с какой ошибкой столкнулись?

Zeeshan Adil 13.09.2018 06:49

Спасибо за ответ, Адиль, я пробовал только тестировать, кажется, ничего. Так ты можешь мне посоветовать Как мне уйти?

Zankhit Patel 13.09.2018 06:52

@zakhit Пожалуйста, попробуйте добавить эту деталь к своему вопросу. Такие люди, как мы, здесь, чтобы помочь вам, ребята, сделать ваши вопросы более понятными для людей, которые могут помочь. также ваша проблема, похоже, связана с подключением вашего бота к базе данных SQL Azure.

Zeeshan Adil 13.09.2018 07:00
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
314
0

Другие вопросы по теме