2017-04-13 96 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);