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

Posted

技术标签:

【中文标题】Azure 逻辑应用向 ServiceBus 发送 JSON 消息【英文标题】:Azure Logic Apps send JSON Message to ServiceBus 【发布时间】:2017-03-29 08:55:23 【问题描述】:

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

 Title: '', CreatedBy:'' 

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

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

如果我回到设计器,在“标题”的单引号之间,我从我的动态内容中添加字段,设计器(代码视图)如下所示:

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

当我尝试保存时,我收到以下错误:

未能保存逻辑应用 MyLogicApp。模板验证失败:“第 1 行和第 163728 列的模板操作 'Send_message' 无效:“无法解析模板语言表达式 'base64(concat(' Title: '',triggerBody()?[ 'Title'],'', CreatedBy:'' '))': 预期的标记 'RightParenthesis' 和实际的 'Identifier'。".'。

我觉得错误告诉了我问题,但我无法完全弄清楚。有人可以帮我正确的格式吗?

从我上面链接的文章中,我也尝试了这个,但得到了同样的错误:

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

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

【问题讨论】:

【参考方案1】:

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

逻辑应用代码视图应如下所示:

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

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

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

我很想发布一些引用或支持文章,但我还没有找到任何内容 - 如果有人有任何有用的资源来通过逻辑应用向服务总线发送消息以将它们添加到这篇文章中,我将不胜感激.谢谢!

【讨论】:

以上是关于Azure 逻辑应用向 ServiceBus 发送 JSON 消息的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 Azure 资源管理器 API 向队列或主题发送和检索消息

如何使用 Azure.Messaging.ServiceBus 库添加自定义属性?

Azure ServiceBus:找不到“com.microsoft.azure.servicebus.ITopicClient”

使用 azure 逻辑应用程序将消息作为字符串发送到 azure 服务总线

包 Microsoft.Azure.ServiceBus 5.1.3 与 net462 不兼容

Azure 逻辑应用 HTTP 请求 500