Microsoft Power Automate - Post AdaptiveCard

Octopus.Script exported 2024-11-13 by Zunair belongs to ‘Microsoft Power Automate’ category.

Posts a message to Microsoft Teams using Microsoft Power Automate webhook.

Parameters

When steps based on the template are included in a project’s deployment process, the parameters below can be set.

Webhook Url

PowerAutomatePostAdaptiveCard.HookUrl =

The specific URL created by Microsoft Power Automate using ‘When a Teams webhook request is received’ flow template. Copy and paste the full HTTP URL from Microsoft Power Automate.

Message title

PowerAutomatePostAdaptiveCard.Title = #{Octopus.Project.Name} #{Octopus.Release.Number} deployed to #{Octopus.Environment.Name}#{if Octopus.Deployment.Tenant.Id} for #{Octopus.Deployment.Tenant.Name}#{/if}

The title of the message that will be posted to your Microsoft Teams channel.

Message body

PowerAutomatePostAdaptiveCard.Body = For more information, please see [deployment details](#{if Octopus.Web.ServerUri}#{Octopus.Web.ServerUri}#{else}#{Octopus.Web.BaseUrl}#{/if}#{Octopus.Web.DeploymentLink})!

The message body of post being added to your Microsoft Teams channel.

Title Color

PowerAutomatePostAdaptiveCard.TitleColor = default

The color to use for the title of the adaptive card.

Timeout in seconds

PowerAutomatePostAdaptiveCard.Timeout = 60

The maximum timeout in seconds for each request.

Retry posting message

PowerAutomatePostAdaptiveCard.RetryPosting = False

Should retries be made? If this option is enabled, the step will attempt to retry the posting of message to teams up to the set retry count. Default: False.

Retry Count

PowerAutomatePostAdaptiveCard.RetryCount = 1

The maximum number of times to retry the post before allowing failure. Default 1

Retry delay in milliseconds

PowerAutomatePostAdaptiveCard.RetryDelay = 100

The amount of time in milliseconds to wait between retries. Default 100

Body Color

PowerAutomatePostAdaptiveCard.BodyColor = default

The color to use for the body of the adaptive card.

Button Title

PowerAutomatePostAdaptiveCard.ButtonTitle = Adaptive Card Designer

The button title of post being added to your Microsoft Teams channel.

Button url

PowerAutomatePostAdaptiveCard.ButtonUrl = https://adaptivecards.io/designer/

The button url of post being added to your Microsoft Teams channel.

Script body

Steps based on this template will execute the following PowerShell script.

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

# Helper functions
function Retry-Command {
    [CmdletBinding()]
    Param(
        [Parameter(Position=0, Mandatory=$true)]
        [scriptblock]$ScriptBlock,
 
        [Parameter(Position=1, Mandatory=$false)]
        [int]$Maximum = 5,

        [Parameter(Position=2, Mandatory=$false)]
        [int]$Delay = 100
    )

    Begin {
        $count = 0
    }

    Process {
    	$ex=$null
        do {
            $count++
            
            try {
                Write-Verbose "Attempt $count of $Maximum"
                $ScriptBlock.Invoke()
                return
            } catch {
                $ex = $_
                Write-Warning "Error occurred executing command (on attempt $count of $Maximum): $($ex.Exception.Message)"
                Start-Sleep -Milliseconds $Delay
            }
        } while ($count -lt $Maximum)

        throw "Execution failed (after $count attempts): $($ex.Exception.Message)"
    }
}
# End Helper functions

[int]$timeoutSec = $null
[int]$maximum = 1
[int]$delay = 100

if(-not [int]::TryParse($OctopusParameters['Timeout'], [ref]$timeoutSec)) { $timeoutSec = 60 }

if ($OctopusParameters["AutomatePostMessage.RetryPosting"] -eq $True) {
	if(-not [int]::TryParse($OctopusParameters['RetryCount'], [ref]$maximum)) { $maximum = 1 }
	if(-not [int]::TryParse($OctopusParameters['RetryDelay'], [ref]$delay)) { $delay = 100 }
	
    Write-Verbose "Setting maximum retries to $maximum using a $delay ms delay"
}

# Create the payload for Power Automate
$payload = @{
    type        = "message"  # Fixed value for message type
    attachments = @(
        @{
            contentType = "application/vnd.microsoft.card.adaptive"
            content = @{
                type = "AdaptiveCard"
                body = @(
                    @{
                        type = "TextBlock"
                        text = $OctopusParameters['Title']
                        weight = "bolder"
                        size = "medium"
                        color= $OctopusParameters['TitleColor']
                    },
                    @{
                        type = "TextBlock"
                        text = $OctopusParameters['Body']
                        wrap = $true
                        color= $OctopusParameters['BodyColor']
                    }
                )
                actions = @(
                    @{
                        type  = "Action.OpenUrl"
                        title = $OctopusParameters['ButtonTitle']
                        url   = $OctopusParameters['ButtonUrl']
                    }
                )
                "`$schema" = "http://adaptivecards.io/schemas/adaptive-card.json"
                version = "1.0"
            }
        }
    )
}

Retry-Command -Maximum $maximum -Delay $delay -ScriptBlock {
    #Write-Output ($payload | ConvertTo-Json -Depth 6)
  
    # Prepare parameters for the POST request
    $invokeParameters = @{
        Method      = "POST"
        Uri         = $OctopusParameters['HookUrl']
        Body        = ($payload | ConvertTo-Json -Depth 6 -Compress)
        ContentType = "application/json; charset=utf-8"
        TimeoutSec  = $timeoutSec
    }

    # Check for UseBasicParsing (needed for some environments)
    if ((Get-Command Invoke-RestMethod).Parameters.ContainsKey("UseBasicParsing")) {
        $invokeParameters.Add("UseBasicParsing", $true)
    }

    # Send the request to the Power Automate webhook
    $Response = Invoke-RestMethod @invokeParameters
    Write-Verbose "Response: $Response"
}

Provided under the Apache License version 2.0.

Report an issue

To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.

{
  "Id": "707e6dae-0d6f-4121-ab8d-6961039c4162",
  "Name": "Microsoft Power Automate - Post AdaptiveCard",
  "Description": "Posts a message to Microsoft Teams using Microsoft Power Automate webhook.",
  "Version": 1,
  "ExportedAt": "2024-11-13T22:40:25.875Z",
  "ActionType": "Octopus.Script",
  "Author": "Zunair",
  "Packages": [],
  "Parameters": [
    {
      "Id": "5d460a15-4052-44f7-85a2-f75cdf77da03",
      "Name": "PowerAutomatePostAdaptiveCard.HookUrl",
      "Label": "Webhook Url",
      "HelpText": "The specific URL created by Microsoft Power Automate using 'When a Teams webhook request is received' flow template. Copy and paste the full HTTP URL from Microsoft Power Automate.",
      "DefaultValue": "",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "53b1de0d-261e-464f-91e1-b7307fd5d1a2",
      "Name": "PowerAutomatePostAdaptiveCard.Title",
      "Label": "Message title",
      "HelpText": "The title of the message that will be posted to your Microsoft Teams channel.",
      "DefaultValue": "#{Octopus.Project.Name} #{Octopus.Release.Number} deployed to #{Octopus.Environment.Name}#{if Octopus.Deployment.Tenant.Id} for #{Octopus.Deployment.Tenant.Name}#{/if}",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "14c34ec8-5e44-40c6-bf93-7d4920a78b80",
      "Name": "PowerAutomatePostAdaptiveCard.Body",
      "Label": "Message body",
      "HelpText": "The message body of post being added to your Microsoft Teams channel.",
      "DefaultValue": "For more information, please see [deployment details](#{if Octopus.Web.ServerUri}#{Octopus.Web.ServerUri}#{else}#{Octopus.Web.BaseUrl}#{/if}#{Octopus.Web.DeploymentLink})!",
      "DisplaySettings": {
        "Octopus.ControlType": "MultiLineText"
      }
    },
    {
      "Id": "60d65627-fa61-4203-becf-ae316488a774",
      "Name": "PowerAutomatePostAdaptiveCard.TitleColor",
      "Label": "Title Color",
      "HelpText": "The color to use for the title of the adaptive card.",
      "DefaultValue": "default",
      "DisplaySettings": {
        "Octopus.ControlType": "Select",
        "Octopus.SelectOptions": "default|Default\ndark|Dark\nlight|Light\naccent|Accent\ngood|Good\nwarning|Warning\nattention|Attention"
      }
    },
    {
      "Id": "1491e7d2-2677-4119-a159-09715173af25",
      "Name": "PowerAutomatePostAdaptiveCard.Timeout",
      "Label": "Timeout in seconds",
      "HelpText": "The maximum timeout in seconds for each request.",
      "DefaultValue": "60",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "0c5e5a4a-35c2-48f7-b0e3-6e2e2b14b383",
      "Name": "PowerAutomatePostAdaptiveCard.RetryPosting",
      "Label": "Retry posting message",
      "HelpText": "Should retries be made? If this option is enabled, the step will attempt to retry the posting of message to teams up to the set retry count. Default: `False`.",
      "DefaultValue": "False",
      "DisplaySettings": {
        "Octopus.ControlType": "Checkbox"
      }
    },
    {
      "Id": "b1d2acda-5e82-42a9-bd05-6cc4827f5974",
      "Name": "PowerAutomatePostAdaptiveCard.RetryCount",
      "Label": "Retry Count",
      "HelpText": "The maximum number of times to retry the post before allowing failure. Default 1",
      "DefaultValue": "1",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "bc9438f7-3c74-4f2e-a5a5-4cb4c38767d9",
      "Name": "PowerAutomatePostAdaptiveCard.RetryDelay",
      "Label": "Retry delay in milliseconds",
      "HelpText": "The amount of time in milliseconds to wait between retries. Default 100",
      "DefaultValue": "100",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "e1606576-d9af-489f-a343-916cc809c1c3",
      "Name": "PowerAutomatePostAdaptiveCard.BodyColor",
      "Label": "Body Color",
      "HelpText": "The color to use for the body of the adaptive card.",
      "DefaultValue": "default",
      "DisplaySettings": {
        "Octopus.ControlType": "Select",
        "Octopus.SelectOptions": "default|Default\ndark|Dark\nlight|Light\naccent|Accent\ngood|Good\nwarning|Warning\nattention|Attention"
      }
    },
    {
      "Id": "6222bf83-af8b-40dd-a504-eb7ab0208981",
      "Name": "PowerAutomatePostAdaptiveCard.ButtonTitle",
      "Label": "Button Title",
      "HelpText": "The button title of post being added to your Microsoft Teams channel.",
      "DefaultValue": "Adaptive Card Designer",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    },
    {
      "Id": "a550bde0-e622-457c-b2b6-6a6089cf2fa8",
      "Name": "PowerAutomatePostAdaptiveCard.ButtonUrl",
      "Label": "Button url",
      "HelpText": "The button url of post being added to your Microsoft Teams channel.",
      "DefaultValue": "https://adaptivecards.io/designer/",
      "DisplaySettings": {
        "Octopus.ControlType": "SingleLineText"
      }
    }
  ],
  "Properties": {
    "Octopus.Action.Script.ScriptBody": "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12\n\n# Helper functions\nfunction Retry-Command {\n    [CmdletBinding()]\n    Param(\n        [Parameter(Position=0, Mandatory=$true)]\n        [scriptblock]$ScriptBlock,\n \n        [Parameter(Position=1, Mandatory=$false)]\n        [int]$Maximum = 5,\n\n        [Parameter(Position=2, Mandatory=$false)]\n        [int]$Delay = 100\n    )\n\n    Begin {\n        $count = 0\n    }\n\n    Process {\n    \t$ex=$null\n        do {\n            $count++\n            \n            try {\n                Write-Verbose \"Attempt $count of $Maximum\"\n                $ScriptBlock.Invoke()\n                return\n            } catch {\n                $ex = $_\n                Write-Warning \"Error occurred executing command (on attempt $count of $Maximum): $($ex.Exception.Message)\"\n                Start-Sleep -Milliseconds $Delay\n            }\n        } while ($count -lt $Maximum)\n\n        throw \"Execution failed (after $count attempts): $($ex.Exception.Message)\"\n    }\n}\n# End Helper functions\n\n[int]$timeoutSec = $null\n[int]$maximum = 1\n[int]$delay = 100\n\nif(-not [int]::TryParse($OctopusParameters['Timeout'], [ref]$timeoutSec)) { $timeoutSec = 60 }\n\nif ($OctopusParameters[\"AutomatePostMessage.RetryPosting\"] -eq $True) {\n\tif(-not [int]::TryParse($OctopusParameters['RetryCount'], [ref]$maximum)) { $maximum = 1 }\n\tif(-not [int]::TryParse($OctopusParameters['RetryDelay'], [ref]$delay)) { $delay = 100 }\n\t\n    Write-Verbose \"Setting maximum retries to $maximum using a $delay ms delay\"\n}\n\n# Create the payload for Power Automate\n$payload = @{\n    type        = \"message\"  # Fixed value for message type\n    attachments = @(\n        @{\n            contentType = \"application/vnd.microsoft.card.adaptive\"\n            content = @{\n                type = \"AdaptiveCard\"\n                body = @(\n                    @{\n                        type = \"TextBlock\"\n                        text = $OctopusParameters['Title']\n                        weight = \"bolder\"\n                        size = \"medium\"\n                        color= $OctopusParameters['TitleColor']\n                    },\n                    @{\n                        type = \"TextBlock\"\n                        text = $OctopusParameters['Body']\n                        wrap = $true\n                        color= $OctopusParameters['BodyColor']\n                    }\n                )\n                actions = @(\n                    @{\n                        type  = \"Action.OpenUrl\"\n                        title = $OctopusParameters['ButtonTitle']\n                        url   = $OctopusParameters['ButtonUrl']\n                    }\n                )\n                \"`$schema\" = \"http://adaptivecards.io/schemas/adaptive-card.json\"\n                version = \"1.0\"\n            }\n        }\n    )\n}\n\nRetry-Command -Maximum $maximum -Delay $delay -ScriptBlock {\n    #Write-Output ($payload | ConvertTo-Json -Depth 6)\n  \n    # Prepare parameters for the POST request\n    $invokeParameters = @{\n        Method      = \"POST\"\n        Uri         = $OctopusParameters['HookUrl']\n        Body        = ($payload | ConvertTo-Json -Depth 6 -Compress)\n        ContentType = \"application/json; charset=utf-8\"\n        TimeoutSec  = $timeoutSec\n    }\n\n    # Check for UseBasicParsing (needed for some environments)\n    if ((Get-Command Invoke-RestMethod).Parameters.ContainsKey(\"UseBasicParsing\")) {\n        $invokeParameters.Add(\"UseBasicParsing\", $true)\n    }\n\n    # Send the request to the Power Automate webhook\n    $Response = Invoke-RestMethod @invokeParameters\n    Write-Verbose \"Response: $Response\"\n}\n",
    "Octopus.Action.Script.Syntax": "PowerShell",
    "Octopus.Action.Script.ScriptSource": "Inline"
  },
  "Category": "Microsoft Power Automate",
  "HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/microsoft-power-automate-post-adaptivecard.json",
  "Website": "/step-templates/707e6dae-0d6f-4121-ab8d-6961039c4162",
  "Logo": "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",
  "$Meta": {
    "Type": "ActionTemplate"
  }
}

History

Page updated on Wednesday, November 13, 2024