Моя основная идея - разработать чат-бота для проверки увольнения сотрудников.
Например, Сотрудник может ввести свой идентификатор или идентификатор электронной почты сотрудника - в соответствии с идентификатором электронной почты я хочу получить данные из базы данных, такие как годовые отпуска и личные отпуска конкретного сотрудника. И выдает результаты пользователю в приглашении 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
Теперь, может ли кто-нибудь помочь мне, как я могу получить подробную информацию о конкретном сотруднике?
Спасибо за ответ, Адиль, я пробовал только тестировать, кажется, ничего. Так ты можешь мне посоветовать Как мне уйти?
@zakhit Пожалуйста, попробуйте добавить эту деталь к своему вопросу. Такие люди, как мы, здесь, чтобы помочь вам, ребята, сделать ваши вопросы более понятными для людей, которые могут помочь. также ваша проблема, похоже, связана с подключением вашего бота к базе данных SQL Azure.
Пожалуйста, приведите минимальный пример того, что вы пробовали до сих пор и с какой ошибкой столкнулись?