Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get query parameters in a Logic App?

I'm trying to pass an extra query parameter to Azure logic app so that I can process below data in the Logic App workflow

For Example https://logicURL?SelectedData="%7BsiteURL%3AXYZ.sharepoint.com%2Fsites%2FXYZDev%7D" (encoded string)

In HTTP action I am trying to handle above passed data with below JSON schema

{
    "kind": "Http",
    "inputs": {
        "schema": {
            "properties": {
                "selectedData": {
                    "type": "string"
                }
            },
            "type": "object"
        }
    } }

I am not getting selectedData value. I need to use decodecomponentURI and then use the JSON value.

Azure logic app schema

Find the error here

Azure logic app run time error

like image 785
user1891797 Avatar asked Jun 25 '18 17:06

user1891797


People also ask

How do I get HTTP response in logic app?

In the search box, enter http request. From the triggers list, select the trigger named When a HTTP request is received. The HTTP request trigger information box appears on the designer. The endpoint URL that's generated after you save your workflow and is used for sending a request that triggers your workflow.

How do I add a parameter to the Logic App?

Add a condition to the logic app. Log in to the Azure Portal. Click Resource Groups-> Resource (in which you have created the logic app) -> click on the respective logic app. Click Edit. Click Code view. Under parameters, add a new parameter. Under Send_email action, update the To address with the newly added parameter value.

How do I change the send_email parameter in the Logic App?

Click Resource Groups-> Resource (in which you have created the logic app) -> click on the respective logic app. Click Edit. Click Code view. Under parameters, add a new parameter. Under Send_email action, update the To address with the newly added parameter value. Save the changes.

How do I add a response parameter to a logic request?

To use the parameter, find and add a Response action to your logic app. Under the Request trigger, select New step > Add an action. Under Choose an action, in the search box, enter response as your filter. From the actions list, select the Response action.

How do I change the email parameter in Azure Logic App?

Log in to the Azure Portal. Click Resource Groups-> Resource (in which you have created the logic app) -> click on the respective logic app. Click Edit. Click Code view. Under parameters, add a new parameter. Under Send_email action, update the To address with the newly added parameter value.


2 Answers

Context

  • MSFT Azure Logicapp
  • MSFT Logicapp workflow definition language
  • Live version as of 2020-06-25 04:56:31

Problem

  • Logicapp developer wants to obtain the value of a URL query parameter passed in via HTTP GET

Solution

  • The solution to this use-case is already provided elsewhere in this StackOverflow thread
  • This addon answer, however, refactors the previous solution
    • it addresses constructing expressions in MSFT Workflow definition language (the JSON-based source code you see when viewing a logicapp in "code" view)

Details

  • This URL extends the original question and another answer in this SO Thread
  • Here we expect FirstName LastName and FaveColor properties
    https://xyz.logic.azure.com:443/workflows/id/triggers/manual/paths/invoke
      ?api-version=2016-10-01
      &sp=%2Ftriggers%2Fmanual%2Frun
      &sv=1.0
      &sig=code
      &FirstName=Huomer
      &LastName=Huimpson
      &FaveColor=     
  • Standard init: The following is sufficient to capture the desired name-value pairs
triggerOutputs()['queries']['FirstName']
triggerOutputs()['queries']['LastName']
triggerOutputs()['queries']['FaveColor']
  • Error-trap init: The following is sufficient to capture the desired name-value pairs without throwing an error if any desired name-value pair is missing (error-free capture)
triggerOutputs()['queries']?['FirstName']
triggerOutputs()['queries']?['LastName']
triggerOutputs()['queries']?['FaveColor']
  • Error-trap init with defaults: The following is sufficient to error-trap init the desired name-value pairs, as well as provide a default value for any missing values
coalesce(triggerOutputs()['queries']?['FirstName']  , 'Puomer'  )
coalesce(triggerOutputs()['queries']?['LastName']   , 'Puimpson' )
coalesce(triggerOutputs()['queries']?['FaveColor']  , 'Purple' )

Solution refactored

  • Consequently, the original solution can be refactored as follows
## BEFORE
@triggerOutputs()['queries']['SelectedData']

## AFTER
@{coalesce(triggerOutputs()['queries']?['SelectedData'] , '__blank__')}
  • This approach does what the typical use-case calls for, which is:
    • get the value if it exists,
    • otherwise provide a default value, and
    • don't crash the entire logicapp if the parameter was completely omitted
    • the @{} syntax can be used if you are editing workflow definition language directly, but not if you are entering it in the "expression dialog box"

See also

  • https://stackoverflow.com/a/51058306/42223
  • How to do a 'null' check in 'if' condition action of Azure Logic App
  • https://docs.microsoft.com/en-us/azure/logic-apps/workflow-definition-language-functions-reference#coalesce
like image 97
dreftymac Avatar answered Oct 27 '22 02:10

dreftymac


First, you need to add your query param to the existing ones, e.g.

https://xyz.logic.azure.com:443/workflows/id/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=code&SelectedData="%7BsiteURL%3AXYZ.sharepoint.com%2Fsites%2FXYZDev%7D"

https://xyz.logic.azure.com:443/workflows/id/triggers/manual/paths/invoke
  ?api-version=2016-10-01
  &sp=%2Ftriggers%2Fmanual%2Frun
  &sv=1.0
  &sig=code
  &SelectedData="%7BsiteURL%3AXYZ.sharepoint.com%2Fsites%2FXYZDev%7D"

Then, you should be able to get them in your Logic App using

@triggerOutputs()['queries']['SelectedData']

As you can see, there is no need to add a schema to the Http Trigger to get a query parameter

like image 36
Paco de la Cruz Avatar answered Oct 27 '22 02:10

Paco de la Cruz