7
votes

I have a HTTP listener that I am sending a JSON post body with.

{
"recipient":"[email protected]",
"subject":"this is a test subject",
"body":"this is a test body email"
}

I am trying to pull those individual parameters out in the next flow, but it errors instead!

The result I am looking to achieve is "[email protected]" being taken as an input for the next action

I've tried things like

"@{triggers().outputs.body.Content.recipient}"

and various variations of, but I suspect I'm missing something!

edit to add

I am currently sending the post request via Powershell, though it will ultimately be over c#

$a = @"
{"recipient":"[email protected]","subject":"this is a test subject","body":"this is a test body email"}
"@

Invoke-WebRequest -Uri     https://httplistenerc743421edf234899a1315aa38c6398bc.azurewebsites.net/listen -Method POST -Body $a
3
How are you sending the JSON POST? - Shaun Luttin
@ShaunLuttin via Powershell - see edit - Michael B
Did you use basically this process to setup the listener? azure.microsoft.com/en-us/documentation/articles/… I want to ensure I am answering the right question. - Shaun Luttin
Yes, the listener works fine, if I just put "@{triggers().outputs.body.Content}" then it will forward the entire JSON wherever I want it to (I'm testing it in a slack connector) but I want to deserialize the JSON into its components - Michael B
@ShaunLuttin Much appreciated - and note to self, delete that listener now I've posted it to the universe ;) - Michael B

3 Answers

13
votes

Ah the trick with this is the output of the HTTP Listener body is a String, so you need to convert it to JSON before you can parse it. There is a @parse() command to do just this.

So if you do this it should work:

@{json(trigger().outputs.body.Content).recipient}

That should give you the recipient. Let me know if that doesn't work.

2
votes

You have to define content-type in header of http listener, after which you don't need to parse http listener's response, it will automatically in described format.

1
votes

as i did with mine where azure function is returning json data as text/string:

@{body('azure_fun_Name').recipient}
@{body('azure_fun_Name').subject}
@{body('azure_fun_Name').body}