Моя общая идея заключается в том, что мне нужно разработать чат-бот для проверки сотрудника.
Например.Сотрудник может ввести свой идентификатор или идентификатор электронной почты сотрудника - в соответствии с идентификатором электронной почты, я хочу получать данные из базы данных, такие как ежегодный отпуск и личный отпуск этого конкретного сотрудника.И дает результаты пользователю в подсказке ChatBot.
Для этого я попытался соединить свой .NET BotAPP с базой данных SQL Azure, но не смог пройти через него.
Может кто-нибудь помочь мне решить этот вопрос?
Здесь я собираюсь добавить код всех различных файлов
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 EmployeeEmail AnnualLeave PersonalLeave EmployeeName EmployeeOffice EmployeeTitle
Теперь, кто-нибудь может мне помочь, как я могу получить информацию о конкретном сотруднике?