Свойство Bot User State не может быть прочитано, если указано в файле .lg (сгенерировано с использованием Bot Framework Composer) - PullRequest
0 голосов
/ 30 января 2020

Я создал свойство User State в коде, используя следующий фрагмент кода:

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; }

Теперь, когда я пытаюсь получить доступ к тому же свойству в потоке AdaptiveDialog, упоминая его в файле .lg, как показано ниже:

# 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}

Я получаю следующее исключение:

enter image description here

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 30 января 2020

Попробуйте использовать имя свойства напрямую , как показано ниже, пока вы отправляете модель 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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...