如何在Azure Logic App中获取触发器JSON数据并发送至ServiceBus?
解决Dynamics365集成Azure ServiceBus的消息内容构造问题
错误原因分析
你用@{base64ToString(triggerBody())}报错的核心原因是:base64ToString函数要求输入是base64编码的字符串,但D365触发器的triggerBody()返回的是JSON对象(而非base64字符串),当触发器未正确返回数据时还会出现null值,自然触发类型不匹配错误。
正确的消息内容构造方法
根据D365触发器的输出结构,选择对应的模板写法:
情况1:triggerBody()直接返回D365记录数据
如果你的D365触发器输出中,triggerBody()本身就是创建/更新的记录JSON对象,直接用对象嵌套构造目标格式:
{"message": @{triggerBody()}}
逻辑应用会自动将嵌套的JSON对象序列化为合法的JSON字符串,作为ServiceBus消息的Content。
情况2:记录数据在triggerBody()的body子节点下
部分D365触发器的输出结构会在外层包一层body节点,此时需要指定子节点路径,同时用?做空值保护避免报错:
{"message": @{triggerBody()?['body']}}
空值兜底处理
如果担心触发器返回空数据导致消息格式异常,可使用coalesce函数设置兜底值(比如空对象):
{"message": @{coalesce(triggerBody()?['body'], {})}}
验证步骤
- 保存逻辑应用后,手动在D365中创建或更新一条记录触发逻辑应用。
- 进入Azure ServiceBus的队列/主题,查看接收的消息内容,确认格式为
{"message": 原始触发数据}的JSON结构。
内容的提问来源于stack exchange,提问作者IConfuseEasily
相关产品推荐
相关产品推荐

