botframework - 在 .lg 文件中指定时无法读取 Bot 用户状态属性(使用 Bot Framework Composer 生成)
问题描述
我使用以下代码片段在代码中创建了一个用户状态属性:
userProfileProperty = UserState.CreateProperty<UserProfile>(nameof(UserProfile));
如上所示,我使用自定义类对象作为 preoprty 值,即 UserProfile 类,并且该类包含各种类属性,如下所示:
public class UserProfile
{
public string UserEmail { get; set; }
public string UserAlias { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
现在,当我尝试通过在 .lg 文件中提及它来访问 AdaptiveDialog 流中的相同属性时,如下所示:
# bfdprompt-254582()
- what is your name
# bfdactivity-998627()
- Your name is @{user.name}
# bfdactivity-709726()
- Starting the First Dialog
# bfdactivity-496995()
- Test custom value is @{user.userprofile.useremail}
我收到以下异常:
请协助。
解决方案
只要您将模型UserProfile发送到模板引擎,请尝试直接使用属性名称,如下所示
# bfdactivity-496995()
- Test custom value is @{useremail}
查看此工作示例以获取更多详细信息:
private class UserLanguagePreference
{
public string OldLanguage { get; set; }
public string NewLanguage { get; set; }
}
我们使用如下模板引擎从 .lg 文件中获取响应:
UserLanguagePreference userLanguagePreference = new UserLanguagePreference
{
OldLanguage = _state.UserInfoState.LanguagePreference,
NewLanguage = PayloadsLanguageEnum.GetValueFromCode(payload).Name
};
await sc.Context.SendActivityAsync(_templateEngine.GenerateActivityForLocale("UpdateLanguagePreference", userLanguagePreference));
.lg 文件具有以下内容:
# UpdateLanguagePreference
- Language preference changed from : @{OldLanguage} to @{NewLanguage}