【发布时间】:2021-02-03 02:45:50
【问题描述】:
开箱即用的旧版网络聊天用于在通过同一浏览器访问时跨会话记住用户。我认为这是通过使用cookies?新版本(“双子座”)不这样做。每次我关闭浏览器窗口并从同一个浏览器再次打开时,都会发送一个新 ID,因此我无法再访问保存的 userState 信息。为了恢复格式,我通过直接线路切换到 botframework-webchat 并遇到了同样的问题。 userID 有一个明确的输入,我不知道如何使特定用户的输入保持一致。
我不是 Web 开发人员,目前不需要将其作为强大的实现。我只是想让这项工作像以前的开箱即用网络聊天一样工作。任何人都可以阐明以前的版本是如何工作的,和/或我如何使直达版本具有相同的功能?
编辑:根据 Steven 对以下答案的评论,我尝试实现 get/set cookie,但它不起作用。下面是我试过的代码。我可以通过控制台看到我正在进入 if 语句并且正在生成用户 ID,但它没有被保存(我在 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');
【问题讨论】:
-
接受/投票支持更大的 Stack Overflow 社区和任何有类似问题的人。如果您觉得我的回答足够,请“接受”并点赞。如果没有,请告诉我我还能提供哪些帮助!
-
我有时间测试一下就可以了!
标签: botframework web-chat