8

阅读Zopim的文档(又名 Zendesk Chat):

API 调用必须在实时聊天脚本之后插入并包含在 $zopim(function() { ... }) 中

所以我在headHTML 的一部分中有一个 Zopim 脚本:

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

然后我在 HTML 文档的末尾添加了这个:

$zopim(function() {
  $zopim.livechat.setName('Logged in name');
  $zopim.livechat.setEmail('user@somewhere.com');
});

控制台说:

$zopim 未定义

我想我已经正确地遵循了指示。我错过了什么?

4

2 回答 2

14

我找到了更好的解决方案(在提交支持请求后)

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

我在 Zendesk 支持中使用 Zendesk 聊天代码,这就是为什么我需要添加 Ze 功能以使其使用 api 工作。

编辑:查看Jay Hewitt的有趣评论以及他对这个问题的回答

于 2017-05-11T08:36:21.217 回答
14

这将循环,等待 $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);
于 2017-06-27T09:11:24.373 回答