Azure 逻辑应用向 ServiceBus 发送 JSON 消息

Azure Logic Apps send JSON Message to ServiceBus

我想从逻辑应用程序将 JSON 发送到 Azure ServiceBus,但我正在为正确的格式而苦苦挣扎(我认为)。逻辑应用程序从 SharePoint Online 列表项中获取信息,因此我可以在逻辑应用程序中将其作为动态内容进行访问。对于此 post,假设 JSON 模板如下所示:

{ Title: '', CreatedBy:'' }

现在在逻辑应用程序设计器中,我将内容类型设置为 "text/plain" 以确保编码得到处理(如 所述),然后将上面的模板添加到 "Content" 场地。在 Logic App designer(代码视图)中看起来像这样,这是我所期望的:

"ContentData": "@{base64('{ Title: '', CreatedBy:'' }')}"

如果我返回设计器并在 "Title" 的单引号之间添加动态内容中的字段,设计器(代码视图)如下所示:

"ContentData": "@{base64(concat('{ Title: '',triggerBody()?['Title'],'', CreatedBy:'' }'))}"

当我尝试保存时,出现以下错误:

Failed to save logic app MyLogicApp. The template validation failed: 'The template action 'Send_message' at line '1' and column '163728' is not valid: "Unable to parse template language expression 'base64(concat('{ Title: '',triggerBody()?['Title'],'', CreatedBy:'' }'))': expected token 'RightParenthesis' and actual 'Identifier'.".'.

我觉得这个错误告诉了我问题所在,但我不太明白。有人可以帮我正确格式化吗?

根据我上面链接的文章,我也试过这个但得到了同样的错误:

"ContentData": "@{base64(concat('{ Title: '', string(triggerBody()?['Title']),'', CreatedBy:'' }'))}"

编辑:我忘了补充一点,我发现 this article 建议在使用 JSON 和逻辑应用程序时添加 decodeBase64。不确定它是否相关,因为我不是从 ServiceBus 解析的。

通过反复试验设法找到了解决方案。如果是我不可靠的格式有问题,那么请更新我的解决方式,希望其他人觉得这有用。

Logic App 代码视图应如下所示:

"ContentData": "@{base64('{ Title: {triggers().outputs.body.Title}, CreatedBy: {triggers().outputs.body.CreatedBy} }')}"

逻辑应用程序设计器视图内容字段应如下所示:

{ Title: {triggers().outputs.body.Title}, CreatedBy: {triggers().outputs.body.CreatedBy} }

我很想 post 一些引用或支持文章,但我还没有找到任何文章 - 如果有人有任何关于通过逻辑应用程序向服务总线发送消息的有用资源,我将不胜感激将它们添加到此 post。谢谢!