如何在Piwik/Matomo API的JSON请求中指定URL含特定段的细分条件?
如何在Matomo/Piwik API的JSON请求中按URL包含特定字符串细分浏览器语言数据
我网站MyWebsite使用Piwik/Matomo做流量追踪,想通过API导出浏览器语言相关数据,但仅针对URL包含MySection的特定板块。请问能不能在JSON请求里指定这个细分条件?具体怎么实现?我写的示例代码如下:
'{ "date_from": "'.$dateStart.'", "date_to": "'.$dateEnd.'", "website_id": "'.$siteId.'", "offset": 0, "segment": {"pageUrl": "@'.$mySectionUrl.'"} }'
我在《API Segmentation with GET request》文章里看到可以用@表示包含,但没说怎么在JSON请求里实现同样的效果。
解答
完全可以实现,Matomo API的JSON POST请求中,segment参数的语法规则和GET请求完全一致,用@即可表示“包含”匹配。不过你当前的示例代码存在格式错误,segment字段需要是字符串格式的细分表达式,而非键值对对象,修正后的代码如下:
$jsonPayload = '{ "date_from": "'.$dateStart.'", "date_to": "'.$dateEnd.'", "website_id": "'.$siteId.'", "offset": 0, "method": "Language.getLanguages", "segment": "pageUrl=@'.$mySectionUrl.'" }';
需要注意几个关键点:
- 必须指定
method字段:要获取浏览器语言数据,需使用Language.getLanguages接口(如果需要其他维度数据,替换为对应API方法即可) - 细分表达式格式:
pageUrl=@xxx表示匹配所有URL包含xxx的访问数据,@就是“包含”的匹配符,和GET请求中的规则完全一致 - 字符串拼接注意事项:确保
$mySectionUrl的值是正确的URL片段(比如/MySection/),如果片段包含特殊字符,需要进行URL编码后再拼接,避免JSON格式错误
你可以先在Matomo后台的“访客>细分”功能中验证这个细分条件的有效性,确认能筛选出目标数据后,再将对应的表达式复制到API请求的segment字段中,这样能确保逻辑正确。
内容的提问来源于stack exchange,提问作者Fabbio
相关产品推荐
相关产品推荐

