Как получить новую версию веб-чата botframework запомнить идентификатор пользователя - PullRequest
1 голос
/ 24 февраля 2020

Старая стандартная версия веб-чата, запоминающая пользователя во время сеансов при доступе через тот же браузер. Я предполагаю, что это было через использование куки? Новая версия ("Близнецы") не делает этого. Каждый раз, когда я закрываю окно браузера и снова открываю из того же браузера, отправляется новый идентификатор, поэтому у меня больше нет доступа к сохраненной информации о пользовательском состоянии. Чтобы восстановить форматирование, я переключился на botframework-webchat через прямую линию, и у меня возникла та же проблема. Существует явный ввод для userID, и я понятия не имею, как сделать это согласованным для конкретного пользователя.

Я не веб-разработчик и не нуждаюсь в этом времени, чтобы сделать это надежной реализацией. Я просто хочу, чтобы эта работа работала так же, как работал первый из чатов. Может кто-нибудь пролить свет на то, как работала эта предыдущая версия, и / или как я могу сделать так, чтобы прямая версия имела такую ​​же функциональность?

Редактировать: На основании комментария Стивена к ответу ниже, Я пытался реализовать файлы cookie get / set, но это не работает. Ниже приведен код, который я пробовал. Через консоль я вижу, что получаю оператор if и генерируется userID, но он не сохраняется (я не вижу его в Application> Storage> Cookies, так что это не просто get не работает). Пожалуйста, сообщите!

           function setCookie(name,value,days) {
                var expires = "";
                if (days) {
                    var date = new Date();
                    date.setTime(date.getTime() + (days*24*60*60*1000));
                    expires = "; expires=" + date.toUTCString();
                }
                document.cookie = name + "=" + (value || "")  + expires + "; path=/";
            }
            function getCookie(name) {
                var nameEQ = name + "=";
                var ca = document.cookie.split(';');
                for(var i=0;i < ca.length;i++) {
                    var c = ca[i];
                    while (c.charAt(0)==' ') c = c.substring(1,c.length);
                    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                }
                return null;
            }
            function eraseCookie(name) {   
                document.cookie = name+'=; Max-Age=-99999999;';  
            }

            if (!getCookie('userID')) {
                console.log('in if');
                var userID = Date.now() + '_' + Math.random().toString().substr(2, 9);
                console.log(userID);
                setCookie('userID',userID,999);
            }
            console.log('out of if');

1 Ответ

0 голосов
/ 26 февраля 2020

Пожалуйста, просмотрите первую половину этого решения Я разместил. В нем рассказывается, как сохранить сеанс браузера, когда пользователь обновляется или временно отключается.

Короче говоря, он использует sessionStorage() для хранения token и conversationId.

Хотя может быть чрезвычайно полезно не начинать сеанс непрерывно, во время тестирования также может раздражать необходимость закрытия или повторного открытия или жесткого обновления sh и удаления хранилища сеансов для получения чистого листа.

Если это не мешает вашей странице или вашим потребностям, поместите кнопку на страницу и свяжите ее со следующим фрагментом кода. Это простой хак, который был весьма полезен.

const reloadBtn = document.getElementById('reloadBtn');
reloadBtn.onclick = () => {
  location.reload( true );
};

window.onbeforeunload = function() {
  window.sessionStorage.removeItem( 'conversationId' );
  window.sessionStorage.removeItem( 'token' );
};

Надежда на помощь!

...