0

今日、Web チャット クライアントの最後のリリース (昨日の 4.0.4) を github からダウンロードし、自分の Web サイトにデプロイしました。

新しいユーザーが検出されると、この新しいユーザーが最初のメッセージを送信するまで 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 を初期化する前に を使用してユーザーを事前に作成し、メソッドを使用してそのユーザーとして初期化することもできますが、ユース ケースによっては、これが適切である場合とそうでない場合があります。userIdlogin

于 2017-10-04T12:36:08.113 に答える