You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

标准逻辑应用Service Bus Trigger自定义跟踪ID表达式无消息时报错求助

问题描述

我使用带有共享Service Bus触发器的标准逻辑应用,触发器类型为「当主题订阅中收到消息时(自动完成)」。我在触发器的「设置->跟踪」下的自定义跟踪ID中使用了以下表达式:

@{triggerBody()?['Properties']?['clientTrackingId']}

当有有效消息时,该表达式可以正常工作;但没有消息时,触发器每次轮询检查Service Bus是否有消息都会抛出异常:

无法处理触发器“When_a_message_is_received_in_get-survey-responses”的模板语言表达式(第1行,第8804列):“模板语言表达式'triggerBody()?['Properties']?['clientTrackingId']'无法求值,因为无法选择属性'Properties'。不支持对String类型的值进行属性选择。”

我尝试过表达式 @{coalesce(triggerBody()?['Properties']?['clientTrackingId'], workflow().run.name)},但没有效果,希望能得到一个不会引发异常的等效表达式。

解决方案

可以通过先判断triggerBody()的类型,再决定是否访问属性的方式避免异常,使用isObject函数结合if条件判断来实现:

@{if(isObject(triggerBody()), triggerBody()?['Properties']?['clientTrackingId'], workflow().run.name)}

这个表达式的逻辑是:如果triggerBody()是对象类型(即存在有效消息时),则尝试获取clientTrackingId;如果不是对象类型(即轮询无消息时),则使用工作流的运行名称作为跟踪ID,这样就能避免非对象类型下的属性选择异常。

如果需要更严谨的判断,还可以同时检查Properties属性是否存在:

@{if(and(isObject(triggerBody()), contains(triggerBody(), 'Properties')), triggerBody()?['Properties']?['clientTrackingId'], workflow().run.name)}

内容的提问来源于stack exchange,提问作者user195166

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:22:33