3

我正在尝试将 adobe 分析集成到 amp 页面中。但是我想要传递的参数,我希望它们可以使用 ajax 调用动态获取。我正在使用 amp-list 获取值。ajax 响应有点像下面:

{
  "items": [
    {
      "user_type": "site_user",
      "user_id": "anonymous"
    }
  ]
}

在 amp-analytics 部分,我尝试使用花括号语法读取 user_type 和 user_id 的动态值。我的代码片段如下所示:

<amp-analytics type="adobeanalytics_nativeConfig">
    <script type="application/json">
    {
        "requests": {
            "base": "${base}",
            "iframeMessage": "${base}/stats.html?user_type={{user_type}}&user_id={{user_id}}"
        },
        "vars": {
            "host": "${host}"
        }
    }
    </script>
</amp-analytics>

但是,不是在 stats.html iframe 请求中获取值,而是使用花括号本身的相同语法将传递作为查询参数中的值。这就是在 amp-list 块之外定义 amp-analytics 标记时得到的结果。当我将整个 amp-analytics 块放入 amp-list 块中时,我没有看到 stats.html 调用被触发。在浏览器控制台中,我收到以下错误:

未定义请求字符串。分析数据不会从此页面发送。忽略事件。未找到请求字符串:iframeMessage

base和都是hostjstl 变量,它们被替换为正确的值。

任何人都可以帮助传递动态值来构造 json iframe 吗?

4

1 回答 1

0

对于您的 Adob​​e Analytics AMP HTML 集成,请使用下面的代码段将您的user_iduser_type变量传递到您的stats.html页面;

<amp-analytics type="adobeanalytics_nativeConfig">
  <script type="application/json">
    {
      "requests": {
        "base": "https://${host}",
        "iframeMessage": "${base}/stats.html?user_id=${user_id}&user_type=${user_type}"
      },
      "vars": {
        "host": "analytics.example.com",
        "user_id": "anonymous",
        "user_type": "site_user"
      }
    }
  </script>
</amp-analytics>

插值${base}变量将解析为您定义的host变量的基础。

host变量必须定义为一个域名,而不是为您的 AMP HTML 页面提供服务的域名;那是您的stats.html页面必须托管的位置(如代码段中共享的那样,stats.html 位于analytics.example.com分析域名的根目录)。

您的自定义变量,就像您的host变量一样,同样需要在vars对象下定义,如上图所示。

于 2020-05-14T23:57:42.393 回答