Public/MessageLayoutBlocks/New-SlackImageBlock.ps1

function New-SlackImageBlock {
    <#
    .SYNOPSIS
        Returns a Slack Image Block.
    .DESCRIPTION
        This function returns a Slack Image Block as a PSCustom Object ready to ConvertTo-Json and send to Slack.
    .PARAMETER image_url
        The URL of the image to be displayed.
    .PARAMETER alt_text
        A plain-text summary of the image. This should not contain any markup.
    .PARAMETER title
        An optional title for the image in the form of a plain_text Text Object.
    .PARAMETER block_id
        Specifies the block_id of the Slack Block for reference by the Slack APIs.
    .LINK
        https://api.slack.com/reference/messaging/blocks#image
    .EXAMPLE
        New-SlackImageBlock -image_url "http://placekitten.com/500/500" -alt_text "Meow" -title "Cat"
    #>

    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [ValidateLength(1, 3000)]
        [string]
        $image_url,
    
        [Parameter(Mandatory)]
        [ValidateLength(1, 2000)]
        [string]
        $alt_text,
        
        [ValidateLength(1, 2000)]
        [string]
        $title,
        
        [ValidateLength(1, 255)]
        [string]
        $block_id
    )

    $SlackImageBlock = [pscustomobject]@{
        type      = "image"
        image_url = $image_url
        alt_text  = $alt_text
    }

    if ($title) {
        $SlackImageBlock | Add-Member -NotePropertyName "title" -NotePropertyValue (New-SlackTextObject -type plain_text -text $title)
    }
    if ($block_id) {
        $SlackImageBlock | Add-Member -NotePropertyName "block_id" -NotePropertyValue $block_id
    }

    return $SlackImageBlock
}