Getuser在4.0.4主网络聊天端中不起作用



我今天从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方法初始化该用户,但是根据您的用例,这可能是或不适当的。

最新更新