4
votes

I am new to Azure logic apps. I have a service bus and pass a json object message to that service bus then I set up an action in logic apps to listen to my service bus. So everytime a new message come in to that service bus my logic apps will pick it upenter image description here and send it to http.

My question is how can I grab the property from the message in service bus and pass it to my http action. I tried this

“Id” : “@{json(triggerBody()[‘ContentData’]).id}”

but it's not working

4

4 Answers

10
votes

Who and how is sending the message on the queue?

I read a json message property (DestinationPath) in this way:

@{json(base64ToString(triggerBody()?['ContentData'])).DestinationPath}

Here is how my Logic App looks like enter image description here

and in my case the message is sent from an Azure webjob as a BrokeredMessage:

string jsonMessage = JsonConvert.SerializeObject(myObject);
Stream streamMessage = new MemoryStream(Encoding.UTF8.GetBytes(jsonMessage));
BrokeredMessage msg = new BrokeredMessage(streamMessage);

client.Send(msg);
2
votes

My precise setup to decrypt the base 64 message using the interface. Easy enough to type into the expression builder.

json(base64ToString(triggerBody()?['ContentData']))

decrypt base 64 service bus message

0
votes

ContentData of Service Bus messages is Base64 encoded, so you need to decode it first, e.g.

“Id” : “@{json(base64ToString(triggerBody()?[‘ContentData’])).id}”
0
votes

Logic app now has expressions to decode Base 64 encoded value.

My requirement was to decode the encoded ServiceBus message to an Azure Function. I solved this using Logic App Expression, decodeBase64() which can accept a dynamic content of type string, in this case the 'Content'- Content of the message, and returns the decoded json string. decodeBase64(triggerBody()?['ContentData'])

Find attached the screen shots for reference.

In the place holder for input to the action, include an expression and choose decodeBase64()

Get back to Dynamic Content tab to select 'Content' available from previous step, on hitting OK the expression would get generated