Banno API报告导出:获取Conversations_AllConversations最新报告ID
解决方案:获取Banno API中Conversations_AllConversations类型的最新报告ID
一、优先尝试API查询参数过滤
先核对Banno官方文档确认报告列表接口的参数支持:
- 尝试在请求URL中添加以下参数:
?type=Conversations_AllConversations:精准过滤目标类型的报告?sort=createdAt&order=desc:按报告创建时间倒序排列,此时返回结果的第一条即为最新报告,直接取其ID即可
如果API支持这些参数,这是最简便的解决方案,无需处理复杂的XSL转换。
二、修正Response XSL逻辑
若API不支持查询参数,调整你的XSL选择器逻辑:当前代码的type[last()]是取单个data节点下最后一个type子节点,而非所有符合类型的data中的最后一条。正确写法如下:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://www.w3.org/2003/05/soap-envelope" version="1.0"> <xsl:template match="/"> <WorkflowTranslatedResponse> <VariableMap> <ActivityMapVariable> <VariableName>sReportId</VariableName> <Value> <!-- 先筛选所有type匹配目标值的data节点,再取最后一个的id --> <xsl:value-of select="root/data[type = 'Conversations_AllConversations'][last()]/id"/> </Value> </ActivityMapVariable> </VariableMap> </WorkflowTranslatedResponse> </xsl:template> </xsl:stylesheet>
- 若API返回的报告列表本身是倒序(最新报告在最前),将
[last()]替换为[1]即可。
三、额外排查要点
- 确认API返回的原始XML结构:检查
root/data/type是否为纯文本节点,若存在嵌套或命名空间,需调整选择器(例如type/text()) - 在jhaEnterprise Workflow中开启调试日志,查看API返回的完整XML内容,定位目标报告ID的准确位置后再微调XSL选择器
内容的提问来源于stack exchange,提问作者Ben Reavis
相关产品推荐
相关产品推荐

