getUser在4.0.4主webchat客户端中不起作用

时间:2017-10-04 10:31:56

标签: smooch

我今天从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版本中的错误还是新功能?

由于

1 个答案:

答案 0 :(得分:0)

这是Web Messenger 4.x的预期行为 - 不再在初始时自动创建用户。相反,用户创建将延迟到发送消息之后。 release notes for v4.0.0

中提到了这一点
  

Web Messenger现在使用新的优化初始化序列。这个新序列改变了关键事件的时间,例如创建新用户或建立websocket连接。

或者,您可以pre-create在初始化Web Messenger之前使用userId的用户,并使用login方法初始化为该用户,但这可能是也可能不是根据您的使用情况而定。