2017-10-04 121 views
0

我今天下載了最後一個版本(4.0.4,從昨天)工作,並在我的網站部署英寸的getUser不從GitHub上的網絡聊天客戶端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未捕獲的(以諾)類型錯誤:在smooch_local.html無法讀取的不確定 財產 '_id':26 在匿名


但是,如果我在promise解決後發送任何消息,然後我嘗試恢復userId,變量被定義。在Web Messenger聊天的以前的3.x.x版本中沒有發生這種情況。

此代碼返回一個有效的用戶名:

<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的初始化已完成! 12:21:22.947 smooch_local.html:28 1102fdee2b7d3c2abb639cbe

有誰知道它是否是一個錯誤或4.x版的版本中的新功能?

感謝

回答

0

這是預期的Web Messenger的4.x的行爲 - 用戶在初始化時不再自動創建。相反,用戶創建被推遲到他們發送消息之後。這是在release notes提到V4.0.0

Web Messenger now uses a new optimized initialization sequence. This new sequence alters the timing of key events such as creating a new user or establishing a websocket connection.

或者,您可以pre-create與Web Messenger的被初始化之前userId用戶,並使用login方法來初始化作爲該用戶,但是這可能會或可能根據您的使用情況不適合。

+0

感謝您的答覆。現在我嘗試恢復userId,如果未定義,則爲新會話創建一個新的userId,而不分配JWT令牌。現在的問題是,我發出了一個** Smooch.destroy()**命令,並在此之後,Smooch.Init({APPID: 'myAppId' 用戶名: 'newUserId'})。此時,Smooch發出一個錯誤消息:「TypeError:無法讀取未定義的屬性」推送「。感謝 – jlgordo

+0

這是一個應該被固定在V4.0.5中的錯誤(https://github.com/smooch/smooch-web/releases/tag/4.0.5) – michaels