0

我今天从 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 Uncaught (in promise) TypeError: Cannot read property '_id' of undefined at smooch_local.html:26 at anonymous


但是,如果我在承诺解决后发送任何消息,然后我尝试恢复 userId,变量就会被定义。在以前的 3.xx 版本的 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>

这是控制台输出:

12:21:20.165 初始化完成! 12:21:22.947 smooch_local.html:28 1102fdee2b7d3c2abb639cbe

有谁知道这是 v4.x 版本的错误还是新功能?

谢谢

4

1 回答 1

0

这是 Web Messenger 4.x 的预期行为 - 用户不再在初始化时自动创建。相反,用户创建被推迟到他们发送消息之后。v4.0.0的发行说明中提到了这一点

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

或者,您可以在初始化 Web Messenger 之前使用 a预先创建一个用户,并使用该方法初始化为该用户,但这可能适合也可能不适合,具体取决于您的用例。userIdlogin

于 2017-10-04T12:36:08.113 回答