Trigger Power Automate Flow using JavaScript – Bi-Directional

Hi All, 

This blog will be a continuation of my previous blog –  Trigger Power Automate Flow using JavaScript – Uni Directional

Now, feedback is essential when sending a request to determine whether it was successfully performed or failed somewhere. 

You can accomplish this by forwarding a response back from where the flow was invoked. 

I’ll use the same situation as in my previous blog, where I send a notification by greeting a person’s name if exists, or else I will greet a friend. 

Check out my previous blog to learn how to build your Flow and JavaScript. 


Steps to pass the response back within Flow 

Step 1: Add a response that will be sent back from where the Flow was invoked. 

Quick Tip: I am checking if ‘Name’ is present in my dynamic content. If yes, then greet the person else greet a Friend 

Formula: if(contains(triggerBody()?[‘DynamicData’], ‘Name’), triggerBody()?[‘DynamicData’][‘Name’], ‘Friend’) 


Steps to add into the JavaScript

Step 1: Initially we created JS to trigger the flow, now we will add the code snippet to accept the response from Flow.

Add the following Code:

var TriggerFlow = 

{ 

    Main: () => 

    { 

        var formContext = executionContext.getFormContext(); 

        //Strict Defined Parameters 

        var RecordID = formContext.data.entity.getId().replace("{", "").replace("}", ""); 

        var EntityName = formContext.data.entity.getEntityName(); 

        //Dynamic Parameter - Sample Data 

        var DynamicValues = {Name: "Ethan", Operation: "One Way Power Automate trigger"}; 

        //Find Plural Logical Name of the Entity and Call Flow 

        Xrm.Utility.getEntityMetadata(EntityName, "").then( 

            function (result) 

            { 

                TriggerFlow.CallFlow({logicalEntityName: result.EntitySetName, CurrentRecord: RecordID, DynamicData: DynamicValues}); 

            }, 

            function (error) 

            { 

                console.log(error); 

            } 

        ); 

    }, 

    CallFlow: ({logicalEntityName, CurrentRecord, DynamicData}) => 

    { 

        var flowUrl = "https://prod-133.westus.logic.azure.com:443/workflows/796d8796a139409e844e8f1001493567/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=XtYrETcQW07SX5EIuxtQDv7lQ8mPNyDpDZ9O7tGmqc8"; 

        var inputdata = JSON.stringify({ 

            "EntityName": logicalEntityName, 

            "RecordID": CurrentRecord, 

            "DynamicData": DynamicData 

        }); 

        var req = new XMLHttpRequest(); 

        req.open("POST", flowUrl, true); 

        req.setRequestHeader('Content-Type', 'application/json'); 

        req.send(inputdata); 

        ////Response 

        req.onreadystatechange = function () { 

            if (this.readyState === 4) { 

                req.onreadystatechange = null; 

                if (this.status === 200) 

                { 

                    var result = this.response; 

                    alert("" + result); 

                } 

                else if(this.status === 400) 

                { 

                    alert(this.statusText); 

                    var result = this.response; 

                    alert("Error" + result); 

                } 

            } 

        };   

    } 

} 

Step 2: Trigger the JS and watch the output I get as Alert (I have used the console page to trigger my JS for example purposes)

Hope this helps in achieving a response from the Power Automate Flow!


Share Story :

SEARCH BLOGS :

FOLLOW CLOUDFRONTS BLOG :


Secured By miniOrange