2017-04-13 57 views
3

閱讀Zopim(又名的Zendesk聊天)的the documentation

API調用必須插入在線聊天腳本後並在$ zopim包裹(函數(){...})

所以我有一個在Zopim腳本的HTML head部分:

<script>/*<![CDATA[*/window.zEmbed||function(e,t){ ... }("https://...); 
/*]]>*/</script> 

然後我說這個在HTML文檔的末尾:

$zopim(function() { 
    $zopim.livechat.setName('Logged in name'); 
    $zopim.livechat.setEmail('[email protected]'); 
}); 

和控制檯說:

$ zopim沒有定義

我想我已經遵循正確the instructions。我錯過了什麼?

+0

你解決了這個問題嗎?我也有同樣的問題 –

+0

不。我寫了一個超時的醜陋黑客攻擊,我會將其作爲回答 –

回答

7

我已經找到了更好的解決方案

zE(function() { 
     $zopim(function() { 
      $zopim.livechat.setName("{{\Auth::user()->name}}"); 
      $zopim.livechat.setEmail("{{\Auth::user()->email}}"); 
     }); 
    }); 

我使用的Zendesk聊天代碼的Zendesk的支持範圍內,這就是爲什麼我需要添加澤功能,使其工作使用(提交支持請求後) API。

+0

@ rap-2-h請將此答案標記爲解決方案! – Aliance

+0

這取決於你如何嵌入JavaScript。如果您使用的是$ zopim javascript,那麼這將不起作用,但是如果您使用的是Zendesk Widget(zEmbed),那麼在運行之前仍然沒有加載zE(或zEmbed)的問題,所以即使在這個實例,你需要一個等待循環。 –

1

這將循環,等待$ zopim和$ zopim.livechat加載。 一旦他們加載它將停止循環。

var waitForZopim = setInterval(function() { 
    if (window.$zopim === undefined || window.$zopim.livechat === undefined) { 
     return; 
    } 
    $zopim(function() { 
     $zopim.livechat.setName("{{\Auth::user()->name}}"); 
     $zopim.livechat.setEmail("{{\Auth::user()->email}}"); 
    }); 
    clearInterval(waitForZopim); 
}, 100);