为什么不能将队列消息文本发送到Azure函数?

为什么不能将队列消息文本发送到Azure函数?,azure,azure-functions,azure-logic-apps,Azure,Azure Functions,Azure Logic Apps,我有一个带有队列触发器的Azure Logic应用程序。队列消息是JSON。当我向Azure函数发送消息文本时,我得到 UnsupportedMediaType { "Message": "The WebHook request must contain an entity body formatted as JSON." } 我认为这会直接起作用。我试着将请求主体设置为 @{json(<Message text>)} 其中是selectdynamiccontent项,但我

我有一个带有队列触发器的Azure Logic应用程序。队列消息是JSON。当我向Azure函数发送消息文本时,我得到

UnsupportedMediaType
{
  "Message": "The WebHook request must contain an entity body formatted as JSON."
}
我认为这会直接起作用。我试着将请求主体设置为

@{json(<Message text>)} 
其中是selectdynamiccontent项,但我收到一条红色消息,输入一个有效的json

建立这种联系的诀窍是什么?我是否必须在函数中传入然后解析出消息文本?再一次,我假设它会自动执行。

语法表示字符串插值。这意味着您的表达式@{json}将消息文本反序列化为json,然后再次序列化

因此,您要使用的表达式是

@json(<Message text>) 
给未来的读者

我向我的webhook传递了一些看起来有效的json

并且一直得到

消息:WebHook请求必须包含格式为JSON的实体体

错误

:

最后,我找到了一个json表达式,它完成了伏都教并消除了错误。json表达式中的参数是我之前操作的输出,它是有效的json。它显然只需要一点帮助

原始非设计器代码为:

        "GenericWebHookCsharpOne": {
          "type": "Function",
          "inputs": {
            "body": "@json( body('MyPreviousAppLogicActionWhichIsAnAzureFunction'))",
            "method": "POST",
            "function": {
              "id": "/xxxxxxxxxxxxxxxxxxxxxxxx
            }

另外,为什么有两个名为Body的动态元素来自消息队列触发器?您能确认它们都来自触发器吗?对于前面的任何操作,您也会看到一个。也可能是这样的,内容中有一个名为“body”的属性,因此设计器将为消息内容显示一个令牌,为名为“body”的属性显示一个令牌。您正在使用哪个特定的队列触发器?当队列触发器中有消息时,我有一个。紧接着我有了一个函数动作。动态内容列表有两个正文条目。我最终将正文传递到函数中,然后解析消息文本。这是可行的,但就像我说的,我会假设我可以直接传递短信。我知道这有点像Szymon的答案。所以我不是想从他那里拿走。只是为了大家的共同利益。