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

时间:2017-03-23 17:45:08

标签: 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>)} 

选择动态内容项在哪里,但我收到红色消息&#34;输入有效的json&#34;。

进行此连接的诀窍是什么?我是否必须传入然后解析&#34;消息文本&#34;在我的功能?再一次,我认为它会自动完成。

2 个答案:

答案 0 :(得分:1)

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

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

@json(<Message text>) 

答案 1 :(得分:0)

为未来的读者。

我将一些(看似有效的)json传递给了我的webhook。

并不断获得

&#34;消息&#34;:&#34; WebHook请求必须包含格式为JSON的实体主体。&#34;

错误。

:(

最后,我找到了一个json&#34;表达式&#34;做了它的伏都教并摆脱了错误。我从json-expression的参数是我之前的动作输出,这是有效的json。它显然只需要一点帮助!

enter image description here

原始(非设计者)代码是:

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