Состояние UserProfile сохраняется между пользователями в боте v4

Когда у меня есть два экземпляра бота (это может быть два окна эмулятора или два браузера, если я развертываю бота в Azure), первое имя, введенное для всех остальных экземпляров, сохраняется.

Первый экземпляр

https://imgur.com/sa7AAbn

Экземпляр два

https://imgur.com/Ct20HE5

Я ожидал, что бот снова спросит мое имя, неважно, сколько у меня экземпляров, бот всегда идентифицирует меня как Брунно. Как я могу изменить это поведение?

Я следил за этим руководством


person Brunno    schedule 15.04.2019    source источник
comment
Используете ли вы один и тот же UserId в обоих случаях?   -  person stuartd    schedule 15.04.2019
comment
Не могли бы вы пояснить, что вы имеете в виду, открывая веб-браузер? Вы используете Test in WebChat в Azure или настроили WebChat для работы на своей собственной веб-странице? Кроме того, пробовали ли вы в эмуляторе открыть раскрывающееся меню перезапуска беседы и перезапустить беседу с новым идентификатором пользователя? Обычно данные сохраняются между беседами, если оба окна беседы используют один и тот же идентификатор пользователя.   -  person tdurnford    schedule 15.04.2019
comment
@stuartd, я провел тест, и в обоих случаях у меня был некоторый экземпляр UserId 1: from: {id: 42f4df72-06c1-406a-b144-95b0b908c379, name: User}, экземпляр 2: from: {id: 42f4df72-06c1- 406a-b144-95b0b908c379, name: User}, как это исправить? Как я могу создать новый идентификатор пользователя для каждого нового экземпляра?   -  person Brunno    schedule 16.04.2019
comment
привет @tdurnford, я имел в виду иметь два браузера одновременно, Firefox и Chrome. Я настраиваю WebChat для работы на моей собственной странице. Перезапуск разговора (Restart with new user ID) решил проблему в эмуляторе. Как я могу исправить эту проблему в веб-чате, чтобы работать на моей странице? Как я могу убедиться, что у каждого пользователя есть новый идентификатор пользователя? Благодарность   -  person Brunno    schedule 16.04.2019


Ответы (2)


Если вы не предоставите WebChat уникальный идентификатор для каждого разговора, он будет ссылаться на одни и те же объекты данных в хранилище. Итак, чтобы решить эту проблему, вы должны сгенерировать случайный идентификатор для каждого пользователя или экземпляра разговора. См. Пример во фрагменте кода ниже.

const userID = Date.now() + Math.random().toString(36);

...

window.WebChat.renderWebChat({
directLine: window.WebChat.createDirectLine({ token }),
store,
userID
}, document.getElementById('webchat'));

Надеюсь это поможет!

person tdurnford    schedule 15.04.2019

Также проверьте последнюю версию README.md веб-чата Справочник по WEBCHAT API состояния

Если идентификатор пользователя не указан, по умолчанию будет выбран случайный идентификатор пользователя.

Может быть более эффективным.

person Hessel    schedule 03.08.2019