我今天从github下载了WebChat客户端的最后一个版本(4.0.4),并在我的网站中部署。
我已经检测到smooch.getuser()在检测到新用户之前返回"未定义",直到该新用户发送他的第一个消息,但返回用户并没有发生。
<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 在匿名
,但是,如果我在答复解决后发送任何消息,然后我尝试恢复用户ID,则变量会定义。在Web Messenger聊天的前3.x.x版本中,它没有以这种方式发生。
此代码返回有效的用户ID:
<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:21:22.947 SMOOCH_LOCAL.HTML:28 1102FDEE2B7D3C2ABB639CBE
有人知道这是v4.x发行的错误还是新功能?
谢谢
这是Web Messenger 4.x的预期行为 - 用户不再自动创建。取而代之的是,将用户创建推迟到发送消息后。v4.0.0
的发行说明中提到了这一点Web Messenger现在使用新的优化初始化序列。这个新的序列改变了关键事件的时机,例如创建新用户或建立WebSocket连接。
另外,您可以在初始化Web Messenger之前先用userId
来创建用户,并使用login
方法初始化该用户,但是根据您的用例,这可能是或不适当的。