Мой бот находится в веб-приложении, которое требует аутентификации пользователя с использованием OAuth.Когда пользователь начинает сеанс чата, я хотел бы загрузить данные пользователя в память для персонализации диалогов.Ниже приведен текущий способ, которым я делаю это, но хотел бы получить совет от любого, кто имеет лучший метод.
private async Task OnMessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
{
var name = GetUserDetails(result);
var message = await result;
string id = context.Activity.Id;
string promptText = $"Hi {name}, before we start which product do you want to chat about today?";
PromptDialog.Choice(
context: context,
resume: ChoiceReceivedAsync,
options: (IEnumerable<SoftwareOptions>)Enum.GetValues(typeof(SoftwareOptions)),
prompt: promptText,
retry: "Sorry please select one of the options I listed thanks.",
promptStyle: PromptStyle.Auto
);
}
Идея заключается в том, что метод GetUserDetails
загружает такие детали, как имя пользователя, имя, companyId и т. Д. Язатем может вызвать детали пользователя из любого диалога по мере необходимости, когда мой бот ответит, чтобы персонализировать разговор.
private object GetUserDetails(IAwaitable<IMessageActivity> result)
{
var db = new LicensingDbContext();
string id = "John.Smith";
var user = (from u in db.AspNetUsers
where (u.UserName == id)
select new UserDetails
{
FirstName = u.FirstName
}).ToList();
return user.First();
}