functions/cards/New-EXRMessageCard.ps1

function New-EXRMessageCard { 
    param( 
        [Parameter(Position = 0, Mandatory = $false)] [psObject]$Facts,
        [Parameter(Position = 1, Mandatory = $false)] [String]$Title,
        [Parameter(Position = 2, Mandatory = $false)] [String]$Summary
    )  
    Process {
        $MessageCard = @{}
        $MessageCard.Add("@type", "MessageCard")
        $MessageCard.Add("@context", "http://schema.org/extensions")
        $MessageCard.Add("summary", $Summary)
        $MessageCard.Add("themeColor", "0078D7")
        $MessageCard.Add("title", $Title)
        $Sections = @()
        $SectionsHash = @{}
        if($Facts -ne $null){
            $factsCollection = @()
            foreach($fact in $Facts){
                $factEntry = @{}
                $val =0
                $fact.PSObject.Properties | ForEach-Object{
                    if($val -eq 0){
                        $factEntry.Add("name",$_.Value)
                        $val = 1
                    }else{
                        $factEntry.Add("value",$_.Value)
                        $val = 0
                    }
                }
                $factsCollection += $factEntry
                
            }   
            $SectionsHash.Add("facts",$factsCollection)
        }
        $Sections += $SectionsHash 
        $MessageCard.Add("sections", $Sections)
        $convertedBody = ConvertTo-Json $MessageCard -Depth 9
        return $convertedBody
    }
}