我今天从github下载了网络聊天客户端的最后一个版本(4.0.4,从昨天开始)并部署在我的网站上。
我检测到Smooch.getUser()在检测到新用户时返回'undefined',直到这个新用户发送了他的第一条消息,但返回用户时却没有。
<script>
Smooch.on('ready', function(){
console.log('the init has completed!');
});
var skPromise = Smooch.init({appId: 'myAppId'});
skPromise.then(
function()
{
var u = Smooch.getUser();
console.log(u._id);
});
);
</script>
smooch_local.html:26未捕获(在承诺中)TypeError:无法读取未定义的属性“_id” 在smooch_local.html:26 匿名
但是,如果我在promise解决后发送任何消息,稍后我尝试恢复userId,则变量被定义。在之前的3.x.x版Web Messenger聊天中,并没有以这种方式发生。
此代码返回有效的userId:
<script>
Smooch.on('ready', function(){
console.log('the init has completed!');
});
var skPromise = Smooch.init({appId: 'myAppId'});
skPromise.then(
function()
{
Smooch.sendMessage({type: 'text', text: 'x'}).then(
function(){
var u = Smooch.getUser();
console.log(u._id);
});
}
);
</script>
这是控制台ouptut:
12:21:20.165 init完成了! 12:21:22.947 smooch_local.html:28 1102fdee2b7d3c2abb639cbe
有人知道这是v4.x版本中的错误还是新功能?
由于
答案 0 :(得分:0)
这是Web Messenger 4.x的预期行为 - 不再在初始时自动创建用户。相反,用户创建将延迟到发送消息之后。 release notes for v4.0.0
中提到了这一点Web Messenger现在使用新的优化初始化序列。这个新序列改变了关键事件的时间,例如创建新用户或建立websocket连接。
或者,您可以pre-create在初始化Web Messenger之前使用userId
的用户,并使用login
方法初始化为该用户,但这可能是也可能不是根据您的使用情况而定。